diff --git a/config/overlays.mk b/config/overlays.mk index c6294bee4..608251608 100644 --- a/config/overlays.mk +++ b/config/overlays.mk @@ -48,7 +48,7 @@ ov_SC01_005_ELF := $(ov_SC01_005_OUT).elf ov_SC01_005_MAPFILE := $(ov_SC01_005_OUT).map ov_SC01_005_LD_SCRIPT := $(ov_SC01_005_OUT).ld ov_SC01_005_SPLAT_YAML := config/splat.ov_SC01_005.yaml -ov_SC01_005_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_005_jr_8012ACE0.o,tail2.data.o,ov_SC01_005_jr_801380E0.o,tail3.data.o,ov_SC01_005_jr_8013F350.o,tail4.data.o,ov_SC01_005_jr_8013FFD8.o,tail5.data.o,ov_SC01_005_jr_80140608.o,tail6.data.o,ov_SC01_005_jr_8015444C.o,tail7.data.o,ov_SC01_005_jr_80154C24.o,ov_SC01_005_jr_801588CC.o,tail8.data.o,ov_SC01_005_jr_80159C84.o,tail9.data.o,ov_SC01_005_jr_8015A3C8.o,tail10.data.o,ov_SC01_005_jr_8015AE2C.o,tail11.data.o,ov_SC01_005_jr_8015C32C.o,tail12.data.o,ov_SC01_005_jr_8016AB6C.o,tail13.data.o,ov_SC01_005_jr_801734BC.o,tail14.data.o,ov_SC01_005_jr_80178D40.o,tail15.data.o,ov_SC01_005_jr_8017A4AC.o,tail16.data.o,ov_SC01_005_jr_8017C340.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_005_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_005_jr_8012ACE0.o,tail2.data.o,ov_SC01_005_jr_801380E0.o,tail3.data.o,ov_SC01_005_jr_8013F350.o,tail4.data.o,ov_SC01_005_jr_8013FFD8.o,tail5.data.o,ov_SC01_005_jr_80140608.o,tail6.data.o,ov_SC01_005_jr_8015444C.o,tail7.data.o,ov_SC01_005_jr_80154C24.o,ov_SC01_005_jr_801588CC.o,tail8.data.o,ov_SC01_005_jr_80159C84.o,tail9.data.o,ov_SC01_005_jr_8015A3C8.o,tail10.data.o,ov_SC01_005_jr_8015AE2C.o,tail11.data.o,ov_SC01_005_jr_8015C32C.o,tail12.data.o,ov_SC01_005_jr_8016AB6C.o,tail13.data.o,ov_SC01_005_jr_801734BC.o,tail14.data.o,ov_SC01_005_jr_80178D40.o,tail15.data.o,ov_SC01_005_jr_8017A4AC.o,tail16.data.o,ov_SC01_005_jr_8017AE2C.o,ov_SC01_005_jr_8017C340.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_005/ov_SC01_005_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC01_005/ov_SC01_005_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_005/ov_SC01_005_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -75,7 +75,7 @@ ov_SC01_006_ELF := $(ov_SC01_006_OUT).elf ov_SC01_006_MAPFILE := $(ov_SC01_006_OUT).map ov_SC01_006_LD_SCRIPT := $(ov_SC01_006_OUT).ld ov_SC01_006_SPLAT_YAML := config/splat.ov_SC01_006.yaml -ov_SC01_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_006_jr_8012ACE0.o,tail2.data.o,ov_SC01_006_jr_801380E0.o,tail3.data.o,ov_SC01_006_jr_8013F350.o,tail4.data.o,ov_SC01_006_jr_8013FFD8.o,tail5.data.o,ov_SC01_006_jr_80140608.o,tail6.data.o,ov_SC01_006_jr_8015444C.o,tail7.data.o,ov_SC01_006_jr_80154C24.o,ov_SC01_006_jr_801588CC.o,tail8.data.o,ov_SC01_006_jr_80159C84.o,tail9.data.o,ov_SC01_006_jr_8015A3C8.o,tail10.data.o,ov_SC01_006_jr_8015AE2C.o,tail11.data.o,ov_SC01_006_jr_8015C32C.o,tail12.data.o,ov_SC01_006_jr_8016AB6C.o,tail13.data.o,ov_SC01_006_jr_801734BC.o,tail14.data.o,ov_SC01_006_jr_80178D40.o,tail15.data.o,ov_SC01_006_jr_8017A4AC.o,tail16.data.o,ov_SC01_006_jr_8017C340.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_006_jr_8012ACE0.o,tail2.data.o,ov_SC01_006_jr_801380E0.o,tail3.data.o,ov_SC01_006_jr_8013F350.o,tail4.data.o,ov_SC01_006_jr_8013FFD8.o,tail5.data.o,ov_SC01_006_jr_80140608.o,tail6.data.o,ov_SC01_006_jr_8015444C.o,tail7.data.o,ov_SC01_006_jr_80154C24.o,ov_SC01_006_jr_801588CC.o,tail8.data.o,ov_SC01_006_jr_80159C84.o,tail9.data.o,ov_SC01_006_jr_8015A3C8.o,tail10.data.o,ov_SC01_006_jr_8015AE2C.o,tail11.data.o,ov_SC01_006_jr_8015C32C.o,tail12.data.o,ov_SC01_006_jr_8016AB6C.o,tail13.data.o,ov_SC01_006_jr_801734BC.o,tail14.data.o,ov_SC01_006_jr_80178D40.o,tail15.data.o,ov_SC01_006_jr_8017A4AC.o,tail16.data.o,ov_SC01_006_jr_8017AE2C.o,ov_SC01_006_jr_8017C340.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_006/ov_SC01_006_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC01_006/ov_SC01_006_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_006/ov_SC01_006_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -102,7 +102,7 @@ ov_SC03_001_ELF := $(ov_SC03_001_OUT).elf ov_SC03_001_MAPFILE := $(ov_SC03_001_OUT).map ov_SC03_001_LD_SCRIPT := $(ov_SC03_001_OUT).ld ov_SC03_001_SPLAT_YAML := config/splat.ov_SC03_001.yaml -ov_SC03_001_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_001_jr_8012ACE0.o,tail2.data.o,ov_SC03_001_jr_801380E0.o,tail3.data.o,ov_SC03_001_jr_8013F350.o,tail4.data.o,ov_SC03_001_jr_8013FFD8.o,tail5.data.o,ov_SC03_001_jr_80140608.o,tail6.data.o,ov_SC03_001_jr_8015444C.o,tail7.data.o,ov_SC03_001_jr_80154C24.o,ov_SC03_001_jr_801588CC.o,tail8.data.o,ov_SC03_001_jr_80159C84.o,tail9.data.o,ov_SC03_001_jr_8015A3C8.o,tail10.data.o,ov_SC03_001_jr_8015AE2C.o,tail11.data.o,ov_SC03_001_jr_8015C32C.o,tail12.data.o,ov_SC03_001_jr_8016AB6C.o,tail13.data.o,ov_SC03_001_jr_801734BC.o,tail14.data.o,ov_SC03_001_jr_80178D40.o,tail15.data.o,ov_SC03_001_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_001_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_001_jr_8012ACE0.o,tail2.data.o,ov_SC03_001_jr_801380E0.o,tail3.data.o,ov_SC03_001_jr_8013F350.o,tail4.data.o,ov_SC03_001_jr_8013FFD8.o,tail5.data.o,ov_SC03_001_jr_80140608.o,tail6.data.o,ov_SC03_001_jr_8015444C.o,tail7.data.o,ov_SC03_001_jr_80154C24.o,ov_SC03_001_jr_801588CC.o,tail8.data.o,ov_SC03_001_jr_80159C84.o,tail9.data.o,ov_SC03_001_jr_8015A3C8.o,tail10.data.o,ov_SC03_001_jr_8015AE2C.o,tail11.data.o,ov_SC03_001_jr_8015C32C.o,tail12.data.o,ov_SC03_001_jr_8016AB6C.o,tail13.data.o,ov_SC03_001_jr_801734BC.o,tail14.data.o,ov_SC03_001_jr_80178D40.o,tail15.data.o,ov_SC03_001_jr_8017A4AC.o,tail16.data.o,ov_SC03_001_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_001/ov_SC03_001_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_001/ov_SC03_001_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_001/ov_SC03_001_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -129,7 +129,7 @@ ov_SC01_000_ELF := $(ov_SC01_000_OUT).elf ov_SC01_000_MAPFILE := $(ov_SC01_000_OUT).map ov_SC01_000_LD_SCRIPT := $(ov_SC01_000_OUT).ld ov_SC01_000_SPLAT_YAML := config/splat.ov_SC01_000.yaml -ov_SC01_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_000_jr_8012ACE0.o,tail2.data.o,ov_SC01_000_jr_801380E0.o,tail3.data.o,ov_SC01_000_jr_8013F350.o,tail4.data.o,ov_SC01_000_jr_8013FFD8.o,tail5.data.o,ov_SC01_000_jr_80140608.o,tail6.data.o,ov_SC01_000_jr_8015444C.o,tail7.data.o,ov_SC01_000_jr_80154C24.o,ov_SC01_000_jr_801588CC.o,tail8.data.o,ov_SC01_000_jr_80159C84.o,tail9.data.o,ov_SC01_000_jr_8015A3C8.o,tail10.data.o,ov_SC01_000_jr_8015AE2C.o,tail11.data.o,ov_SC01_000_jr_8015C32C.o,tail12.data.o,ov_SC01_000_jr_8016AB6C.o,tail13.data.o,ov_SC01_000_jr_801734BC.o,tail14.data.o,ov_SC01_000_jr_80178D40.o,tail15.data.o,ov_SC01_000_jr_8017A4AC.o,tail16.data.o,ov_SC01_000_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_000_jr_8012ACE0.o,tail2.data.o,ov_SC01_000_jr_801380E0.o,tail3.data.o,ov_SC01_000_jr_8013F350.o,tail4.data.o,ov_SC01_000_jr_8013FFD8.o,tail5.data.o,ov_SC01_000_jr_80140608.o,tail6.data.o,ov_SC01_000_jr_8015444C.o,tail7.data.o,ov_SC01_000_jr_80154C24.o,ov_SC01_000_jr_801588CC.o,tail8.data.o,ov_SC01_000_jr_80159C84.o,tail9.data.o,ov_SC01_000_jr_8015A3C8.o,tail10.data.o,ov_SC01_000_jr_8015AE2C.o,tail11.data.o,ov_SC01_000_jr_8015C32C.o,tail12.data.o,ov_SC01_000_jr_8016AB6C.o,tail13.data.o,ov_SC01_000_jr_801734BC.o,tail14.data.o,ov_SC01_000_jr_80178D40.o,tail15.data.o,ov_SC01_000_jr_8017A4AC.o,tail16.data.o,ov_SC01_000_jr_8017AE2C.o,ov_SC01_000_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_000/ov_SC01_000_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC01_000/ov_SC01_000_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_000/ov_SC01_000_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -156,7 +156,7 @@ ov_SC01_001_ELF := $(ov_SC01_001_OUT).elf ov_SC01_001_MAPFILE := $(ov_SC01_001_OUT).map ov_SC01_001_LD_SCRIPT := $(ov_SC01_001_OUT).ld ov_SC01_001_SPLAT_YAML := config/splat.ov_SC01_001.yaml -ov_SC01_001_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_001_jr_8012ACE0.o,tail2.data.o,ov_SC01_001_jr_801380E0.o,tail3.data.o,ov_SC01_001_jr_8013F350.o,tail4.data.o,ov_SC01_001_jr_8013FFD8.o,tail5.data.o,ov_SC01_001_jr_80140608.o,tail6.data.o,ov_SC01_001_jr_8015444C.o,tail7.data.o,ov_SC01_001_jr_80154C24.o,ov_SC01_001_jr_801588CC.o,tail8.data.o,ov_SC01_001_jr_80159C84.o,tail9.data.o,ov_SC01_001_jr_8015A3C8.o,tail10.data.o,ov_SC01_001_jr_8015AE2C.o,tail11.data.o,ov_SC01_001_jr_8015C32C.o,tail12.data.o,ov_SC01_001_jr_8016AB6C.o,tail13.data.o,ov_SC01_001_jr_801734BC.o,tail14.data.o,ov_SC01_001_jr_80178D40.o,tail15.data.o,ov_SC01_001_jr_8017A4AC.o,tail16.data.o,ov_SC01_001_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_001_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_001_jr_8012ACE0.o,tail2.data.o,ov_SC01_001_jr_801380E0.o,tail3.data.o,ov_SC01_001_jr_8013F350.o,tail4.data.o,ov_SC01_001_jr_8013FFD8.o,tail5.data.o,ov_SC01_001_jr_80140608.o,tail6.data.o,ov_SC01_001_jr_8015444C.o,tail7.data.o,ov_SC01_001_jr_80154C24.o,ov_SC01_001_jr_801588CC.o,tail8.data.o,ov_SC01_001_jr_80159C84.o,tail9.data.o,ov_SC01_001_jr_8015A3C8.o,tail10.data.o,ov_SC01_001_jr_8015AE2C.o,tail11.data.o,ov_SC01_001_jr_8015C32C.o,tail12.data.o,ov_SC01_001_jr_8016AB6C.o,tail13.data.o,ov_SC01_001_jr_801734BC.o,tail14.data.o,ov_SC01_001_jr_80178D40.o,tail15.data.o,ov_SC01_001_jr_8017A4AC.o,tail16.data.o,ov_SC01_001_jr_8017AE2C.o,ov_SC01_001_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_001/ov_SC01_001_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC01_001/ov_SC01_001_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_001/ov_SC01_001_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -183,7 +183,7 @@ ov_SC02_000_ELF := $(ov_SC02_000_OUT).elf ov_SC02_000_MAPFILE := $(ov_SC02_000_OUT).map ov_SC02_000_LD_SCRIPT := $(ov_SC02_000_OUT).ld ov_SC02_000_SPLAT_YAML := config/splat.ov_SC02_000.yaml -ov_SC02_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_000_jr_8012ACE0.o,tail2.data.o,ov_SC02_000_jr_801380E0.o,tail3.data.o,ov_SC02_000_jr_8013F350.o,tail4.data.o,ov_SC02_000_jr_8013FFD8.o,tail5.data.o,ov_SC02_000_jr_80140608.o,tail6.data.o,ov_SC02_000_jr_8015444C.o,tail7.data.o,ov_SC02_000_jr_80154C24.o,ov_SC02_000_jr_801588CC.o,tail8.data.o,ov_SC02_000_jr_80159C84.o,tail9.data.o,ov_SC02_000_jr_8015A3C8.o,tail10.data.o,ov_SC02_000_jr_8015AE2C.o,tail11.data.o,ov_SC02_000_jr_8015C32C.o,tail12.data.o,ov_SC02_000_jr_8016AB6C.o,tail13.data.o,ov_SC02_000_jr_801734BC.o,tail14.data.o,ov_SC02_000_jr_80178D40.o,tail15.data.o,ov_SC02_000_jr_8017A4AC.o,tail16.data.o,ov_SC02_000_jr_8017FCB0.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_000_jr_8012ACE0.o,tail2.data.o,ov_SC02_000_jr_801380E0.o,tail3.data.o,ov_SC02_000_jr_8013F350.o,tail4.data.o,ov_SC02_000_jr_8013FFD8.o,tail5.data.o,ov_SC02_000_jr_80140608.o,tail6.data.o,ov_SC02_000_jr_8015444C.o,tail7.data.o,ov_SC02_000_jr_80154C24.o,ov_SC02_000_jr_801588CC.o,tail8.data.o,ov_SC02_000_jr_80159C84.o,tail9.data.o,ov_SC02_000_jr_8015A3C8.o,tail10.data.o,ov_SC02_000_jr_8015AE2C.o,tail11.data.o,ov_SC02_000_jr_8015C32C.o,tail12.data.o,ov_SC02_000_jr_8016AB6C.o,tail13.data.o,ov_SC02_000_jr_801734BC.o,tail14.data.o,ov_SC02_000_jr_80178D40.o,tail15.data.o,ov_SC02_000_jr_8017A4AC.o,tail16.data.o,ov_SC02_000_jr_8017AE2C.o,tail17.data.o,ov_SC02_000_jr_8017FCB0.o,tail18.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_000/ov_SC02_000_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_000/ov_SC02_000_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_000/ov_SC02_000_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -210,7 +210,7 @@ ov_SC02_003_ELF := $(ov_SC02_003_OUT).elf ov_SC02_003_MAPFILE := $(ov_SC02_003_OUT).map ov_SC02_003_LD_SCRIPT := $(ov_SC02_003_OUT).ld ov_SC02_003_SPLAT_YAML := config/splat.ov_SC02_003.yaml -ov_SC02_003_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_003_jr_8012ACE0.o,tail2.data.o,ov_SC02_003_jr_801380E0.o,tail3.data.o,ov_SC02_003_jr_8013F350.o,tail4.data.o,ov_SC02_003_jr_8013FFD8.o,tail5.data.o,ov_SC02_003_jr_80140608.o,tail6.data.o,ov_SC02_003_jr_8015444C.o,tail7.data.o,ov_SC02_003_jr_80154C24.o,ov_SC02_003_jr_801588CC.o,tail8.data.o,ov_SC02_003_jr_80159C84.o,tail9.data.o,ov_SC02_003_jr_8015A3C8.o,tail10.data.o,ov_SC02_003_jr_8015AE2C.o,tail11.data.o,ov_SC02_003_jr_8015C32C.o,tail12.data.o,ov_SC02_003_jr_8016AB6C.o,tail13.data.o,ov_SC02_003_jr_801734BC.o,tail14.data.o,ov_SC02_003_jr_80178D40.o,tail15.data.o,ov_SC02_003_jr_8017A4AC.o,tail16.data.o,ov_SC02_003_jr_8017FCB0.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_003_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_003_jr_8012ACE0.o,tail2.data.o,ov_SC02_003_jr_801380E0.o,tail3.data.o,ov_SC02_003_jr_8013F350.o,tail4.data.o,ov_SC02_003_jr_8013FFD8.o,tail5.data.o,ov_SC02_003_jr_80140608.o,tail6.data.o,ov_SC02_003_jr_8015444C.o,tail7.data.o,ov_SC02_003_jr_80154C24.o,ov_SC02_003_jr_801588CC.o,tail8.data.o,ov_SC02_003_jr_80159C84.o,tail9.data.o,ov_SC02_003_jr_8015A3C8.o,tail10.data.o,ov_SC02_003_jr_8015AE2C.o,tail11.data.o,ov_SC02_003_jr_8015C32C.o,tail12.data.o,ov_SC02_003_jr_8016AB6C.o,tail13.data.o,ov_SC02_003_jr_801734BC.o,tail14.data.o,ov_SC02_003_jr_80178D40.o,tail15.data.o,ov_SC02_003_jr_8017A4AC.o,tail16.data.o,ov_SC02_003_jr_8017AE2C.o,tail17.data.o,ov_SC02_003_jr_8017FCB0.o,tail18.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_003/ov_SC02_003_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_003/ov_SC02_003_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_003/ov_SC02_003_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -237,7 +237,7 @@ ov_SC03_002_ELF := $(ov_SC03_002_OUT).elf ov_SC03_002_MAPFILE := $(ov_SC03_002_OUT).map ov_SC03_002_LD_SCRIPT := $(ov_SC03_002_OUT).ld ov_SC03_002_SPLAT_YAML := config/splat.ov_SC03_002.yaml -ov_SC03_002_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_002_jr_8012ACE0.o,tail2.data.o,ov_SC03_002_jr_801380E0.o,tail3.data.o,ov_SC03_002_jr_8013F350.o,tail4.data.o,ov_SC03_002_jr_8013FFD8.o,tail5.data.o,ov_SC03_002_jr_80140608.o,tail6.data.o,ov_SC03_002_jr_8015444C.o,tail7.data.o,ov_SC03_002_jr_80154C24.o,ov_SC03_002_jr_801588CC.o,tail8.data.o,ov_SC03_002_jr_80159C84.o,tail9.data.o,ov_SC03_002_jr_8015A3C8.o,tail10.data.o,ov_SC03_002_jr_8015AE2C.o,tail11.data.o,ov_SC03_002_jr_8015C32C.o,tail12.data.o,ov_SC03_002_jr_8016AB6C.o,tail13.data.o,ov_SC03_002_jr_801734BC.o,tail14.data.o,ov_SC03_002_jr_80178D40.o,tail15.data.o,ov_SC03_002_jr_8017A4AC.o,tail16.data.o,ov_SC03_002_jr_8017D604.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_002_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_002_jr_8012ACE0.o,tail2.data.o,ov_SC03_002_jr_801380E0.o,tail3.data.o,ov_SC03_002_jr_8013F350.o,tail4.data.o,ov_SC03_002_jr_8013FFD8.o,tail5.data.o,ov_SC03_002_jr_80140608.o,tail6.data.o,ov_SC03_002_jr_8015444C.o,tail7.data.o,ov_SC03_002_jr_80154C24.o,ov_SC03_002_jr_801588CC.o,tail8.data.o,ov_SC03_002_jr_80159C84.o,tail9.data.o,ov_SC03_002_jr_8015A3C8.o,tail10.data.o,ov_SC03_002_jr_8015AE2C.o,tail11.data.o,ov_SC03_002_jr_8015C32C.o,tail12.data.o,ov_SC03_002_jr_8016AB6C.o,tail13.data.o,ov_SC03_002_jr_801734BC.o,tail14.data.o,ov_SC03_002_jr_80178D40.o,tail15.data.o,ov_SC03_002_jr_8017A4AC.o,tail16.data.o,ov_SC03_002_jr_8017AE2C.o,ov_SC03_002_jr_8017D604.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_002/ov_SC03_002_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_002/ov_SC03_002_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_002/ov_SC03_002_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -264,7 +264,7 @@ ov_SC03_006_ELF := $(ov_SC03_006_OUT).elf ov_SC03_006_MAPFILE := $(ov_SC03_006_OUT).map ov_SC03_006_LD_SCRIPT := $(ov_SC03_006_OUT).ld ov_SC03_006_SPLAT_YAML := config/splat.ov_SC03_006.yaml -ov_SC03_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_006_jr_8012ACE0.o,tail2.data.o,ov_SC03_006_jr_801380E0.o,tail3.data.o,ov_SC03_006_jr_8013F350.o,tail4.data.o,ov_SC03_006_jr_8013FFD8.o,tail5.data.o,ov_SC03_006_jr_80140608.o,tail6.data.o,ov_SC03_006_jr_8015444C.o,tail7.data.o,ov_SC03_006_jr_80154C24.o,ov_SC03_006_jr_801588CC.o,tail8.data.o,ov_SC03_006_jr_80159C84.o,tail9.data.o,ov_SC03_006_jr_8015A3C8.o,tail10.data.o,ov_SC03_006_jr_8015AE2C.o,tail11.data.o,ov_SC03_006_jr_8015C32C.o,tail12.data.o,ov_SC03_006_jr_8016AB6C.o,tail13.data.o,ov_SC03_006_jr_801734BC.o,tail14.data.o,ov_SC03_006_jr_80178D40.o,tail15.data.o,ov_SC03_006_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_006_jr_8012ACE0.o,tail2.data.o,ov_SC03_006_jr_801380E0.o,tail3.data.o,ov_SC03_006_jr_8013F350.o,tail4.data.o,ov_SC03_006_jr_8013FFD8.o,tail5.data.o,ov_SC03_006_jr_80140608.o,tail6.data.o,ov_SC03_006_jr_8015444C.o,tail7.data.o,ov_SC03_006_jr_80154C24.o,ov_SC03_006_jr_801588CC.o,tail8.data.o,ov_SC03_006_jr_80159C84.o,tail9.data.o,ov_SC03_006_jr_8015A3C8.o,tail10.data.o,ov_SC03_006_jr_8015AE2C.o,tail11.data.o,ov_SC03_006_jr_8015C32C.o,tail12.data.o,ov_SC03_006_jr_8016AB6C.o,tail13.data.o,ov_SC03_006_jr_801734BC.o,tail14.data.o,ov_SC03_006_jr_80178D40.o,tail15.data.o,ov_SC03_006_jr_8017A4AC.o,tail16.data.o,ov_SC03_006_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_006/ov_SC03_006_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_006/ov_SC03_006_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_006/ov_SC03_006_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -291,7 +291,7 @@ ov_SC04_000_ELF := $(ov_SC04_000_OUT).elf ov_SC04_000_MAPFILE := $(ov_SC04_000_OUT).map ov_SC04_000_LD_SCRIPT := $(ov_SC04_000_OUT).ld ov_SC04_000_SPLAT_YAML := config/splat.ov_SC04_000.yaml -ov_SC04_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_000_jr_8012ACE0.o,tail2.data.o,ov_SC04_000_jr_801380E0.o,tail3.data.o,ov_SC04_000_jr_8013F350.o,tail4.data.o,ov_SC04_000_jr_8013FFD8.o,tail5.data.o,ov_SC04_000_jr_80140608.o,tail6.data.o,ov_SC04_000_jr_8015444C.o,tail7.data.o,ov_SC04_000_jr_80154C24.o,ov_SC04_000_jr_801588CC.o,tail8.data.o,ov_SC04_000_jr_80159C84.o,tail9.data.o,ov_SC04_000_jr_8015A3C8.o,tail10.data.o,ov_SC04_000_jr_8015AE2C.o,tail11.data.o,ov_SC04_000_jr_8015C32C.o,tail12.data.o,ov_SC04_000_jr_8016AB6C.o,tail13.data.o,ov_SC04_000_jr_801734BC.o,tail14.data.o,ov_SC04_000_jr_80178D40.o,tail15.data.o,ov_SC04_000_jr_8017A4AC.o,tail16.data.o,ov_SC04_000_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_000_jr_8012ACE0.o,tail2.data.o,ov_SC04_000_jr_801380E0.o,tail3.data.o,ov_SC04_000_jr_8013F350.o,tail4.data.o,ov_SC04_000_jr_8013FFD8.o,tail5.data.o,ov_SC04_000_jr_80140608.o,tail6.data.o,ov_SC04_000_jr_8015444C.o,tail7.data.o,ov_SC04_000_jr_80154C24.o,ov_SC04_000_jr_801588CC.o,tail8.data.o,ov_SC04_000_jr_80159C84.o,tail9.data.o,ov_SC04_000_jr_8015A3C8.o,tail10.data.o,ov_SC04_000_jr_8015AE2C.o,tail11.data.o,ov_SC04_000_jr_8015C32C.o,tail12.data.o,ov_SC04_000_jr_8016AB6C.o,tail13.data.o,ov_SC04_000_jr_801734BC.o,tail14.data.o,ov_SC04_000_jr_80178D40.o,tail15.data.o,ov_SC04_000_jr_8017A4AC.o,tail16.data.o,ov_SC04_000_jr_8017AE2C.o,ov_SC04_000_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_000/ov_SC04_000_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_000/ov_SC04_000_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_000/ov_SC04_000_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -318,7 +318,7 @@ ov_SC04_018_ELF := $(ov_SC04_018_OUT).elf ov_SC04_018_MAPFILE := $(ov_SC04_018_OUT).map ov_SC04_018_LD_SCRIPT := $(ov_SC04_018_OUT).ld ov_SC04_018_SPLAT_YAML := config/splat.ov_SC04_018.yaml -ov_SC04_018_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_018_jr_8012ACE0.o,tail2.data.o,ov_SC04_018_jr_801380E0.o,tail3.data.o,ov_SC04_018_jr_8013F350.o,tail4.data.o,ov_SC04_018_jr_8013FFD8.o,tail5.data.o,ov_SC04_018_jr_80140608.o,tail6.data.o,ov_SC04_018_jr_8015444C.o,tail7.data.o,ov_SC04_018_jr_80154C24.o,ov_SC04_018_jr_801588CC.o,tail8.data.o,ov_SC04_018_jr_80159C84.o,tail9.data.o,ov_SC04_018_jr_8015A3C8.o,tail10.data.o,ov_SC04_018_jr_8015AE2C.o,tail11.data.o,ov_SC04_018_jr_8015C32C.o,tail12.data.o,ov_SC04_018_jr_8016AB6C.o,tail13.data.o,ov_SC04_018_jr_801734BC.o,tail14.data.o,ov_SC04_018_jr_80178D40.o,tail15.data.o,ov_SC04_018_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_018_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_018_jr_8012ACE0.o,tail2.data.o,ov_SC04_018_jr_801380E0.o,tail3.data.o,ov_SC04_018_jr_8013F350.o,tail4.data.o,ov_SC04_018_jr_8013FFD8.o,tail5.data.o,ov_SC04_018_jr_80140608.o,tail6.data.o,ov_SC04_018_jr_8015444C.o,tail7.data.o,ov_SC04_018_jr_80154C24.o,ov_SC04_018_jr_801588CC.o,tail8.data.o,ov_SC04_018_jr_80159C84.o,tail9.data.o,ov_SC04_018_jr_8015A3C8.o,tail10.data.o,ov_SC04_018_jr_8015AE2C.o,tail11.data.o,ov_SC04_018_jr_8015C32C.o,tail12.data.o,ov_SC04_018_jr_8016AB6C.o,tail13.data.o,ov_SC04_018_jr_801734BC.o,tail14.data.o,ov_SC04_018_jr_80178D40.o,tail15.data.o,ov_SC04_018_jr_8017A4AC.o,tail16.data.o,ov_SC04_018_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_018/ov_SC04_018_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_018/ov_SC04_018_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -345,7 +345,7 @@ ov_SC04_019_ELF := $(ov_SC04_019_OUT).elf ov_SC04_019_MAPFILE := $(ov_SC04_019_OUT).map ov_SC04_019_LD_SCRIPT := $(ov_SC04_019_OUT).ld ov_SC04_019_SPLAT_YAML := config/splat.ov_SC04_019.yaml -ov_SC04_019_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_019_jr_8012ACE0.o,tail2.data.o,ov_SC04_019_jr_801380E0.o,tail3.data.o,ov_SC04_019_jr_8013F350.o,tail4.data.o,ov_SC04_019_jr_8013FFD8.o,tail5.data.o,ov_SC04_019_jr_80140608.o,tail6.data.o,ov_SC04_019_jr_8015444C.o,tail7.data.o,ov_SC04_019_jr_80154C24.o,ov_SC04_019_jr_801588CC.o,tail8.data.o,ov_SC04_019_jr_80159C84.o,tail9.data.o,ov_SC04_019_jr_8015A3C8.o,tail10.data.o,ov_SC04_019_jr_8015AE2C.o,tail11.data.o,ov_SC04_019_jr_8015C32C.o,tail12.data.o,ov_SC04_019_jr_8016AB6C.o,tail13.data.o,ov_SC04_019_jr_801734BC.o,tail14.data.o,ov_SC04_019_jr_80178D40.o,tail15.data.o,ov_SC04_019_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_019_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_019_jr_8012ACE0.o,tail2.data.o,ov_SC04_019_jr_801380E0.o,tail3.data.o,ov_SC04_019_jr_8013F350.o,tail4.data.o,ov_SC04_019_jr_8013FFD8.o,tail5.data.o,ov_SC04_019_jr_80140608.o,tail6.data.o,ov_SC04_019_jr_8015444C.o,tail7.data.o,ov_SC04_019_jr_80154C24.o,ov_SC04_019_jr_801588CC.o,tail8.data.o,ov_SC04_019_jr_80159C84.o,tail9.data.o,ov_SC04_019_jr_8015A3C8.o,tail10.data.o,ov_SC04_019_jr_8015AE2C.o,tail11.data.o,ov_SC04_019_jr_8015C32C.o,tail12.data.o,ov_SC04_019_jr_8016AB6C.o,tail13.data.o,ov_SC04_019_jr_801734BC.o,tail14.data.o,ov_SC04_019_jr_80178D40.o,tail15.data.o,ov_SC04_019_jr_8017A4AC.o,tail16.data.o,ov_SC04_019_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_019/ov_SC04_019_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_019/ov_SC04_019_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_019/ov_SC04_019_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -372,7 +372,7 @@ ov_SC05_000_ELF := $(ov_SC05_000_OUT).elf ov_SC05_000_MAPFILE := $(ov_SC05_000_OUT).map ov_SC05_000_LD_SCRIPT := $(ov_SC05_000_OUT).ld ov_SC05_000_SPLAT_YAML := config/splat.ov_SC05_000.yaml -ov_SC05_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_000_jr_8012ACE0.o,tail2.data.o,ov_SC05_000_jr_801380E0.o,tail3.data.o,ov_SC05_000_jr_8013F350.o,tail4.data.o,ov_SC05_000_jr_8013FFD8.o,tail5.data.o,ov_SC05_000_jr_80140608.o,tail6.data.o,ov_SC05_000_jr_8015444C.o,tail7.data.o,ov_SC05_000_jr_80154C24.o,ov_SC05_000_jr_801588CC.o,tail8.data.o,ov_SC05_000_jr_80159C84.o,tail9.data.o,ov_SC05_000_jr_8015A3C8.o,tail10.data.o,ov_SC05_000_jr_8015AE2C.o,tail11.data.o,ov_SC05_000_jr_8015C32C.o,tail12.data.o,ov_SC05_000_jr_8016AB6C.o,tail13.data.o,ov_SC05_000_jr_801734BC.o,tail14.data.o,ov_SC05_000_jr_80178D40.o,tail15.data.o,ov_SC05_000_jr_8017A4AC.o,tail16.data.o,ov_SC05_000_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_000_jr_8012ACE0.o,tail2.data.o,ov_SC05_000_jr_801380E0.o,tail3.data.o,ov_SC05_000_jr_8013F350.o,tail4.data.o,ov_SC05_000_jr_8013FFD8.o,tail5.data.o,ov_SC05_000_jr_80140608.o,tail6.data.o,ov_SC05_000_jr_8015444C.o,tail7.data.o,ov_SC05_000_jr_80154C24.o,ov_SC05_000_jr_801588CC.o,tail8.data.o,ov_SC05_000_jr_80159C84.o,tail9.data.o,ov_SC05_000_jr_8015A3C8.o,tail10.data.o,ov_SC05_000_jr_8015AE2C.o,tail11.data.o,ov_SC05_000_jr_8015C32C.o,tail12.data.o,ov_SC05_000_jr_8016AB6C.o,tail13.data.o,ov_SC05_000_jr_801734BC.o,tail14.data.o,ov_SC05_000_jr_80178D40.o,tail15.data.o,ov_SC05_000_jr_8017A4AC.o,tail16.data.o,ov_SC05_000_jr_8017AE2C.o,ov_SC05_000_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_000/ov_SC05_000_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_000/ov_SC05_000_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_000/ov_SC05_000_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -399,7 +399,7 @@ ov_SC06_000_ELF := $(ov_SC06_000_OUT).elf ov_SC06_000_MAPFILE := $(ov_SC06_000_OUT).map ov_SC06_000_LD_SCRIPT := $(ov_SC06_000_OUT).ld ov_SC06_000_SPLAT_YAML := config/splat.ov_SC06_000.yaml -ov_SC06_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_000_jr_8012ACE0.o,tail2.data.o,ov_SC06_000_jr_801380E0.o,tail3.data.o,ov_SC06_000_jr_8013F350.o,tail4.data.o,ov_SC06_000_jr_80140608.o,tail5.data.o,ov_SC06_000_jr_8015444C.o,tail6.data.o,ov_SC06_000_jr_80154C24.o,ov_SC06_000_jr_801588CC.o,tail7.data.o,ov_SC06_000_jr_80159C84.o,tail8.data.o,ov_SC06_000_jr_8015A3C8.o,tail9.data.o,ov_SC06_000_jr_8015AE2C.o,tail10.data.o,ov_SC06_000_jr_8015C32C.o,tail11.data.o,ov_SC06_000_jr_8016AB6C.o,tail12.data.o,ov_SC06_000_jr_801734BC.o,tail13.data.o,ov_SC06_000_jr_80178D40.o,tail14.data.o,ov_SC06_000_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_000_jr_8012ACE0.o,tail2.data.o,ov_SC06_000_jr_801380E0.o,tail3.data.o,ov_SC06_000_jr_8013F350.o,tail4.data.o,ov_SC06_000_jr_80140608.o,tail5.data.o,ov_SC06_000_jr_8015444C.o,tail6.data.o,ov_SC06_000_jr_80154C24.o,ov_SC06_000_jr_801588CC.o,tail7.data.o,ov_SC06_000_jr_80159C84.o,tail8.data.o,ov_SC06_000_jr_8015A3C8.o,tail9.data.o,ov_SC06_000_jr_8015AE2C.o,tail10.data.o,ov_SC06_000_jr_8015C32C.o,tail11.data.o,ov_SC06_000_jr_8016AB6C.o,tail12.data.o,ov_SC06_000_jr_801734BC.o,tail13.data.o,ov_SC06_000_jr_80178D40.o,tail14.data.o,ov_SC06_000_jr_8017A4AC.o,tail15.data.o,ov_SC06_000_jr_8017AE2C.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_000/ov_SC06_000_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_000/ov_SC06_000_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_000/ov_SC06_000_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -426,7 +426,7 @@ ov_SC07_000_ELF := $(ov_SC07_000_OUT).elf ov_SC07_000_MAPFILE := $(ov_SC07_000_OUT).map ov_SC07_000_LD_SCRIPT := $(ov_SC07_000_OUT).ld ov_SC07_000_SPLAT_YAML := config/splat.ov_SC07_000.yaml -ov_SC07_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_000_jr_8012ACE0.o,tail2.data.o,ov_SC07_000_jr_801380E0.o,tail3.data.o,ov_SC07_000_jr_8013F350.o,tail4.data.o,ov_SC07_000_jr_8013FFD8.o,tail5.data.o,ov_SC07_000_jr_80140608.o,tail6.data.o,ov_SC07_000_jr_8015444C.o,tail7.data.o,ov_SC07_000_jr_80154C24.o,ov_SC07_000_jr_801588CC.o,tail8.data.o,ov_SC07_000_jr_80159C84.o,tail9.data.o,ov_SC07_000_jr_8015A3C8.o,tail10.data.o,ov_SC07_000_jr_8015AE2C.o,tail11.data.o,ov_SC07_000_jr_8015C32C.o,tail12.data.o,ov_SC07_000_jr_8016AB6C.o,tail13.data.o,ov_SC07_000_jr_801734BC.o,tail14.data.o,ov_SC07_000_jr_80178D40.o,tail15.data.o,ov_SC07_000_jr_8017A4AC.o,tail16.data.o,ov_SC07_000_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC07_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_000_jr_8012ACE0.o,tail2.data.o,ov_SC07_000_jr_801380E0.o,tail3.data.o,ov_SC07_000_jr_8013F350.o,tail4.data.o,ov_SC07_000_jr_8013FFD8.o,tail5.data.o,ov_SC07_000_jr_80140608.o,tail6.data.o,ov_SC07_000_jr_8015444C.o,tail7.data.o,ov_SC07_000_jr_80154C24.o,ov_SC07_000_jr_801588CC.o,tail8.data.o,ov_SC07_000_jr_80159C84.o,tail9.data.o,ov_SC07_000_jr_8015A3C8.o,tail10.data.o,ov_SC07_000_jr_8015AE2C.o,tail11.data.o,ov_SC07_000_jr_8015C32C.o,tail12.data.o,ov_SC07_000_jr_8016AB6C.o,tail13.data.o,ov_SC07_000_jr_801734BC.o,tail14.data.o,ov_SC07_000_jr_80178D40.o,tail15.data.o,ov_SC07_000_jr_8017A4AC.o,tail16.data.o,ov_SC07_000_jr_8017AE2C.o,ov_SC07_000_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC07_000/ov_SC07_000_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC07_000/ov_SC07_000_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC07_000/ov_SC07_000_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -453,7 +453,7 @@ ov_SC01_004_ELF := $(ov_SC01_004_OUT).elf ov_SC01_004_MAPFILE := $(ov_SC01_004_OUT).map ov_SC01_004_LD_SCRIPT := $(ov_SC01_004_OUT).ld ov_SC01_004_SPLAT_YAML := config/splat.ov_SC01_004.yaml -ov_SC01_004_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_004_jr_8012ACE0.o,tail2.data.o,ov_SC01_004_jr_801380E0.o,tail3.data.o,ov_SC01_004_jr_8013F350.o,tail4.data.o,ov_SC01_004_jr_8013FFD8.o,tail5.data.o,ov_SC01_004_jr_80140608.o,tail6.data.o,ov_SC01_004_jr_8015444C.o,tail7.data.o,ov_SC01_004_jr_80154C24.o,ov_SC01_004_jr_801588CC.o,tail8.data.o,ov_SC01_004_jr_80159C84.o,tail9.data.o,ov_SC01_004_jr_8015A3C8.o,tail10.data.o,ov_SC01_004_jr_8015AE2C.o,tail11.data.o,ov_SC01_004_jr_8015C32C.o,tail12.data.o,ov_SC01_004_jr_8016AB6C.o,tail13.data.o,ov_SC01_004_jr_801734BC.o,tail14.data.o,ov_SC01_004_jr_80178D40.o,tail15.data.o,ov_SC01_004_jr_8017A4AC.o,tail16.data.o,ov_SC01_004_jr_8017BE9C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_004_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_004_jr_8012ACE0.o,tail2.data.o,ov_SC01_004_jr_801380E0.o,tail3.data.o,ov_SC01_004_jr_8013F350.o,tail4.data.o,ov_SC01_004_jr_8013FFD8.o,tail5.data.o,ov_SC01_004_jr_80140608.o,tail6.data.o,ov_SC01_004_jr_8015444C.o,tail7.data.o,ov_SC01_004_jr_80154C24.o,ov_SC01_004_jr_801588CC.o,tail8.data.o,ov_SC01_004_jr_80159C84.o,tail9.data.o,ov_SC01_004_jr_8015A3C8.o,tail10.data.o,ov_SC01_004_jr_8015AE2C.o,tail11.data.o,ov_SC01_004_jr_8015C32C.o,tail12.data.o,ov_SC01_004_jr_8016AB6C.o,tail13.data.o,ov_SC01_004_jr_801734BC.o,tail14.data.o,ov_SC01_004_jr_80178D40.o,tail15.data.o,ov_SC01_004_jr_8017A4AC.o,tail16.data.o,ov_SC01_004_jr_8017AE2C.o,ov_SC01_004_jr_8017BE9C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_004/ov_SC01_004_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC01_004/ov_SC01_004_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_004/ov_SC01_004_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -480,7 +480,7 @@ ov_SC01_008_ELF := $(ov_SC01_008_OUT).elf ov_SC01_008_MAPFILE := $(ov_SC01_008_OUT).map ov_SC01_008_LD_SCRIPT := $(ov_SC01_008_OUT).ld ov_SC01_008_SPLAT_YAML := config/splat.ov_SC01_008.yaml -ov_SC01_008_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_008_jr_8012ACE0.o,tail2.data.o,ov_SC01_008_jr_801380E0.o,tail3.data.o,ov_SC01_008_jr_8013F350.o,tail4.data.o,ov_SC01_008_jr_8013FFD8.o,tail5.data.o,ov_SC01_008_jr_80140608.o,tail6.data.o,ov_SC01_008_jr_8015444C.o,tail7.data.o,ov_SC01_008_jr_80154C24.o,ov_SC01_008_jr_801588CC.o,tail8.data.o,ov_SC01_008_jr_80159C84.o,tail9.data.o,ov_SC01_008_jr_8015A3C8.o,tail10.data.o,ov_SC01_008_jr_8015AE2C.o,tail11.data.o,ov_SC01_008_jr_8015C32C.o,tail12.data.o,ov_SC01_008_jr_8016AB6C.o,tail13.data.o,ov_SC01_008_jr_801734BC.o,tail14.data.o,ov_SC01_008_jr_80178D40.o,tail15.data.o,ov_SC01_008_jr_8017A4AC.o,tail16.data.o,ov_SC01_008_jr_8017BE9C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_008_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_008_jr_8012ACE0.o,tail2.data.o,ov_SC01_008_jr_801380E0.o,tail3.data.o,ov_SC01_008_jr_8013F350.o,tail4.data.o,ov_SC01_008_jr_8013FFD8.o,tail5.data.o,ov_SC01_008_jr_80140608.o,tail6.data.o,ov_SC01_008_jr_8015444C.o,tail7.data.o,ov_SC01_008_jr_80154C24.o,ov_SC01_008_jr_801588CC.o,tail8.data.o,ov_SC01_008_jr_80159C84.o,tail9.data.o,ov_SC01_008_jr_8015A3C8.o,tail10.data.o,ov_SC01_008_jr_8015AE2C.o,tail11.data.o,ov_SC01_008_jr_8015C32C.o,tail12.data.o,ov_SC01_008_jr_8016AB6C.o,tail13.data.o,ov_SC01_008_jr_801734BC.o,tail14.data.o,ov_SC01_008_jr_80178D40.o,tail15.data.o,ov_SC01_008_jr_8017A4AC.o,tail16.data.o,ov_SC01_008_jr_8017AE2C.o,ov_SC01_008_jr_8017BE9C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_008/ov_SC01_008_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC01_008/ov_SC01_008_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_008/ov_SC01_008_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -507,7 +507,7 @@ ov_SC01_009_ELF := $(ov_SC01_009_OUT).elf ov_SC01_009_MAPFILE := $(ov_SC01_009_OUT).map ov_SC01_009_LD_SCRIPT := $(ov_SC01_009_OUT).ld ov_SC01_009_SPLAT_YAML := config/splat.ov_SC01_009.yaml -ov_SC01_009_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_009_jr_8012ACE0.o,tail2.data.o,ov_SC01_009_jr_801380E0.o,tail3.data.o,ov_SC01_009_jr_8013F350.o,tail4.data.o,ov_SC01_009_jr_8013FFD8.o,tail5.data.o,ov_SC01_009_jr_80140608.o,tail6.data.o,ov_SC01_009_jr_8015444C.o,tail7.data.o,ov_SC01_009_jr_80154C24.o,ov_SC01_009_jr_801588CC.o,tail8.data.o,ov_SC01_009_jr_80159C84.o,tail9.data.o,ov_SC01_009_jr_8015A3C8.o,tail10.data.o,ov_SC01_009_jr_8015AE2C.o,tail11.data.o,ov_SC01_009_jr_8015C32C.o,tail12.data.o,ov_SC01_009_jr_8016AB6C.o,tail13.data.o,ov_SC01_009_jr_801734BC.o,tail14.data.o,ov_SC01_009_jr_80178D40.o,tail15.data.o,ov_SC01_009_jr_8017A4AC.o,tail16.data.o,ov_SC01_009_jr_8017BE9C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_009_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_009_jr_8012ACE0.o,tail2.data.o,ov_SC01_009_jr_801380E0.o,tail3.data.o,ov_SC01_009_jr_8013F350.o,tail4.data.o,ov_SC01_009_jr_8013FFD8.o,tail5.data.o,ov_SC01_009_jr_80140608.o,tail6.data.o,ov_SC01_009_jr_8015444C.o,tail7.data.o,ov_SC01_009_jr_80154C24.o,ov_SC01_009_jr_801588CC.o,tail8.data.o,ov_SC01_009_jr_80159C84.o,tail9.data.o,ov_SC01_009_jr_8015A3C8.o,tail10.data.o,ov_SC01_009_jr_8015AE2C.o,tail11.data.o,ov_SC01_009_jr_8015C32C.o,tail12.data.o,ov_SC01_009_jr_8016AB6C.o,tail13.data.o,ov_SC01_009_jr_801734BC.o,tail14.data.o,ov_SC01_009_jr_80178D40.o,tail15.data.o,ov_SC01_009_jr_8017A4AC.o,tail16.data.o,ov_SC01_009_jr_8017AE2C.o,ov_SC01_009_jr_8017BE9C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_009/ov_SC01_009_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC01_009/ov_SC01_009_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_009/ov_SC01_009_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -534,7 +534,7 @@ ov_SC01_074_ELF := $(ov_SC01_074_OUT).elf ov_SC01_074_MAPFILE := $(ov_SC01_074_OUT).map ov_SC01_074_LD_SCRIPT := $(ov_SC01_074_OUT).ld ov_SC01_074_SPLAT_YAML := config/splat.ov_SC01_074.yaml -ov_SC01_074_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_074_jr_8012ACE0.o,tail2.data.o,ov_SC01_074_jr_801380E0.o,tail3.data.o,ov_SC01_074_jr_8013F350.o,tail4.data.o,ov_SC01_074_jr_8013FFD8.o,tail5.data.o,ov_SC01_074_jr_80140608.o,tail6.data.o,ov_SC01_074_jr_8015444C.o,tail7.data.o,ov_SC01_074_jr_80154C24.o,ov_SC01_074_jr_801588CC.o,tail8.data.o,ov_SC01_074_jr_80159C84.o,tail9.data.o,ov_SC01_074_jr_8015A3C8.o,tail10.data.o,ov_SC01_074_jr_8015AE2C.o,tail11.data.o,ov_SC01_074_jr_8015C32C.o,tail12.data.o,ov_SC01_074_jr_8016AB6C.o,tail13.data.o,ov_SC01_074_jr_801734BC.o,tail14.data.o,ov_SC01_074_jr_80178D40.o,tail15.data.o,ov_SC01_074_jr_8017A4AC.o,tail16.data.o,ov_SC01_074_jr_8017BE9C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_074_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_074_jr_8012ACE0.o,tail2.data.o,ov_SC01_074_jr_801380E0.o,tail3.data.o,ov_SC01_074_jr_8013F350.o,tail4.data.o,ov_SC01_074_jr_8013FFD8.o,tail5.data.o,ov_SC01_074_jr_80140608.o,tail6.data.o,ov_SC01_074_jr_8015444C.o,tail7.data.o,ov_SC01_074_jr_80154C24.o,ov_SC01_074_jr_801588CC.o,tail8.data.o,ov_SC01_074_jr_80159C84.o,tail9.data.o,ov_SC01_074_jr_8015A3C8.o,tail10.data.o,ov_SC01_074_jr_8015AE2C.o,tail11.data.o,ov_SC01_074_jr_8015C32C.o,tail12.data.o,ov_SC01_074_jr_8016AB6C.o,tail13.data.o,ov_SC01_074_jr_801734BC.o,tail14.data.o,ov_SC01_074_jr_80178D40.o,tail15.data.o,ov_SC01_074_jr_8017A4AC.o,tail16.data.o,ov_SC01_074_jr_8017AE2C.o,ov_SC01_074_jr_8017BE9C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_074/ov_SC01_074_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC01_074/ov_SC01_074_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_074/ov_SC01_074_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -561,7 +561,7 @@ ov_SC01_080_ELF := $(ov_SC01_080_OUT).elf ov_SC01_080_MAPFILE := $(ov_SC01_080_OUT).map ov_SC01_080_LD_SCRIPT := $(ov_SC01_080_OUT).ld ov_SC01_080_SPLAT_YAML := config/splat.ov_SC01_080.yaml -ov_SC01_080_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_080_jr_8012ACE0.o,tail2.data.o,ov_SC01_080_jr_801380E0.o,tail3.data.o,ov_SC01_080_jr_8013F350.o,tail4.data.o,ov_SC01_080_jr_8013FFD8.o,tail5.data.o,ov_SC01_080_jr_80140608.o,tail6.data.o,ov_SC01_080_jr_8015444C.o,tail7.data.o,ov_SC01_080_jr_80154C24.o,ov_SC01_080_jr_801588CC.o,tail8.data.o,ov_SC01_080_jr_80159C84.o,tail9.data.o,ov_SC01_080_jr_8015A3C8.o,tail10.data.o,ov_SC01_080_jr_8015AE2C.o,tail11.data.o,ov_SC01_080_jr_8015C32C.o,tail12.data.o,ov_SC01_080_jr_8016AB6C.o,tail13.data.o,ov_SC01_080_jr_801734BC.o,tail14.data.o,ov_SC01_080_jr_80178D40.o,tail15.data.o,ov_SC01_080_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_080_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_080_jr_8012ACE0.o,tail2.data.o,ov_SC01_080_jr_801380E0.o,tail3.data.o,ov_SC01_080_jr_8013F350.o,tail4.data.o,ov_SC01_080_jr_8013FFD8.o,tail5.data.o,ov_SC01_080_jr_80140608.o,tail6.data.o,ov_SC01_080_jr_8015444C.o,tail7.data.o,ov_SC01_080_jr_80154C24.o,ov_SC01_080_jr_801588CC.o,tail8.data.o,ov_SC01_080_jr_80159C84.o,tail9.data.o,ov_SC01_080_jr_8015A3C8.o,tail10.data.o,ov_SC01_080_jr_8015AE2C.o,tail11.data.o,ov_SC01_080_jr_8015C32C.o,tail12.data.o,ov_SC01_080_jr_8016AB6C.o,tail13.data.o,ov_SC01_080_jr_801734BC.o,tail14.data.o,ov_SC01_080_jr_80178D40.o,tail15.data.o,ov_SC01_080_jr_8017A4AC.o,tail16.data.o,ov_SC01_080_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_080/ov_SC01_080_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC01_080/ov_SC01_080_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_080/ov_SC01_080_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -588,7 +588,7 @@ ov_SC01_084_ELF := $(ov_SC01_084_OUT).elf ov_SC01_084_MAPFILE := $(ov_SC01_084_OUT).map ov_SC01_084_LD_SCRIPT := $(ov_SC01_084_OUT).ld ov_SC01_084_SPLAT_YAML := config/splat.ov_SC01_084.yaml -ov_SC01_084_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_084_jr_8012ACE0.o,tail2.data.o,ov_SC01_084_jr_801380E0.o,tail3.data.o,ov_SC01_084_jr_8013F350.o,tail4.data.o,ov_SC01_084_jr_8013FFD8.o,tail5.data.o,ov_SC01_084_jr_80140608.o,tail6.data.o,ov_SC01_084_jr_8015444C.o,tail7.data.o,ov_SC01_084_jr_80154C24.o,ov_SC01_084_jr_801588CC.o,tail8.data.o,ov_SC01_084_jr_80159C84.o,tail9.data.o,ov_SC01_084_jr_8015A3C8.o,tail10.data.o,ov_SC01_084_jr_8015AE2C.o,tail11.data.o,ov_SC01_084_jr_8015C32C.o,tail12.data.o,ov_SC01_084_jr_8016AB6C.o,tail13.data.o,ov_SC01_084_jr_801734BC.o,tail14.data.o,ov_SC01_084_jr_80178D40.o,tail15.data.o,ov_SC01_084_jr_8017A4AC.o,tail16.data.o,ov_SC01_084_jr_8017CA80.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_084_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_084_jr_8012ACE0.o,tail2.data.o,ov_SC01_084_jr_801380E0.o,tail3.data.o,ov_SC01_084_jr_8013F350.o,tail4.data.o,ov_SC01_084_jr_8013FFD8.o,tail5.data.o,ov_SC01_084_jr_80140608.o,tail6.data.o,ov_SC01_084_jr_8015444C.o,tail7.data.o,ov_SC01_084_jr_80154C24.o,ov_SC01_084_jr_801588CC.o,tail8.data.o,ov_SC01_084_jr_80159C84.o,tail9.data.o,ov_SC01_084_jr_8015A3C8.o,tail10.data.o,ov_SC01_084_jr_8015AE2C.o,tail11.data.o,ov_SC01_084_jr_8015C32C.o,tail12.data.o,ov_SC01_084_jr_8016AB6C.o,tail13.data.o,ov_SC01_084_jr_801734BC.o,tail14.data.o,ov_SC01_084_jr_80178D40.o,tail15.data.o,ov_SC01_084_jr_8017A4AC.o,tail16.data.o,ov_SC01_084_jr_8017AE2C.o,ov_SC01_084_jr_8017CA80.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_084/ov_SC01_084_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC01_084/ov_SC01_084_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_084/ov_SC01_084_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -615,7 +615,7 @@ ov_SC02_004_ELF := $(ov_SC02_004_OUT).elf ov_SC02_004_MAPFILE := $(ov_SC02_004_OUT).map ov_SC02_004_LD_SCRIPT := $(ov_SC02_004_OUT).ld ov_SC02_004_SPLAT_YAML := config/splat.ov_SC02_004.yaml -ov_SC02_004_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_004_jr_8012ACE0.o,tail2.data.o,ov_SC02_004_jr_801380E0.o,tail3.data.o,ov_SC02_004_jr_8013F350.o,tail4.data.o,ov_SC02_004_jr_8013FFD8.o,tail5.data.o,ov_SC02_004_jr_80140608.o,tail6.data.o,ov_SC02_004_jr_8015444C.o,tail7.data.o,ov_SC02_004_jr_80154C24.o,ov_SC02_004_jr_801588CC.o,tail8.data.o,ov_SC02_004_jr_80159C84.o,tail9.data.o,ov_SC02_004_jr_8015A3C8.o,tail10.data.o,ov_SC02_004_jr_8015AE2C.o,tail11.data.o,ov_SC02_004_jr_8015C32C.o,tail12.data.o,ov_SC02_004_jr_8016AB6C.o,tail13.data.o,ov_SC02_004_jr_801734BC.o,tail14.data.o,ov_SC02_004_jr_80178D40.o,tail15.data.o,ov_SC02_004_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_004_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_004_jr_8012ACE0.o,tail2.data.o,ov_SC02_004_jr_801380E0.o,tail3.data.o,ov_SC02_004_jr_8013F350.o,tail4.data.o,ov_SC02_004_jr_8013FFD8.o,tail5.data.o,ov_SC02_004_jr_80140608.o,tail6.data.o,ov_SC02_004_jr_8015444C.o,tail7.data.o,ov_SC02_004_jr_80154C24.o,ov_SC02_004_jr_801588CC.o,tail8.data.o,ov_SC02_004_jr_80159C84.o,tail9.data.o,ov_SC02_004_jr_8015A3C8.o,tail10.data.o,ov_SC02_004_jr_8015AE2C.o,tail11.data.o,ov_SC02_004_jr_8015C32C.o,tail12.data.o,ov_SC02_004_jr_8016AB6C.o,tail13.data.o,ov_SC02_004_jr_801734BC.o,tail14.data.o,ov_SC02_004_jr_80178D40.o,tail15.data.o,ov_SC02_004_jr_8017A4AC.o,tail16.data.o,ov_SC02_004_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_004/ov_SC02_004_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_004/ov_SC02_004_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_004/ov_SC02_004_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -642,7 +642,7 @@ ov_SC02_005_ELF := $(ov_SC02_005_OUT).elf ov_SC02_005_MAPFILE := $(ov_SC02_005_OUT).map ov_SC02_005_LD_SCRIPT := $(ov_SC02_005_OUT).ld ov_SC02_005_SPLAT_YAML := config/splat.ov_SC02_005.yaml -ov_SC02_005_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_005_jr_8012ACE0.o,tail2.data.o,ov_SC02_005_jr_801380E0.o,tail3.data.o,ov_SC02_005_jr_8013F350.o,tail4.data.o,ov_SC02_005_jr_8013FFD8.o,tail5.data.o,ov_SC02_005_jr_80140608.o,tail6.data.o,ov_SC02_005_jr_8015444C.o,tail7.data.o,ov_SC02_005_jr_80154C24.o,ov_SC02_005_jr_801588CC.o,tail8.data.o,ov_SC02_005_jr_80159C84.o,tail9.data.o,ov_SC02_005_jr_8015A3C8.o,tail10.data.o,ov_SC02_005_jr_8015AE2C.o,tail11.data.o,ov_SC02_005_jr_8015C32C.o,tail12.data.o,ov_SC02_005_jr_8016AB6C.o,tail13.data.o,ov_SC02_005_jr_801734BC.o,tail14.data.o,ov_SC02_005_jr_80178D40.o,tail15.data.o,ov_SC02_005_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_005_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_005_jr_8012ACE0.o,tail2.data.o,ov_SC02_005_jr_801380E0.o,tail3.data.o,ov_SC02_005_jr_8013F350.o,tail4.data.o,ov_SC02_005_jr_8013FFD8.o,tail5.data.o,ov_SC02_005_jr_80140608.o,tail6.data.o,ov_SC02_005_jr_8015444C.o,tail7.data.o,ov_SC02_005_jr_80154C24.o,ov_SC02_005_jr_801588CC.o,tail8.data.o,ov_SC02_005_jr_80159C84.o,tail9.data.o,ov_SC02_005_jr_8015A3C8.o,tail10.data.o,ov_SC02_005_jr_8015AE2C.o,tail11.data.o,ov_SC02_005_jr_8015C32C.o,tail12.data.o,ov_SC02_005_jr_8016AB6C.o,tail13.data.o,ov_SC02_005_jr_801734BC.o,tail14.data.o,ov_SC02_005_jr_80178D40.o,tail15.data.o,ov_SC02_005_jr_8017A4AC.o,tail16.data.o,ov_SC02_005_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_005/ov_SC02_005_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_005/ov_SC02_005_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_005/ov_SC02_005_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -669,7 +669,7 @@ ov_SC02_011_ELF := $(ov_SC02_011_OUT).elf ov_SC02_011_MAPFILE := $(ov_SC02_011_OUT).map ov_SC02_011_LD_SCRIPT := $(ov_SC02_011_OUT).ld ov_SC02_011_SPLAT_YAML := config/splat.ov_SC02_011.yaml -ov_SC02_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_011_jr_8012ACE0.o,tail2.data.o,ov_SC02_011_jr_801380E0.o,tail3.data.o,ov_SC02_011_jr_8013F350.o,tail4.data.o,ov_SC02_011_jr_8013FFD8.o,tail5.data.o,ov_SC02_011_jr_80140608.o,tail6.data.o,ov_SC02_011_jr_8015444C.o,tail7.data.o,ov_SC02_011_jr_80154C24.o,ov_SC02_011_jr_801588CC.o,tail8.data.o,ov_SC02_011_jr_80159C84.o,tail9.data.o,ov_SC02_011_jr_8015A3C8.o,tail10.data.o,ov_SC02_011_jr_8015AE2C.o,tail11.data.o,ov_SC02_011_jr_8015C32C.o,tail12.data.o,ov_SC02_011_jr_8016AB6C.o,tail13.data.o,ov_SC02_011_jr_801734BC.o,tail14.data.o,ov_SC02_011_jr_80178D40.o,tail15.data.o,ov_SC02_011_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_011_jr_8012ACE0.o,tail2.data.o,ov_SC02_011_jr_801380E0.o,tail3.data.o,ov_SC02_011_jr_8013F350.o,tail4.data.o,ov_SC02_011_jr_8013FFD8.o,tail5.data.o,ov_SC02_011_jr_80140608.o,tail6.data.o,ov_SC02_011_jr_8015444C.o,tail7.data.o,ov_SC02_011_jr_80154C24.o,ov_SC02_011_jr_801588CC.o,tail8.data.o,ov_SC02_011_jr_80159C84.o,tail9.data.o,ov_SC02_011_jr_8015A3C8.o,tail10.data.o,ov_SC02_011_jr_8015AE2C.o,tail11.data.o,ov_SC02_011_jr_8015C32C.o,tail12.data.o,ov_SC02_011_jr_8016AB6C.o,tail13.data.o,ov_SC02_011_jr_801734BC.o,tail14.data.o,ov_SC02_011_jr_80178D40.o,tail15.data.o,ov_SC02_011_jr_8017A4AC.o,tail16.data.o,ov_SC02_011_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_011/ov_SC02_011_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_011/ov_SC02_011_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_011/ov_SC02_011_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -696,7 +696,7 @@ ov_SC02_015_ELF := $(ov_SC02_015_OUT).elf ov_SC02_015_MAPFILE := $(ov_SC02_015_OUT).map ov_SC02_015_LD_SCRIPT := $(ov_SC02_015_OUT).ld ov_SC02_015_SPLAT_YAML := config/splat.ov_SC02_015.yaml -ov_SC02_015_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_015_jr_8012ACE0.o,tail2.data.o,ov_SC02_015_jr_801380E0.o,tail3.data.o,ov_SC02_015_jr_8013F350.o,tail4.data.o,ov_SC02_015_jr_8013FFD8.o,tail5.data.o,ov_SC02_015_jr_80140608.o,tail6.data.o,ov_SC02_015_jr_8015444C.o,tail7.data.o,ov_SC02_015_jr_80154C24.o,ov_SC02_015_jr_801588CC.o,tail8.data.o,ov_SC02_015_jr_80159C84.o,tail9.data.o,ov_SC02_015_jr_8015A3C8.o,tail10.data.o,ov_SC02_015_jr_8015AE2C.o,tail11.data.o,ov_SC02_015_jr_8015C32C.o,tail12.data.o,ov_SC02_015_jr_8016AB6C.o,tail13.data.o,ov_SC02_015_jr_801734BC.o,tail14.data.o,ov_SC02_015_jr_80178D40.o,tail15.data.o,ov_SC02_015_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_015_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_015_jr_8012ACE0.o,tail2.data.o,ov_SC02_015_jr_801380E0.o,tail3.data.o,ov_SC02_015_jr_8013F350.o,tail4.data.o,ov_SC02_015_jr_8013FFD8.o,tail5.data.o,ov_SC02_015_jr_80140608.o,tail6.data.o,ov_SC02_015_jr_8015444C.o,tail7.data.o,ov_SC02_015_jr_80154C24.o,ov_SC02_015_jr_801588CC.o,tail8.data.o,ov_SC02_015_jr_80159C84.o,tail9.data.o,ov_SC02_015_jr_8015A3C8.o,tail10.data.o,ov_SC02_015_jr_8015AE2C.o,tail11.data.o,ov_SC02_015_jr_8015C32C.o,tail12.data.o,ov_SC02_015_jr_8016AB6C.o,tail13.data.o,ov_SC02_015_jr_801734BC.o,tail14.data.o,ov_SC02_015_jr_80178D40.o,tail15.data.o,ov_SC02_015_jr_8017A4AC.o,tail16.data.o,ov_SC02_015_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_015/ov_SC02_015_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_015/ov_SC02_015_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_015/ov_SC02_015_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -723,7 +723,7 @@ ov_SC02_016_ELF := $(ov_SC02_016_OUT).elf ov_SC02_016_MAPFILE := $(ov_SC02_016_OUT).map ov_SC02_016_LD_SCRIPT := $(ov_SC02_016_OUT).ld ov_SC02_016_SPLAT_YAML := config/splat.ov_SC02_016.yaml -ov_SC02_016_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_016_jr_8012ACE0.o,tail2.data.o,ov_SC02_016_jr_801380E0.o,tail3.data.o,ov_SC02_016_jr_8013F350.o,tail4.data.o,ov_SC02_016_jr_8013FFD8.o,tail5.data.o,ov_SC02_016_jr_80140608.o,tail6.data.o,ov_SC02_016_jr_8015444C.o,tail7.data.o,ov_SC02_016_jr_80154C24.o,ov_SC02_016_jr_801588CC.o,tail8.data.o,ov_SC02_016_jr_80159C84.o,tail9.data.o,ov_SC02_016_jr_8015A3C8.o,tail10.data.o,ov_SC02_016_jr_8015AE2C.o,tail11.data.o,ov_SC02_016_jr_8015C32C.o,tail12.data.o,ov_SC02_016_jr_8016AB6C.o,tail13.data.o,ov_SC02_016_jr_801734BC.o,tail14.data.o,ov_SC02_016_jr_80178D40.o,tail15.data.o,ov_SC02_016_jr_8017A4AC.o,tail16.data.o,ov_SC02_016_jr_8017DC70.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_016_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_016_jr_8012ACE0.o,tail2.data.o,ov_SC02_016_jr_801380E0.o,tail3.data.o,ov_SC02_016_jr_8013F350.o,tail4.data.o,ov_SC02_016_jr_8013FFD8.o,tail5.data.o,ov_SC02_016_jr_80140608.o,tail6.data.o,ov_SC02_016_jr_8015444C.o,tail7.data.o,ov_SC02_016_jr_80154C24.o,ov_SC02_016_jr_801588CC.o,tail8.data.o,ov_SC02_016_jr_80159C84.o,tail9.data.o,ov_SC02_016_jr_8015A3C8.o,tail10.data.o,ov_SC02_016_jr_8015AE2C.o,tail11.data.o,ov_SC02_016_jr_8015C32C.o,tail12.data.o,ov_SC02_016_jr_8016AB6C.o,tail13.data.o,ov_SC02_016_jr_801734BC.o,tail14.data.o,ov_SC02_016_jr_80178D40.o,tail15.data.o,ov_SC02_016_jr_8017A4AC.o,tail16.data.o,ov_SC02_016_jr_8017AE2C.o,ov_SC02_016_jr_8017DC70.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_016/ov_SC02_016_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_016/ov_SC02_016_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_016/ov_SC02_016_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -750,7 +750,7 @@ ov_SC02_017_ELF := $(ov_SC02_017_OUT).elf ov_SC02_017_MAPFILE := $(ov_SC02_017_OUT).map ov_SC02_017_LD_SCRIPT := $(ov_SC02_017_OUT).ld ov_SC02_017_SPLAT_YAML := config/splat.ov_SC02_017.yaml -ov_SC02_017_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_017_jr_8012ACE0.o,tail2.data.o,ov_SC02_017_jr_801380E0.o,tail3.data.o,ov_SC02_017_jr_8013F350.o,tail4.data.o,ov_SC02_017_jr_8013FFD8.o,tail5.data.o,ov_SC02_017_jr_80140608.o,tail6.data.o,ov_SC02_017_jr_8015444C.o,tail7.data.o,ov_SC02_017_jr_80154C24.o,ov_SC02_017_jr_801588CC.o,tail8.data.o,ov_SC02_017_jr_80159C84.o,tail9.data.o,ov_SC02_017_jr_8015A3C8.o,tail10.data.o,ov_SC02_017_jr_8015AE2C.o,tail11.data.o,ov_SC02_017_jr_8015C32C.o,tail12.data.o,ov_SC02_017_jr_8016AB6C.o,tail13.data.o,ov_SC02_017_jr_801734BC.o,tail14.data.o,ov_SC02_017_jr_80178D40.o,tail15.data.o,ov_SC02_017_jr_8017A4AC.o,tail16.data.o,ov_SC02_017_jr_8017DF34.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_017_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_017_jr_8012ACE0.o,tail2.data.o,ov_SC02_017_jr_801380E0.o,tail3.data.o,ov_SC02_017_jr_8013F350.o,tail4.data.o,ov_SC02_017_jr_8013FFD8.o,tail5.data.o,ov_SC02_017_jr_80140608.o,tail6.data.o,ov_SC02_017_jr_8015444C.o,tail7.data.o,ov_SC02_017_jr_80154C24.o,ov_SC02_017_jr_801588CC.o,tail8.data.o,ov_SC02_017_jr_80159C84.o,tail9.data.o,ov_SC02_017_jr_8015A3C8.o,tail10.data.o,ov_SC02_017_jr_8015AE2C.o,tail11.data.o,ov_SC02_017_jr_8015C32C.o,tail12.data.o,ov_SC02_017_jr_8016AB6C.o,tail13.data.o,ov_SC02_017_jr_801734BC.o,tail14.data.o,ov_SC02_017_jr_80178D40.o,tail15.data.o,ov_SC02_017_jr_8017A4AC.o,tail16.data.o,ov_SC02_017_jr_8017AE2C.o,ov_SC02_017_jr_8017DF34.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_017/ov_SC02_017_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_017/ov_SC02_017_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_017/ov_SC02_017_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -777,7 +777,7 @@ ov_SC02_021_ELF := $(ov_SC02_021_OUT).elf ov_SC02_021_MAPFILE := $(ov_SC02_021_OUT).map ov_SC02_021_LD_SCRIPT := $(ov_SC02_021_OUT).ld ov_SC02_021_SPLAT_YAML := config/splat.ov_SC02_021.yaml -ov_SC02_021_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_021_jr_8012ACE0.o,tail2.data.o,ov_SC02_021_jr_801380E0.o,tail3.data.o,ov_SC02_021_jr_8013F350.o,tail4.data.o,ov_SC02_021_jr_8013FFD8.o,tail5.data.o,ov_SC02_021_jr_80140608.o,tail6.data.o,ov_SC02_021_jr_8015444C.o,tail7.data.o,ov_SC02_021_jr_80154C24.o,ov_SC02_021_jr_801588CC.o,tail8.data.o,ov_SC02_021_jr_80159C84.o,tail9.data.o,ov_SC02_021_jr_8015A3C8.o,tail10.data.o,ov_SC02_021_jr_8015AE2C.o,tail11.data.o,ov_SC02_021_jr_8015C32C.o,tail12.data.o,ov_SC02_021_jr_8016AB6C.o,tail13.data.o,ov_SC02_021_jr_801734BC.o,tail14.data.o,ov_SC02_021_jr_80178D40.o,tail15.data.o,ov_SC02_021_jr_8017A4AC.o,tail16.data.o,ov_SC02_021_jr_8017C294.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_021_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_021_jr_8012ACE0.o,tail2.data.o,ov_SC02_021_jr_801380E0.o,tail3.data.o,ov_SC02_021_jr_8013F350.o,tail4.data.o,ov_SC02_021_jr_8013FFD8.o,tail5.data.o,ov_SC02_021_jr_80140608.o,tail6.data.o,ov_SC02_021_jr_8015444C.o,tail7.data.o,ov_SC02_021_jr_80154C24.o,ov_SC02_021_jr_801588CC.o,tail8.data.o,ov_SC02_021_jr_80159C84.o,tail9.data.o,ov_SC02_021_jr_8015A3C8.o,tail10.data.o,ov_SC02_021_jr_8015AE2C.o,tail11.data.o,ov_SC02_021_jr_8015C32C.o,tail12.data.o,ov_SC02_021_jr_8016AB6C.o,tail13.data.o,ov_SC02_021_jr_801734BC.o,tail14.data.o,ov_SC02_021_jr_80178D40.o,tail15.data.o,ov_SC02_021_jr_8017A4AC.o,tail16.data.o,ov_SC02_021_jr_8017AE2C.o,ov_SC02_021_jr_8017C294.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_021/ov_SC02_021_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_021/ov_SC02_021_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_021/ov_SC02_021_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -804,7 +804,7 @@ ov_SC02_026_ELF := $(ov_SC02_026_OUT).elf ov_SC02_026_MAPFILE := $(ov_SC02_026_OUT).map ov_SC02_026_LD_SCRIPT := $(ov_SC02_026_OUT).ld ov_SC02_026_SPLAT_YAML := config/splat.ov_SC02_026.yaml -ov_SC02_026_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_026_jr_8012ACE0.o,tail2.data.o,ov_SC02_026_jr_801380E0.o,tail3.data.o,ov_SC02_026_jr_8013F350.o,tail4.data.o,ov_SC02_026_jr_8013FFD8.o,tail5.data.o,ov_SC02_026_jr_80140608.o,tail6.data.o,ov_SC02_026_jr_8015444C.o,tail7.data.o,ov_SC02_026_jr_80154C24.o,ov_SC02_026_jr_801588CC.o,tail8.data.o,ov_SC02_026_jr_80159C84.o,tail9.data.o,ov_SC02_026_jr_8015A3C8.o,tail10.data.o,ov_SC02_026_jr_8015AE2C.o,tail11.data.o,ov_SC02_026_jr_8015C32C.o,tail12.data.o,ov_SC02_026_jr_8016AB6C.o,tail13.data.o,ov_SC02_026_jr_801734BC.o,tail14.data.o,ov_SC02_026_jr_80178D40.o,tail15.data.o,ov_SC02_026_jr_8017A4AC.o,tail16.data.o,ov_SC02_026_jr_8017C180.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_026_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_026_jr_8012ACE0.o,tail2.data.o,ov_SC02_026_jr_801380E0.o,tail3.data.o,ov_SC02_026_jr_8013F350.o,tail4.data.o,ov_SC02_026_jr_8013FFD8.o,tail5.data.o,ov_SC02_026_jr_80140608.o,tail6.data.o,ov_SC02_026_jr_8015444C.o,tail7.data.o,ov_SC02_026_jr_80154C24.o,ov_SC02_026_jr_801588CC.o,tail8.data.o,ov_SC02_026_jr_80159C84.o,tail9.data.o,ov_SC02_026_jr_8015A3C8.o,tail10.data.o,ov_SC02_026_jr_8015AE2C.o,tail11.data.o,ov_SC02_026_jr_8015C32C.o,tail12.data.o,ov_SC02_026_jr_8016AB6C.o,tail13.data.o,ov_SC02_026_jr_801734BC.o,tail14.data.o,ov_SC02_026_jr_80178D40.o,tail15.data.o,ov_SC02_026_jr_8017A4AC.o,tail16.data.o,ov_SC02_026_jr_8017AE2C.o,ov_SC02_026_jr_8017C180.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_026/ov_SC02_026_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_026/ov_SC02_026_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_026/ov_SC02_026_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -831,7 +831,7 @@ ov_SC02_027_ELF := $(ov_SC02_027_OUT).elf ov_SC02_027_MAPFILE := $(ov_SC02_027_OUT).map ov_SC02_027_LD_SCRIPT := $(ov_SC02_027_OUT).ld ov_SC02_027_SPLAT_YAML := config/splat.ov_SC02_027.yaml -ov_SC02_027_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_027_jr_8012ACE0.o,tail2.data.o,ov_SC02_027_jr_801380E0.o,tail3.data.o,ov_SC02_027_jr_8013F350.o,tail4.data.o,ov_SC02_027_jr_8013FFD8.o,tail5.data.o,ov_SC02_027_jr_80140608.o,tail6.data.o,ov_SC02_027_jr_8015444C.o,tail7.data.o,ov_SC02_027_jr_80154C24.o,ov_SC02_027_jr_801588CC.o,tail8.data.o,ov_SC02_027_jr_80159C84.o,tail9.data.o,ov_SC02_027_jr_8015A3C8.o,tail10.data.o,ov_SC02_027_jr_8015AE2C.o,tail11.data.o,ov_SC02_027_jr_8015C32C.o,tail12.data.o,ov_SC02_027_jr_8016AB6C.o,tail13.data.o,ov_SC02_027_jr_801734BC.o,tail14.data.o,ov_SC02_027_jr_80178D40.o,tail15.data.o,ov_SC02_027_jr_8017A4AC.o,tail16.data.o,ov_SC02_027_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_027_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_027_jr_8012ACE0.o,tail2.data.o,ov_SC02_027_jr_801380E0.o,tail3.data.o,ov_SC02_027_jr_8013F350.o,tail4.data.o,ov_SC02_027_jr_8013FFD8.o,tail5.data.o,ov_SC02_027_jr_80140608.o,tail6.data.o,ov_SC02_027_jr_8015444C.o,tail7.data.o,ov_SC02_027_jr_80154C24.o,ov_SC02_027_jr_801588CC.o,tail8.data.o,ov_SC02_027_jr_80159C84.o,tail9.data.o,ov_SC02_027_jr_8015A3C8.o,tail10.data.o,ov_SC02_027_jr_8015AE2C.o,tail11.data.o,ov_SC02_027_jr_8015C32C.o,tail12.data.o,ov_SC02_027_jr_8016AB6C.o,tail13.data.o,ov_SC02_027_jr_801734BC.o,tail14.data.o,ov_SC02_027_jr_80178D40.o,tail15.data.o,ov_SC02_027_jr_8017A4AC.o,tail16.data.o,ov_SC02_027_jr_8017AE2C.o,ov_SC02_027_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_027/ov_SC02_027_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_027/ov_SC02_027_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_027/ov_SC02_027_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -858,7 +858,7 @@ ov_SC02_028_ELF := $(ov_SC02_028_OUT).elf ov_SC02_028_MAPFILE := $(ov_SC02_028_OUT).map ov_SC02_028_LD_SCRIPT := $(ov_SC02_028_OUT).ld ov_SC02_028_SPLAT_YAML := config/splat.ov_SC02_028.yaml -ov_SC02_028_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_028_jr_8012ACE0.o,tail2.data.o,ov_SC02_028_jr_801380E0.o,tail3.data.o,ov_SC02_028_jr_8013F350.o,tail4.data.o,ov_SC02_028_jr_8013FFD8.o,tail5.data.o,ov_SC02_028_jr_80140608.o,tail6.data.o,ov_SC02_028_jr_8015444C.o,tail7.data.o,ov_SC02_028_jr_80154C24.o,ov_SC02_028_jr_801588CC.o,tail8.data.o,ov_SC02_028_jr_80159C84.o,tail9.data.o,ov_SC02_028_jr_8015A3C8.o,tail10.data.o,ov_SC02_028_jr_8015AE2C.o,tail11.data.o,ov_SC02_028_jr_8015C32C.o,tail12.data.o,ov_SC02_028_jr_8016AB6C.o,tail13.data.o,ov_SC02_028_jr_801734BC.o,tail14.data.o,ov_SC02_028_jr_80178D40.o,tail15.data.o,ov_SC02_028_jr_8017A4AC.o,tail16.data.o,ov_SC02_028_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_028_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_028_jr_8012ACE0.o,tail2.data.o,ov_SC02_028_jr_801380E0.o,tail3.data.o,ov_SC02_028_jr_8013F350.o,tail4.data.o,ov_SC02_028_jr_8013FFD8.o,tail5.data.o,ov_SC02_028_jr_80140608.o,tail6.data.o,ov_SC02_028_jr_8015444C.o,tail7.data.o,ov_SC02_028_jr_80154C24.o,ov_SC02_028_jr_801588CC.o,tail8.data.o,ov_SC02_028_jr_80159C84.o,tail9.data.o,ov_SC02_028_jr_8015A3C8.o,tail10.data.o,ov_SC02_028_jr_8015AE2C.o,tail11.data.o,ov_SC02_028_jr_8015C32C.o,tail12.data.o,ov_SC02_028_jr_8016AB6C.o,tail13.data.o,ov_SC02_028_jr_801734BC.o,tail14.data.o,ov_SC02_028_jr_80178D40.o,tail15.data.o,ov_SC02_028_jr_8017A4AC.o,tail16.data.o,ov_SC02_028_jr_8017AE2C.o,ov_SC02_028_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_028/ov_SC02_028_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_028/ov_SC02_028_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_028/ov_SC02_028_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -885,7 +885,7 @@ ov_SC02_031_ELF := $(ov_SC02_031_OUT).elf ov_SC02_031_MAPFILE := $(ov_SC02_031_OUT).map ov_SC02_031_LD_SCRIPT := $(ov_SC02_031_OUT).ld ov_SC02_031_SPLAT_YAML := config/splat.ov_SC02_031.yaml -ov_SC02_031_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_031_jr_8012ACE0.o,tail2.data.o,ov_SC02_031_jr_801380E0.o,tail3.data.o,ov_SC02_031_jr_8013F350.o,tail4.data.o,ov_SC02_031_jr_8013FFD8.o,tail5.data.o,ov_SC02_031_jr_80140608.o,tail6.data.o,ov_SC02_031_jr_8015444C.o,tail7.data.o,ov_SC02_031_jr_80154C24.o,ov_SC02_031_jr_801588CC.o,tail8.data.o,ov_SC02_031_jr_80159C84.o,tail9.data.o,ov_SC02_031_jr_8015A3C8.o,tail10.data.o,ov_SC02_031_jr_8015AE2C.o,tail11.data.o,ov_SC02_031_jr_8015C32C.o,tail12.data.o,ov_SC02_031_jr_8016AB6C.o,tail13.data.o,ov_SC02_031_jr_801734BC.o,tail14.data.o,ov_SC02_031_jr_80178D40.o,tail15.data.o,ov_SC02_031_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_031_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_031_jr_8012ACE0.o,tail2.data.o,ov_SC02_031_jr_801380E0.o,tail3.data.o,ov_SC02_031_jr_8013F350.o,tail4.data.o,ov_SC02_031_jr_8013FFD8.o,tail5.data.o,ov_SC02_031_jr_80140608.o,tail6.data.o,ov_SC02_031_jr_8015444C.o,tail7.data.o,ov_SC02_031_jr_80154C24.o,ov_SC02_031_jr_801588CC.o,tail8.data.o,ov_SC02_031_jr_80159C84.o,tail9.data.o,ov_SC02_031_jr_8015A3C8.o,tail10.data.o,ov_SC02_031_jr_8015AE2C.o,tail11.data.o,ov_SC02_031_jr_8015C32C.o,tail12.data.o,ov_SC02_031_jr_8016AB6C.o,tail13.data.o,ov_SC02_031_jr_801734BC.o,tail14.data.o,ov_SC02_031_jr_80178D40.o,tail15.data.o,ov_SC02_031_jr_8017A4AC.o,tail16.data.o,ov_SC02_031_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_031/ov_SC02_031_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_031/ov_SC02_031_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_031/ov_SC02_031_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -912,7 +912,7 @@ ov_SC02_035_ELF := $(ov_SC02_035_OUT).elf ov_SC02_035_MAPFILE := $(ov_SC02_035_OUT).map ov_SC02_035_LD_SCRIPT := $(ov_SC02_035_OUT).ld ov_SC02_035_SPLAT_YAML := config/splat.ov_SC02_035.yaml -ov_SC02_035_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_035_jr_8012ACE0.o,tail2.data.o,ov_SC02_035_jr_801380E0.o,tail3.data.o,ov_SC02_035_jr_8013F350.o,tail4.data.o,ov_SC02_035_jr_8013FFD8.o,tail5.data.o,ov_SC02_035_jr_80140608.o,tail6.data.o,ov_SC02_035_jr_8015444C.o,tail7.data.o,ov_SC02_035_jr_80154C24.o,ov_SC02_035_jr_801588CC.o,tail8.data.o,ov_SC02_035_jr_80159C84.o,tail9.data.o,ov_SC02_035_jr_8015A3C8.o,tail10.data.o,ov_SC02_035_jr_8015AE2C.o,tail11.data.o,ov_SC02_035_jr_8015C32C.o,tail12.data.o,ov_SC02_035_jr_8016AB6C.o,tail13.data.o,ov_SC02_035_jr_801734BC.o,tail14.data.o,ov_SC02_035_jr_80178D40.o,tail15.data.o,ov_SC02_035_jr_8017A4AC.o,tail16.data.o,ov_SC02_035_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_035_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_035_jr_8012ACE0.o,tail2.data.o,ov_SC02_035_jr_801380E0.o,tail3.data.o,ov_SC02_035_jr_8013F350.o,tail4.data.o,ov_SC02_035_jr_8013FFD8.o,tail5.data.o,ov_SC02_035_jr_80140608.o,tail6.data.o,ov_SC02_035_jr_8015444C.o,tail7.data.o,ov_SC02_035_jr_80154C24.o,ov_SC02_035_jr_801588CC.o,tail8.data.o,ov_SC02_035_jr_80159C84.o,tail9.data.o,ov_SC02_035_jr_8015A3C8.o,tail10.data.o,ov_SC02_035_jr_8015AE2C.o,tail11.data.o,ov_SC02_035_jr_8015C32C.o,tail12.data.o,ov_SC02_035_jr_8016AB6C.o,tail13.data.o,ov_SC02_035_jr_801734BC.o,tail14.data.o,ov_SC02_035_jr_80178D40.o,tail15.data.o,ov_SC02_035_jr_8017A4AC.o,tail16.data.o,ov_SC02_035_jr_8017AE2C.o,ov_SC02_035_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_035/ov_SC02_035_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_035/ov_SC02_035_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_035/ov_SC02_035_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -939,7 +939,7 @@ ov_SC02_039_ELF := $(ov_SC02_039_OUT).elf ov_SC02_039_MAPFILE := $(ov_SC02_039_OUT).map ov_SC02_039_LD_SCRIPT := $(ov_SC02_039_OUT).ld ov_SC02_039_SPLAT_YAML := config/splat.ov_SC02_039.yaml -ov_SC02_039_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_039_jr_8012ACE0.o,tail2.data.o,ov_SC02_039_jr_801380E0.o,tail3.data.o,ov_SC02_039_jr_8013F350.o,tail4.data.o,ov_SC02_039_jr_8013FFD8.o,tail5.data.o,ov_SC02_039_jr_80140608.o,tail6.data.o,ov_SC02_039_jr_8015444C.o,tail7.data.o,ov_SC02_039_jr_80154C24.o,ov_SC02_039_jr_801588CC.o,tail8.data.o,ov_SC02_039_jr_80159C84.o,tail9.data.o,ov_SC02_039_jr_8015A3C8.o,tail10.data.o,ov_SC02_039_jr_8015AE2C.o,tail11.data.o,ov_SC02_039_jr_8015C32C.o,tail12.data.o,ov_SC02_039_jr_8016AB6C.o,tail13.data.o,ov_SC02_039_jr_801734BC.o,tail14.data.o,ov_SC02_039_jr_80178D40.o,tail15.data.o,ov_SC02_039_jr_8017A4AC.o,tail16.data.o,ov_SC02_039_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_039_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_039_jr_8012ACE0.o,tail2.data.o,ov_SC02_039_jr_801380E0.o,tail3.data.o,ov_SC02_039_jr_8013F350.o,tail4.data.o,ov_SC02_039_jr_8013FFD8.o,tail5.data.o,ov_SC02_039_jr_80140608.o,tail6.data.o,ov_SC02_039_jr_8015444C.o,tail7.data.o,ov_SC02_039_jr_80154C24.o,ov_SC02_039_jr_801588CC.o,tail8.data.o,ov_SC02_039_jr_80159C84.o,tail9.data.o,ov_SC02_039_jr_8015A3C8.o,tail10.data.o,ov_SC02_039_jr_8015AE2C.o,tail11.data.o,ov_SC02_039_jr_8015C32C.o,tail12.data.o,ov_SC02_039_jr_8016AB6C.o,tail13.data.o,ov_SC02_039_jr_801734BC.o,tail14.data.o,ov_SC02_039_jr_80178D40.o,tail15.data.o,ov_SC02_039_jr_8017A4AC.o,tail16.data.o,ov_SC02_039_jr_8017AE2C.o,ov_SC02_039_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_039/ov_SC02_039_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_039/ov_SC02_039_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_039/ov_SC02_039_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -966,7 +966,7 @@ ov_SC02_041_ELF := $(ov_SC02_041_OUT).elf ov_SC02_041_MAPFILE := $(ov_SC02_041_OUT).map ov_SC02_041_LD_SCRIPT := $(ov_SC02_041_OUT).ld ov_SC02_041_SPLAT_YAML := config/splat.ov_SC02_041.yaml -ov_SC02_041_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_041_jr_8012ACE0.o,tail2.data.o,ov_SC02_041_jr_801380E0.o,tail3.data.o,ov_SC02_041_jr_8013F350.o,tail4.data.o,ov_SC02_041_jr_8013FFD8.o,tail5.data.o,ov_SC02_041_jr_80140608.o,tail6.data.o,ov_SC02_041_jr_8015444C.o,tail7.data.o,ov_SC02_041_jr_80154C24.o,ov_SC02_041_jr_801588CC.o,tail8.data.o,ov_SC02_041_jr_80159C84.o,tail9.data.o,ov_SC02_041_jr_8015A3C8.o,tail10.data.o,ov_SC02_041_jr_8015AE2C.o,tail11.data.o,ov_SC02_041_jr_8015C32C.o,tail12.data.o,ov_SC02_041_jr_8016AB6C.o,tail13.data.o,ov_SC02_041_jr_801734BC.o,tail14.data.o,ov_SC02_041_jr_80178D40.o,tail15.data.o,ov_SC02_041_jr_8017A4AC.o,tail16.data.o,ov_SC02_041_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_041_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_041_jr_8012ACE0.o,tail2.data.o,ov_SC02_041_jr_801380E0.o,tail3.data.o,ov_SC02_041_jr_8013F350.o,tail4.data.o,ov_SC02_041_jr_8013FFD8.o,tail5.data.o,ov_SC02_041_jr_80140608.o,tail6.data.o,ov_SC02_041_jr_8015444C.o,tail7.data.o,ov_SC02_041_jr_80154C24.o,ov_SC02_041_jr_801588CC.o,tail8.data.o,ov_SC02_041_jr_80159C84.o,tail9.data.o,ov_SC02_041_jr_8015A3C8.o,tail10.data.o,ov_SC02_041_jr_8015AE2C.o,tail11.data.o,ov_SC02_041_jr_8015C32C.o,tail12.data.o,ov_SC02_041_jr_8016AB6C.o,tail13.data.o,ov_SC02_041_jr_801734BC.o,tail14.data.o,ov_SC02_041_jr_80178D40.o,tail15.data.o,ov_SC02_041_jr_8017A4AC.o,tail16.data.o,ov_SC02_041_jr_8017AE2C.o,ov_SC02_041_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_041/ov_SC02_041_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_041/ov_SC02_041_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_041/ov_SC02_041_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -993,7 +993,7 @@ ov_SC03_003_ELF := $(ov_SC03_003_OUT).elf ov_SC03_003_MAPFILE := $(ov_SC03_003_OUT).map ov_SC03_003_LD_SCRIPT := $(ov_SC03_003_OUT).ld ov_SC03_003_SPLAT_YAML := config/splat.ov_SC03_003.yaml -ov_SC03_003_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_003_jr_8012ACE0.o,tail2.data.o,ov_SC03_003_jr_801380E0.o,tail3.data.o,ov_SC03_003_jr_8013F350.o,tail4.data.o,ov_SC03_003_jr_8013FFD8.o,tail5.data.o,ov_SC03_003_jr_80140608.o,tail6.data.o,ov_SC03_003_jr_8015444C.o,tail7.data.o,ov_SC03_003_jr_80154C24.o,ov_SC03_003_jr_801588CC.o,tail8.data.o,ov_SC03_003_jr_80159C84.o,tail9.data.o,ov_SC03_003_jr_8015A3C8.o,tail10.data.o,ov_SC03_003_jr_8015AE2C.o,tail11.data.o,ov_SC03_003_jr_8015C32C.o,tail12.data.o,ov_SC03_003_jr_8016AB6C.o,tail13.data.o,ov_SC03_003_jr_801734BC.o,tail14.data.o,ov_SC03_003_jr_80178D40.o,tail15.data.o,ov_SC03_003_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_003_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_003_jr_8012ACE0.o,tail2.data.o,ov_SC03_003_jr_801380E0.o,tail3.data.o,ov_SC03_003_jr_8013F350.o,tail4.data.o,ov_SC03_003_jr_8013FFD8.o,tail5.data.o,ov_SC03_003_jr_80140608.o,tail6.data.o,ov_SC03_003_jr_8015444C.o,tail7.data.o,ov_SC03_003_jr_80154C24.o,ov_SC03_003_jr_801588CC.o,tail8.data.o,ov_SC03_003_jr_80159C84.o,tail9.data.o,ov_SC03_003_jr_8015A3C8.o,tail10.data.o,ov_SC03_003_jr_8015AE2C.o,tail11.data.o,ov_SC03_003_jr_8015C32C.o,tail12.data.o,ov_SC03_003_jr_8016AB6C.o,tail13.data.o,ov_SC03_003_jr_801734BC.o,tail14.data.o,ov_SC03_003_jr_80178D40.o,tail15.data.o,ov_SC03_003_jr_8017A4AC.o,tail16.data.o,ov_SC03_003_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_003/ov_SC03_003_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_003/ov_SC03_003_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_003/ov_SC03_003_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1020,7 +1020,7 @@ ov_SC03_007_ELF := $(ov_SC03_007_OUT).elf ov_SC03_007_MAPFILE := $(ov_SC03_007_OUT).map ov_SC03_007_LD_SCRIPT := $(ov_SC03_007_OUT).ld ov_SC03_007_SPLAT_YAML := config/splat.ov_SC03_007.yaml -ov_SC03_007_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_007_jr_8012ACE0.o,tail2.data.o,ov_SC03_007_jr_801380E0.o,tail3.data.o,ov_SC03_007_jr_8013F350.o,tail4.data.o,ov_SC03_007_jr_8013FFD8.o,tail5.data.o,ov_SC03_007_jr_80140608.o,tail6.data.o,ov_SC03_007_jr_8015444C.o,tail7.data.o,ov_SC03_007_jr_80154C24.o,ov_SC03_007_jr_801588CC.o,tail8.data.o,ov_SC03_007_jr_80159C84.o,tail9.data.o,ov_SC03_007_jr_8015A3C8.o,tail10.data.o,ov_SC03_007_jr_8015AE2C.o,tail11.data.o,ov_SC03_007_jr_8015C32C.o,tail12.data.o,ov_SC03_007_jr_8016AB6C.o,tail13.data.o,ov_SC03_007_jr_801734BC.o,tail14.data.o,ov_SC03_007_jr_80178D40.o,tail15.data.o,ov_SC03_007_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_007_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_007_jr_8012ACE0.o,tail2.data.o,ov_SC03_007_jr_801380E0.o,tail3.data.o,ov_SC03_007_jr_8013F350.o,tail4.data.o,ov_SC03_007_jr_8013FFD8.o,tail5.data.o,ov_SC03_007_jr_80140608.o,tail6.data.o,ov_SC03_007_jr_8015444C.o,tail7.data.o,ov_SC03_007_jr_80154C24.o,ov_SC03_007_jr_801588CC.o,tail8.data.o,ov_SC03_007_jr_80159C84.o,tail9.data.o,ov_SC03_007_jr_8015A3C8.o,tail10.data.o,ov_SC03_007_jr_8015AE2C.o,tail11.data.o,ov_SC03_007_jr_8015C32C.o,tail12.data.o,ov_SC03_007_jr_8016AB6C.o,tail13.data.o,ov_SC03_007_jr_801734BC.o,tail14.data.o,ov_SC03_007_jr_80178D40.o,tail15.data.o,ov_SC03_007_jr_8017A4AC.o,tail16.data.o,ov_SC03_007_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_007/ov_SC03_007_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_007/ov_SC03_007_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_007/ov_SC03_007_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1047,7 +1047,7 @@ ov_SC03_010_ELF := $(ov_SC03_010_OUT).elf ov_SC03_010_MAPFILE := $(ov_SC03_010_OUT).map ov_SC03_010_LD_SCRIPT := $(ov_SC03_010_OUT).ld ov_SC03_010_SPLAT_YAML := config/splat.ov_SC03_010.yaml -ov_SC03_010_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_010_jr_8012ACE0.o,tail2.data.o,ov_SC03_010_jr_801380E0.o,tail3.data.o,ov_SC03_010_jr_8013F350.o,tail4.data.o,ov_SC03_010_jr_8013FFD8.o,tail5.data.o,ov_SC03_010_jr_80140608.o,tail6.data.o,ov_SC03_010_jr_8015444C.o,tail7.data.o,ov_SC03_010_jr_80154C24.o,ov_SC03_010_jr_801588CC.o,tail8.data.o,ov_SC03_010_jr_80159C84.o,tail9.data.o,ov_SC03_010_jr_8015A3C8.o,tail10.data.o,ov_SC03_010_jr_8015AE2C.o,tail11.data.o,ov_SC03_010_jr_8015C32C.o,tail12.data.o,ov_SC03_010_jr_8016AB6C.o,tail13.data.o,ov_SC03_010_jr_801734BC.o,tail14.data.o,ov_SC03_010_jr_80178D40.o,tail15.data.o,ov_SC03_010_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_010_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_010_jr_8012ACE0.o,tail2.data.o,ov_SC03_010_jr_801380E0.o,tail3.data.o,ov_SC03_010_jr_8013F350.o,tail4.data.o,ov_SC03_010_jr_8013FFD8.o,tail5.data.o,ov_SC03_010_jr_80140608.o,tail6.data.o,ov_SC03_010_jr_8015444C.o,tail7.data.o,ov_SC03_010_jr_80154C24.o,ov_SC03_010_jr_801588CC.o,tail8.data.o,ov_SC03_010_jr_80159C84.o,tail9.data.o,ov_SC03_010_jr_8015A3C8.o,tail10.data.o,ov_SC03_010_jr_8015AE2C.o,tail11.data.o,ov_SC03_010_jr_8015C32C.o,tail12.data.o,ov_SC03_010_jr_8016AB6C.o,tail13.data.o,ov_SC03_010_jr_801734BC.o,tail14.data.o,ov_SC03_010_jr_80178D40.o,tail15.data.o,ov_SC03_010_jr_8017A4AC.o,tail16.data.o,ov_SC03_010_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_010/ov_SC03_010_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_010/ov_SC03_010_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_010/ov_SC03_010_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1074,7 +1074,7 @@ ov_SC03_011_ELF := $(ov_SC03_011_OUT).elf ov_SC03_011_MAPFILE := $(ov_SC03_011_OUT).map ov_SC03_011_LD_SCRIPT := $(ov_SC03_011_OUT).ld ov_SC03_011_SPLAT_YAML := config/splat.ov_SC03_011.yaml -ov_SC03_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_011_jr_8012ACE0.o,tail2.data.o,ov_SC03_011_jr_801380E0.o,tail3.data.o,ov_SC03_011_jr_8013F350.o,tail4.data.o,ov_SC03_011_jr_80140608.o,tail5.data.o,ov_SC03_011_jr_8015444C.o,tail6.data.o,ov_SC03_011_jr_80154C24.o,ov_SC03_011_jr_801588CC.o,tail7.data.o,ov_SC03_011_jr_80159C84.o,tail8.data.o,ov_SC03_011_jr_8015A3C8.o,tail9.data.o,ov_SC03_011_jr_8015AE2C.o,tail10.data.o,ov_SC03_011_jr_8015C32C.o,tail11.data.o,ov_SC03_011_jr_8016AB6C.o,tail12.data.o,ov_SC03_011_jr_801734BC.o,tail13.data.o,ov_SC03_011_jr_80178D40.o,tail14.data.o,ov_SC03_011_jr_8017A4AC.o,tail15.data.o,ov_SC03_011_jr_8017C730.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_011_jr_8012ACE0.o,tail2.data.o,ov_SC03_011_jr_801380E0.o,tail3.data.o,ov_SC03_011_jr_8013F350.o,tail4.data.o,ov_SC03_011_jr_80140608.o,tail5.data.o,ov_SC03_011_jr_8015444C.o,tail6.data.o,ov_SC03_011_jr_80154C24.o,ov_SC03_011_jr_801588CC.o,tail7.data.o,ov_SC03_011_jr_80159C84.o,tail8.data.o,ov_SC03_011_jr_8015A3C8.o,tail9.data.o,ov_SC03_011_jr_8015AE2C.o,tail10.data.o,ov_SC03_011_jr_8015C32C.o,tail11.data.o,ov_SC03_011_jr_8016AB6C.o,tail12.data.o,ov_SC03_011_jr_801734BC.o,tail13.data.o,ov_SC03_011_jr_80178D40.o,tail14.data.o,ov_SC03_011_jr_8017A4AC.o,tail15.data.o,ov_SC03_011_jr_8017AE2C.o,ov_SC03_011_jr_8017C730.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_011/ov_SC03_011_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_011/ov_SC03_011_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_011/ov_SC03_011_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1101,7 +1101,7 @@ ov_SC03_012_ELF := $(ov_SC03_012_OUT).elf ov_SC03_012_MAPFILE := $(ov_SC03_012_OUT).map ov_SC03_012_LD_SCRIPT := $(ov_SC03_012_OUT).ld ov_SC03_012_SPLAT_YAML := config/splat.ov_SC03_012.yaml -ov_SC03_012_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_012_jr_8012ACE0.o,tail2.data.o,ov_SC03_012_jr_801380E0.o,tail3.data.o,ov_SC03_012_jr_8013F350.o,tail4.data.o,ov_SC03_012_jr_8013FFD8.o,tail5.data.o,ov_SC03_012_jr_80140608.o,tail6.data.o,ov_SC03_012_jr_8015444C.o,tail7.data.o,ov_SC03_012_jr_80154C24.o,ov_SC03_012_jr_801588CC.o,tail8.data.o,ov_SC03_012_jr_80159C84.o,tail9.data.o,ov_SC03_012_jr_8015A3C8.o,tail10.data.o,ov_SC03_012_jr_8015AE2C.o,tail11.data.o,ov_SC03_012_jr_8015C32C.o,tail12.data.o,ov_SC03_012_jr_8016AB6C.o,tail13.data.o,ov_SC03_012_jr_801734BC.o,tail14.data.o,ov_SC03_012_jr_80178D40.o,tail15.data.o,ov_SC03_012_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_012_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_012_jr_8012ACE0.o,tail2.data.o,ov_SC03_012_jr_801380E0.o,tail3.data.o,ov_SC03_012_jr_8013F350.o,tail4.data.o,ov_SC03_012_jr_8013FFD8.o,tail5.data.o,ov_SC03_012_jr_80140608.o,tail6.data.o,ov_SC03_012_jr_8015444C.o,tail7.data.o,ov_SC03_012_jr_80154C24.o,ov_SC03_012_jr_801588CC.o,tail8.data.o,ov_SC03_012_jr_80159C84.o,tail9.data.o,ov_SC03_012_jr_8015A3C8.o,tail10.data.o,ov_SC03_012_jr_8015AE2C.o,tail11.data.o,ov_SC03_012_jr_8015C32C.o,tail12.data.o,ov_SC03_012_jr_8016AB6C.o,tail13.data.o,ov_SC03_012_jr_801734BC.o,tail14.data.o,ov_SC03_012_jr_80178D40.o,tail15.data.o,ov_SC03_012_jr_8017A4AC.o,tail16.data.o,ov_SC03_012_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_012/ov_SC03_012_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_012/ov_SC03_012_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_012/ov_SC03_012_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1128,7 +1128,7 @@ ov_SC03_013_ELF := $(ov_SC03_013_OUT).elf ov_SC03_013_MAPFILE := $(ov_SC03_013_OUT).map ov_SC03_013_LD_SCRIPT := $(ov_SC03_013_OUT).ld ov_SC03_013_SPLAT_YAML := config/splat.ov_SC03_013.yaml -ov_SC03_013_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_013_jr_8012ACE0.o,tail2.data.o,ov_SC03_013_jr_801380E0.o,tail3.data.o,ov_SC03_013_jr_8013F350.o,tail4.data.o,ov_SC03_013_jr_8013FFD8.o,tail5.data.o,ov_SC03_013_jr_80140608.o,tail6.data.o,ov_SC03_013_jr_8015444C.o,tail7.data.o,ov_SC03_013_jr_80154C24.o,ov_SC03_013_jr_801588CC.o,tail8.data.o,ov_SC03_013_jr_80159C84.o,tail9.data.o,ov_SC03_013_jr_8015A3C8.o,tail10.data.o,ov_SC03_013_jr_8015AE2C.o,tail11.data.o,ov_SC03_013_jr_8015C32C.o,tail12.data.o,ov_SC03_013_jr_8016AB6C.o,tail13.data.o,ov_SC03_013_jr_801734BC.o,tail14.data.o,ov_SC03_013_jr_80178D40.o,tail15.data.o,ov_SC03_013_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_013_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_013_jr_8012ACE0.o,tail2.data.o,ov_SC03_013_jr_801380E0.o,tail3.data.o,ov_SC03_013_jr_8013F350.o,tail4.data.o,ov_SC03_013_jr_8013FFD8.o,tail5.data.o,ov_SC03_013_jr_80140608.o,tail6.data.o,ov_SC03_013_jr_8015444C.o,tail7.data.o,ov_SC03_013_jr_80154C24.o,ov_SC03_013_jr_801588CC.o,tail8.data.o,ov_SC03_013_jr_80159C84.o,tail9.data.o,ov_SC03_013_jr_8015A3C8.o,tail10.data.o,ov_SC03_013_jr_8015AE2C.o,tail11.data.o,ov_SC03_013_jr_8015C32C.o,tail12.data.o,ov_SC03_013_jr_8016AB6C.o,tail13.data.o,ov_SC03_013_jr_801734BC.o,tail14.data.o,ov_SC03_013_jr_80178D40.o,tail15.data.o,ov_SC03_013_jr_8017A4AC.o,tail16.data.o,ov_SC03_013_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_013/ov_SC03_013_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_013/ov_SC03_013_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_013/ov_SC03_013_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1155,7 +1155,7 @@ ov_SC03_014_ELF := $(ov_SC03_014_OUT).elf ov_SC03_014_MAPFILE := $(ov_SC03_014_OUT).map ov_SC03_014_LD_SCRIPT := $(ov_SC03_014_OUT).ld ov_SC03_014_SPLAT_YAML := config/splat.ov_SC03_014.yaml -ov_SC03_014_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_014_jr_8012ACE0.o,tail2.data.o,ov_SC03_014_jr_801380E0.o,tail3.data.o,ov_SC03_014_jr_8013F350.o,tail4.data.o,ov_SC03_014_jr_8013FFD8.o,tail5.data.o,ov_SC03_014_jr_80140608.o,tail6.data.o,ov_SC03_014_jr_8015444C.o,tail7.data.o,ov_SC03_014_jr_80154C24.o,ov_SC03_014_jr_801588CC.o,tail8.data.o,ov_SC03_014_jr_80159C84.o,tail9.data.o,ov_SC03_014_jr_8015A3C8.o,tail10.data.o,ov_SC03_014_jr_8015AE2C.o,tail11.data.o,ov_SC03_014_jr_8015C32C.o,tail12.data.o,ov_SC03_014_jr_8016AB6C.o,tail13.data.o,ov_SC03_014_jr_801734BC.o,tail14.data.o,ov_SC03_014_jr_80178D40.o,tail15.data.o,ov_SC03_014_jr_8017A4AC.o,tail16.data.o,ov_SC03_014_jr_8017EB7C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_014_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_014_jr_8012ACE0.o,tail2.data.o,ov_SC03_014_jr_801380E0.o,tail3.data.o,ov_SC03_014_jr_8013F350.o,tail4.data.o,ov_SC03_014_jr_8013FFD8.o,tail5.data.o,ov_SC03_014_jr_80140608.o,tail6.data.o,ov_SC03_014_jr_8015444C.o,tail7.data.o,ov_SC03_014_jr_80154C24.o,ov_SC03_014_jr_801588CC.o,tail8.data.o,ov_SC03_014_jr_80159C84.o,tail9.data.o,ov_SC03_014_jr_8015A3C8.o,tail10.data.o,ov_SC03_014_jr_8015AE2C.o,tail11.data.o,ov_SC03_014_jr_8015C32C.o,tail12.data.o,ov_SC03_014_jr_8016AB6C.o,tail13.data.o,ov_SC03_014_jr_801734BC.o,tail14.data.o,ov_SC03_014_jr_80178D40.o,tail15.data.o,ov_SC03_014_jr_8017A4AC.o,tail16.data.o,ov_SC03_014_jr_8017AE2C.o,tail17.data.o,ov_SC03_014_jr_8017EB7C.o,tail18.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_014/ov_SC03_014_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1182,7 +1182,7 @@ ov_SC03_015_ELF := $(ov_SC03_015_OUT).elf ov_SC03_015_MAPFILE := $(ov_SC03_015_OUT).map ov_SC03_015_LD_SCRIPT := $(ov_SC03_015_OUT).ld ov_SC03_015_SPLAT_YAML := config/splat.ov_SC03_015.yaml -ov_SC03_015_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_015_jr_8012ACE0.o,tail2.data.o,ov_SC03_015_jr_801380E0.o,tail3.data.o,ov_SC03_015_jr_8013F350.o,tail4.data.o,ov_SC03_015_jr_8013FFD8.o,tail5.data.o,ov_SC03_015_jr_80140608.o,tail6.data.o,ov_SC03_015_jr_8015444C.o,tail7.data.o,ov_SC03_015_jr_80154C24.o,ov_SC03_015_jr_801588CC.o,tail8.data.o,ov_SC03_015_jr_80159C84.o,tail9.data.o,ov_SC03_015_jr_8015A3C8.o,tail10.data.o,ov_SC03_015_jr_8015AE2C.o,tail11.data.o,ov_SC03_015_jr_8015C32C.o,tail12.data.o,ov_SC03_015_jr_8016AB6C.o,tail13.data.o,ov_SC03_015_jr_801734BC.o,tail14.data.o,ov_SC03_015_jr_80178D40.o,tail15.data.o,ov_SC03_015_jr_8017A4AC.o,tail16.data.o,ov_SC03_015_jr_8017EB7C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_015_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_015_jr_8012ACE0.o,tail2.data.o,ov_SC03_015_jr_801380E0.o,tail3.data.o,ov_SC03_015_jr_8013F350.o,tail4.data.o,ov_SC03_015_jr_8013FFD8.o,tail5.data.o,ov_SC03_015_jr_80140608.o,tail6.data.o,ov_SC03_015_jr_8015444C.o,tail7.data.o,ov_SC03_015_jr_80154C24.o,ov_SC03_015_jr_801588CC.o,tail8.data.o,ov_SC03_015_jr_80159C84.o,tail9.data.o,ov_SC03_015_jr_8015A3C8.o,tail10.data.o,ov_SC03_015_jr_8015AE2C.o,tail11.data.o,ov_SC03_015_jr_8015C32C.o,tail12.data.o,ov_SC03_015_jr_8016AB6C.o,tail13.data.o,ov_SC03_015_jr_801734BC.o,tail14.data.o,ov_SC03_015_jr_80178D40.o,tail15.data.o,ov_SC03_015_jr_8017A4AC.o,tail16.data.o,ov_SC03_015_jr_8017AE2C.o,tail17.data.o,ov_SC03_015_jr_8017EB7C.o,tail18.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1209,7 +1209,7 @@ ov_SC03_023_ELF := $(ov_SC03_023_OUT).elf ov_SC03_023_MAPFILE := $(ov_SC03_023_OUT).map ov_SC03_023_LD_SCRIPT := $(ov_SC03_023_OUT).ld ov_SC03_023_SPLAT_YAML := config/splat.ov_SC03_023.yaml -ov_SC03_023_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_023_jr_8012ACE0.o,tail2.data.o,ov_SC03_023_jr_801380E0.o,tail3.data.o,ov_SC03_023_jr_8013F350.o,tail4.data.o,ov_SC03_023_jr_8013FFD8.o,tail5.data.o,ov_SC03_023_jr_80140608.o,tail6.data.o,ov_SC03_023_jr_8015444C.o,tail7.data.o,ov_SC03_023_jr_80154C24.o,ov_SC03_023_jr_801588CC.o,tail8.data.o,ov_SC03_023_jr_80159C84.o,tail9.data.o,ov_SC03_023_jr_8015A3C8.o,tail10.data.o,ov_SC03_023_jr_8015AE2C.o,tail11.data.o,ov_SC03_023_jr_8015C32C.o,tail12.data.o,ov_SC03_023_jr_8016AB6C.o,tail13.data.o,ov_SC03_023_jr_801734BC.o,tail14.data.o,ov_SC03_023_jr_80178D40.o,tail15.data.o,ov_SC03_023_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_023_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_023_jr_8012ACE0.o,tail2.data.o,ov_SC03_023_jr_801380E0.o,tail3.data.o,ov_SC03_023_jr_8013F350.o,tail4.data.o,ov_SC03_023_jr_8013FFD8.o,tail5.data.o,ov_SC03_023_jr_80140608.o,tail6.data.o,ov_SC03_023_jr_8015444C.o,tail7.data.o,ov_SC03_023_jr_80154C24.o,ov_SC03_023_jr_801588CC.o,tail8.data.o,ov_SC03_023_jr_80159C84.o,tail9.data.o,ov_SC03_023_jr_8015A3C8.o,tail10.data.o,ov_SC03_023_jr_8015AE2C.o,tail11.data.o,ov_SC03_023_jr_8015C32C.o,tail12.data.o,ov_SC03_023_jr_8016AB6C.o,tail13.data.o,ov_SC03_023_jr_801734BC.o,tail14.data.o,ov_SC03_023_jr_80178D40.o,tail15.data.o,ov_SC03_023_jr_8017A4AC.o,tail16.data.o,ov_SC03_023_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_023/ov_SC03_023_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_023/ov_SC03_023_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_023/ov_SC03_023_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1236,7 +1236,7 @@ ov_SC03_024_ELF := $(ov_SC03_024_OUT).elf ov_SC03_024_MAPFILE := $(ov_SC03_024_OUT).map ov_SC03_024_LD_SCRIPT := $(ov_SC03_024_OUT).ld ov_SC03_024_SPLAT_YAML := config/splat.ov_SC03_024.yaml -ov_SC03_024_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_024_jr_8012ACE0.o,tail2.data.o,ov_SC03_024_jr_801380E0.o,tail3.data.o,ov_SC03_024_jr_8013F350.o,tail4.data.o,ov_SC03_024_jr_8013FFD8.o,tail5.data.o,ov_SC03_024_jr_80140608.o,tail6.data.o,ov_SC03_024_jr_8015444C.o,tail7.data.o,ov_SC03_024_jr_80154C24.o,ov_SC03_024_jr_801588CC.o,tail8.data.o,ov_SC03_024_jr_80159C84.o,tail9.data.o,ov_SC03_024_jr_8015A3C8.o,tail10.data.o,ov_SC03_024_jr_8015AE2C.o,tail11.data.o,ov_SC03_024_jr_8015C32C.o,tail12.data.o,ov_SC03_024_jr_8016AB6C.o,tail13.data.o,ov_SC03_024_jr_801734BC.o,tail14.data.o,ov_SC03_024_jr_80178D40.o,tail15.data.o,ov_SC03_024_jr_8017A4AC.o,tail16.data.o,ov_SC03_024_jr_8017DF84.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_024_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_024_jr_8012ACE0.o,tail2.data.o,ov_SC03_024_jr_801380E0.o,tail3.data.o,ov_SC03_024_jr_8013F350.o,tail4.data.o,ov_SC03_024_jr_8013FFD8.o,tail5.data.o,ov_SC03_024_jr_80140608.o,tail6.data.o,ov_SC03_024_jr_8015444C.o,tail7.data.o,ov_SC03_024_jr_80154C24.o,ov_SC03_024_jr_801588CC.o,tail8.data.o,ov_SC03_024_jr_80159C84.o,tail9.data.o,ov_SC03_024_jr_8015A3C8.o,tail10.data.o,ov_SC03_024_jr_8015AE2C.o,tail11.data.o,ov_SC03_024_jr_8015C32C.o,tail12.data.o,ov_SC03_024_jr_8016AB6C.o,tail13.data.o,ov_SC03_024_jr_801734BC.o,tail14.data.o,ov_SC03_024_jr_80178D40.o,tail15.data.o,ov_SC03_024_jr_8017A4AC.o,tail16.data.o,ov_SC03_024_jr_8017AE2C.o,tail17.data.o,ov_SC03_024_jr_8017DF84.o,tail18.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_024/ov_SC03_024_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_024/ov_SC03_024_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_024/ov_SC03_024_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1263,7 +1263,7 @@ ov_SC03_028_ELF := $(ov_SC03_028_OUT).elf ov_SC03_028_MAPFILE := $(ov_SC03_028_OUT).map ov_SC03_028_LD_SCRIPT := $(ov_SC03_028_OUT).ld ov_SC03_028_SPLAT_YAML := config/splat.ov_SC03_028.yaml -ov_SC03_028_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_028_jr_8012ACE0.o,tail2.data.o,ov_SC03_028_jr_801380E0.o,tail3.data.o,ov_SC03_028_jr_8013F350.o,tail4.data.o,ov_SC03_028_jr_8013FFD8.o,tail5.data.o,ov_SC03_028_jr_80140608.o,tail6.data.o,ov_SC03_028_jr_8015444C.o,tail7.data.o,ov_SC03_028_jr_80154C24.o,ov_SC03_028_jr_801588CC.o,tail8.data.o,ov_SC03_028_jr_80159C84.o,tail9.data.o,ov_SC03_028_jr_8015A3C8.o,tail10.data.o,ov_SC03_028_jr_8015AE2C.o,tail11.data.o,ov_SC03_028_jr_8015C32C.o,tail12.data.o,ov_SC03_028_jr_8016AB6C.o,tail13.data.o,ov_SC03_028_jr_801734BC.o,tail14.data.o,ov_SC03_028_jr_80178D40.o,tail15.data.o,ov_SC03_028_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_028_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_028_jr_8012ACE0.o,tail2.data.o,ov_SC03_028_jr_801380E0.o,tail3.data.o,ov_SC03_028_jr_8013F350.o,tail4.data.o,ov_SC03_028_jr_8013FFD8.o,tail5.data.o,ov_SC03_028_jr_80140608.o,tail6.data.o,ov_SC03_028_jr_8015444C.o,tail7.data.o,ov_SC03_028_jr_80154C24.o,ov_SC03_028_jr_801588CC.o,tail8.data.o,ov_SC03_028_jr_80159C84.o,tail9.data.o,ov_SC03_028_jr_8015A3C8.o,tail10.data.o,ov_SC03_028_jr_8015AE2C.o,tail11.data.o,ov_SC03_028_jr_8015C32C.o,tail12.data.o,ov_SC03_028_jr_8016AB6C.o,tail13.data.o,ov_SC03_028_jr_801734BC.o,tail14.data.o,ov_SC03_028_jr_80178D40.o,tail15.data.o,ov_SC03_028_jr_8017A4AC.o,tail16.data.o,ov_SC03_028_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_028/ov_SC03_028_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_028/ov_SC03_028_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_028/ov_SC03_028_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1290,7 +1290,7 @@ ov_SC03_029_ELF := $(ov_SC03_029_OUT).elf ov_SC03_029_MAPFILE := $(ov_SC03_029_OUT).map ov_SC03_029_LD_SCRIPT := $(ov_SC03_029_OUT).ld ov_SC03_029_SPLAT_YAML := config/splat.ov_SC03_029.yaml -ov_SC03_029_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_029_jr_8012ACE0.o,tail2.data.o,ov_SC03_029_jr_801380E0.o,tail3.data.o,ov_SC03_029_jr_8013F350.o,tail4.data.o,ov_SC03_029_jr_8013FFD8.o,tail5.data.o,ov_SC03_029_jr_80140608.o,tail6.data.o,ov_SC03_029_jr_8015444C.o,tail7.data.o,ov_SC03_029_jr_80154C24.o,ov_SC03_029_jr_801588CC.o,tail8.data.o,ov_SC03_029_jr_80159C84.o,tail9.data.o,ov_SC03_029_jr_8015A3C8.o,tail10.data.o,ov_SC03_029_jr_8015AE2C.o,tail11.data.o,ov_SC03_029_jr_8015C32C.o,tail12.data.o,ov_SC03_029_jr_8016AB6C.o,tail13.data.o,ov_SC03_029_jr_801734BC.o,tail14.data.o,ov_SC03_029_jr_80178D40.o,tail15.data.o,ov_SC03_029_jr_8017A4AC.o,tail16.data.o,ov_SC03_029_jr_8017DC70.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_029_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_029_jr_8012ACE0.o,tail2.data.o,ov_SC03_029_jr_801380E0.o,tail3.data.o,ov_SC03_029_jr_8013F350.o,tail4.data.o,ov_SC03_029_jr_8013FFD8.o,tail5.data.o,ov_SC03_029_jr_80140608.o,tail6.data.o,ov_SC03_029_jr_8015444C.o,tail7.data.o,ov_SC03_029_jr_80154C24.o,ov_SC03_029_jr_801588CC.o,tail8.data.o,ov_SC03_029_jr_80159C84.o,tail9.data.o,ov_SC03_029_jr_8015A3C8.o,tail10.data.o,ov_SC03_029_jr_8015AE2C.o,tail11.data.o,ov_SC03_029_jr_8015C32C.o,tail12.data.o,ov_SC03_029_jr_8016AB6C.o,tail13.data.o,ov_SC03_029_jr_801734BC.o,tail14.data.o,ov_SC03_029_jr_80178D40.o,tail15.data.o,ov_SC03_029_jr_8017A4AC.o,tail16.data.o,ov_SC03_029_jr_8017AE2C.o,ov_SC03_029_jr_8017DC70.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_029/ov_SC03_029_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_029/ov_SC03_029_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_029/ov_SC03_029_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1317,7 +1317,7 @@ ov_SC03_030_ELF := $(ov_SC03_030_OUT).elf ov_SC03_030_MAPFILE := $(ov_SC03_030_OUT).map ov_SC03_030_LD_SCRIPT := $(ov_SC03_030_OUT).ld ov_SC03_030_SPLAT_YAML := config/splat.ov_SC03_030.yaml -ov_SC03_030_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_030_jr_8012ACE0.o,tail2.data.o,ov_SC03_030_jr_801380E0.o,tail3.data.o,ov_SC03_030_jr_8013F350.o,tail4.data.o,ov_SC03_030_jr_80140608.o,tail5.data.o,ov_SC03_030_jr_8015444C.o,tail6.data.o,ov_SC03_030_jr_80154C24.o,ov_SC03_030_jr_801588CC.o,tail7.data.o,ov_SC03_030_jr_80159C84.o,tail8.data.o,ov_SC03_030_jr_8015A3C8.o,tail9.data.o,ov_SC03_030_jr_8015AE2C.o,tail10.data.o,ov_SC03_030_jr_8015C32C.o,tail11.data.o,ov_SC03_030_jr_8016AB6C.o,tail12.data.o,ov_SC03_030_jr_801734BC.o,tail13.data.o,ov_SC03_030_jr_80178D40.o,tail14.data.o,ov_SC03_030_jr_8017A4AC.o,tail15.data.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_030_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_030_jr_8012ACE0.o,tail2.data.o,ov_SC03_030_jr_801380E0.o,tail3.data.o,ov_SC03_030_jr_8013F350.o,tail4.data.o,ov_SC03_030_jr_80140608.o,tail5.data.o,ov_SC03_030_jr_8015444C.o,tail6.data.o,ov_SC03_030_jr_80154C24.o,ov_SC03_030_jr_801588CC.o,tail7.data.o,ov_SC03_030_jr_80159C84.o,tail8.data.o,ov_SC03_030_jr_8015A3C8.o,tail9.data.o,ov_SC03_030_jr_8015AE2C.o,tail10.data.o,ov_SC03_030_jr_8015C32C.o,tail11.data.o,ov_SC03_030_jr_8016AB6C.o,tail12.data.o,ov_SC03_030_jr_801734BC.o,tail13.data.o,ov_SC03_030_jr_80178D40.o,tail14.data.o,ov_SC03_030_jr_8017A4AC.o,tail15.data.o,ov_SC03_030_jr_8017AE2C.o,tail16.data.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_030/ov_SC03_030_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_030/ov_SC03_030_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_030/ov_SC03_030_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1344,7 +1344,7 @@ ov_SC03_031_ELF := $(ov_SC03_031_OUT).elf ov_SC03_031_MAPFILE := $(ov_SC03_031_OUT).map ov_SC03_031_LD_SCRIPT := $(ov_SC03_031_OUT).ld ov_SC03_031_SPLAT_YAML := config/splat.ov_SC03_031.yaml -ov_SC03_031_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_031_jr_8012ACE0.o,tail2.data.o,ov_SC03_031_jr_801380E0.o,tail3.data.o,ov_SC03_031_jr_8013F350.o,tail4.data.o,ov_SC03_031_jr_8013FFD8.o,tail5.data.o,ov_SC03_031_jr_80140608.o,tail6.data.o,ov_SC03_031_jr_8015444C.o,tail7.data.o,ov_SC03_031_jr_80154C24.o,ov_SC03_031_jr_801588CC.o,tail8.data.o,ov_SC03_031_jr_80159C84.o,tail9.data.o,ov_SC03_031_jr_8015A3C8.o,tail10.data.o,ov_SC03_031_jr_8015AE2C.o,tail11.data.o,ov_SC03_031_jr_8015C32C.o,tail12.data.o,ov_SC03_031_jr_8016AB6C.o,tail13.data.o,ov_SC03_031_jr_801734BC.o,tail14.data.o,ov_SC03_031_jr_80178D40.o,tail15.data.o,ov_SC03_031_jr_8017A4AC.o,tail16.data.o,ov_SC03_031_jr_8017DB5C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_031_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_031_jr_8012ACE0.o,tail2.data.o,ov_SC03_031_jr_801380E0.o,tail3.data.o,ov_SC03_031_jr_8013F350.o,tail4.data.o,ov_SC03_031_jr_8013FFD8.o,tail5.data.o,ov_SC03_031_jr_80140608.o,tail6.data.o,ov_SC03_031_jr_8015444C.o,tail7.data.o,ov_SC03_031_jr_80154C24.o,ov_SC03_031_jr_801588CC.o,tail8.data.o,ov_SC03_031_jr_80159C84.o,tail9.data.o,ov_SC03_031_jr_8015A3C8.o,tail10.data.o,ov_SC03_031_jr_8015AE2C.o,tail11.data.o,ov_SC03_031_jr_8015C32C.o,tail12.data.o,ov_SC03_031_jr_8016AB6C.o,tail13.data.o,ov_SC03_031_jr_801734BC.o,tail14.data.o,ov_SC03_031_jr_80178D40.o,tail15.data.o,ov_SC03_031_jr_8017A4AC.o,tail16.data.o,ov_SC03_031_jr_8017AE2C.o,ov_SC03_031_jr_8017DB5C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_031/ov_SC03_031_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_031/ov_SC03_031_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_031/ov_SC03_031_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1371,7 +1371,7 @@ ov_SC03_089_ELF := $(ov_SC03_089_OUT).elf ov_SC03_089_MAPFILE := $(ov_SC03_089_OUT).map ov_SC03_089_LD_SCRIPT := $(ov_SC03_089_OUT).ld ov_SC03_089_SPLAT_YAML := config/splat.ov_SC03_089.yaml -ov_SC03_089_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_089_jr_8012ACE0.o,tail2.data.o,ov_SC03_089_jr_801380E0.o,tail3.data.o,ov_SC03_089_jr_8013F350.o,tail4.data.o,ov_SC03_089_jr_8013FFD8.o,tail5.data.o,ov_SC03_089_jr_80140608.o,tail6.data.o,ov_SC03_089_jr_8015444C.o,tail7.data.o,ov_SC03_089_jr_80154C24.o,ov_SC03_089_jr_801588CC.o,tail8.data.o,ov_SC03_089_jr_80159C84.o,tail9.data.o,ov_SC03_089_jr_8015A3C8.o,tail10.data.o,ov_SC03_089_jr_8015AE2C.o,tail11.data.o,ov_SC03_089_jr_8015C32C.o,tail12.data.o,ov_SC03_089_jr_8016AB6C.o,tail13.data.o,ov_SC03_089_jr_801734BC.o,tail14.data.o,ov_SC03_089_jr_80178D40.o,tail15.data.o,ov_SC03_089_jr_8017A4AC.o,tail16.data.o,ov_SC03_089_jr_8017CA80.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_089_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_089_jr_8012ACE0.o,tail2.data.o,ov_SC03_089_jr_801380E0.o,tail3.data.o,ov_SC03_089_jr_8013F350.o,tail4.data.o,ov_SC03_089_jr_8013FFD8.o,tail5.data.o,ov_SC03_089_jr_80140608.o,tail6.data.o,ov_SC03_089_jr_8015444C.o,tail7.data.o,ov_SC03_089_jr_80154C24.o,ov_SC03_089_jr_801588CC.o,tail8.data.o,ov_SC03_089_jr_80159C84.o,tail9.data.o,ov_SC03_089_jr_8015A3C8.o,tail10.data.o,ov_SC03_089_jr_8015AE2C.o,tail11.data.o,ov_SC03_089_jr_8015C32C.o,tail12.data.o,ov_SC03_089_jr_8016AB6C.o,tail13.data.o,ov_SC03_089_jr_801734BC.o,tail14.data.o,ov_SC03_089_jr_80178D40.o,tail15.data.o,ov_SC03_089_jr_8017A4AC.o,tail16.data.o,ov_SC03_089_jr_8017AE2C.o,ov_SC03_089_jr_8017CA80.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_089/ov_SC03_089_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_089/ov_SC03_089_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_089/ov_SC03_089_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1398,7 +1398,7 @@ ov_SC03_090_ELF := $(ov_SC03_090_OUT).elf ov_SC03_090_MAPFILE := $(ov_SC03_090_OUT).map ov_SC03_090_LD_SCRIPT := $(ov_SC03_090_OUT).ld ov_SC03_090_SPLAT_YAML := config/splat.ov_SC03_090.yaml -ov_SC03_090_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_090_jr_8012ACE0.o,tail2.data.o,ov_SC03_090_jr_801380E0.o,tail3.data.o,ov_SC03_090_jr_8013F350.o,tail4.data.o,ov_SC03_090_jr_8013FFD8.o,tail5.data.o,ov_SC03_090_jr_80140608.o,tail6.data.o,ov_SC03_090_jr_8015444C.o,tail7.data.o,ov_SC03_090_jr_80154C24.o,ov_SC03_090_jr_801588CC.o,tail8.data.o,ov_SC03_090_jr_80159C84.o,tail9.data.o,ov_SC03_090_jr_8015A3C8.o,tail10.data.o,ov_SC03_090_jr_8015AE2C.o,tail11.data.o,ov_SC03_090_jr_8015C32C.o,tail12.data.o,ov_SC03_090_jr_8016AB6C.o,tail13.data.o,ov_SC03_090_jr_801734BC.o,tail14.data.o,ov_SC03_090_jr_80178D40.o,tail15.data.o,ov_SC03_090_jr_8017A4AC.o,tail16.data.o,ov_SC03_090_jr_8017CA80.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_090_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_090_jr_8012ACE0.o,tail2.data.o,ov_SC03_090_jr_801380E0.o,tail3.data.o,ov_SC03_090_jr_8013F350.o,tail4.data.o,ov_SC03_090_jr_8013FFD8.o,tail5.data.o,ov_SC03_090_jr_80140608.o,tail6.data.o,ov_SC03_090_jr_8015444C.o,tail7.data.o,ov_SC03_090_jr_80154C24.o,ov_SC03_090_jr_801588CC.o,tail8.data.o,ov_SC03_090_jr_80159C84.o,tail9.data.o,ov_SC03_090_jr_8015A3C8.o,tail10.data.o,ov_SC03_090_jr_8015AE2C.o,tail11.data.o,ov_SC03_090_jr_8015C32C.o,tail12.data.o,ov_SC03_090_jr_8016AB6C.o,tail13.data.o,ov_SC03_090_jr_801734BC.o,tail14.data.o,ov_SC03_090_jr_80178D40.o,tail15.data.o,ov_SC03_090_jr_8017A4AC.o,tail16.data.o,ov_SC03_090_jr_8017AE2C.o,ov_SC03_090_jr_8017CA80.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_090/ov_SC03_090_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_090/ov_SC03_090_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_090/ov_SC03_090_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1425,7 +1425,7 @@ ov_SC03_091_ELF := $(ov_SC03_091_OUT).elf ov_SC03_091_MAPFILE := $(ov_SC03_091_OUT).map ov_SC03_091_LD_SCRIPT := $(ov_SC03_091_OUT).ld ov_SC03_091_SPLAT_YAML := config/splat.ov_SC03_091.yaml -ov_SC03_091_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_091_jr_8012ACE0.o,tail2.data.o,ov_SC03_091_jr_801380E0.o,tail3.data.o,ov_SC03_091_jr_8013F350.o,tail4.data.o,ov_SC03_091_jr_8013FFD8.o,tail5.data.o,ov_SC03_091_jr_80140608.o,tail6.data.o,ov_SC03_091_jr_8015444C.o,tail7.data.o,ov_SC03_091_jr_80154C24.o,ov_SC03_091_jr_801588CC.o,tail8.data.o,ov_SC03_091_jr_80159C84.o,tail9.data.o,ov_SC03_091_jr_8015A3C8.o,tail10.data.o,ov_SC03_091_jr_8015AE2C.o,tail11.data.o,ov_SC03_091_jr_8015C32C.o,tail12.data.o,ov_SC03_091_jr_8016AB6C.o,tail13.data.o,ov_SC03_091_jr_801734BC.o,tail14.data.o,ov_SC03_091_jr_80178D40.o,tail15.data.o,ov_SC03_091_jr_8017A4AC.o,tail16.data.o,ov_SC03_091_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_091_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_091_jr_8012ACE0.o,tail2.data.o,ov_SC03_091_jr_801380E0.o,tail3.data.o,ov_SC03_091_jr_8013F350.o,tail4.data.o,ov_SC03_091_jr_8013FFD8.o,tail5.data.o,ov_SC03_091_jr_80140608.o,tail6.data.o,ov_SC03_091_jr_8015444C.o,tail7.data.o,ov_SC03_091_jr_80154C24.o,ov_SC03_091_jr_801588CC.o,tail8.data.o,ov_SC03_091_jr_80159C84.o,tail9.data.o,ov_SC03_091_jr_8015A3C8.o,tail10.data.o,ov_SC03_091_jr_8015AE2C.o,tail11.data.o,ov_SC03_091_jr_8015C32C.o,tail12.data.o,ov_SC03_091_jr_8016AB6C.o,tail13.data.o,ov_SC03_091_jr_801734BC.o,tail14.data.o,ov_SC03_091_jr_80178D40.o,tail15.data.o,ov_SC03_091_jr_8017A4AC.o,tail16.data.o,ov_SC03_091_jr_8017AE2C.o,ov_SC03_091_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_091/ov_SC03_091_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_091/ov_SC03_091_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_091/ov_SC03_091_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1452,7 +1452,7 @@ ov_SC03_092_ELF := $(ov_SC03_092_OUT).elf ov_SC03_092_MAPFILE := $(ov_SC03_092_OUT).map ov_SC03_092_LD_SCRIPT := $(ov_SC03_092_OUT).ld ov_SC03_092_SPLAT_YAML := config/splat.ov_SC03_092.yaml -ov_SC03_092_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_092_jr_8012ACE0.o,tail2.data.o,ov_SC03_092_jr_801380E0.o,tail3.data.o,ov_SC03_092_jr_8013F350.o,tail4.data.o,ov_SC03_092_jr_8013FFD8.o,tail5.data.o,ov_SC03_092_jr_80140608.o,tail6.data.o,ov_SC03_092_jr_8015444C.o,tail7.data.o,ov_SC03_092_jr_80154C24.o,ov_SC03_092_jr_801588CC.o,tail8.data.o,ov_SC03_092_jr_80159C84.o,tail9.data.o,ov_SC03_092_jr_8015A3C8.o,tail10.data.o,ov_SC03_092_jr_8015AE2C.o,tail11.data.o,ov_SC03_092_jr_8015C32C.o,tail12.data.o,ov_SC03_092_jr_8016AB6C.o,tail13.data.o,ov_SC03_092_jr_801734BC.o,tail14.data.o,ov_SC03_092_jr_80178D40.o,tail15.data.o,ov_SC03_092_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_092_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_092_jr_8012ACE0.o,tail2.data.o,ov_SC03_092_jr_801380E0.o,tail3.data.o,ov_SC03_092_jr_8013F350.o,tail4.data.o,ov_SC03_092_jr_8013FFD8.o,tail5.data.o,ov_SC03_092_jr_80140608.o,tail6.data.o,ov_SC03_092_jr_8015444C.o,tail7.data.o,ov_SC03_092_jr_80154C24.o,ov_SC03_092_jr_801588CC.o,tail8.data.o,ov_SC03_092_jr_80159C84.o,tail9.data.o,ov_SC03_092_jr_8015A3C8.o,tail10.data.o,ov_SC03_092_jr_8015AE2C.o,tail11.data.o,ov_SC03_092_jr_8015C32C.o,tail12.data.o,ov_SC03_092_jr_8016AB6C.o,tail13.data.o,ov_SC03_092_jr_801734BC.o,tail14.data.o,ov_SC03_092_jr_80178D40.o,tail15.data.o,ov_SC03_092_jr_8017A4AC.o,tail16.data.o,ov_SC03_092_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_092/ov_SC03_092_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_092/ov_SC03_092_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_092/ov_SC03_092_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1479,7 +1479,7 @@ ov_SC03_093_ELF := $(ov_SC03_093_OUT).elf ov_SC03_093_MAPFILE := $(ov_SC03_093_OUT).map ov_SC03_093_LD_SCRIPT := $(ov_SC03_093_OUT).ld ov_SC03_093_SPLAT_YAML := config/splat.ov_SC03_093.yaml -ov_SC03_093_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_093_jr_8012ACE0.o,tail2.data.o,ov_SC03_093_jr_801380E0.o,tail3.data.o,ov_SC03_093_jr_8013F350.o,tail4.data.o,ov_SC03_093_jr_8013FFD8.o,tail5.data.o,ov_SC03_093_jr_80140608.o,tail6.data.o,ov_SC03_093_jr_8015444C.o,tail7.data.o,ov_SC03_093_jr_80154C24.o,ov_SC03_093_jr_801588CC.o,tail8.data.o,ov_SC03_093_jr_80159C84.o,tail9.data.o,ov_SC03_093_jr_8015A3C8.o,tail10.data.o,ov_SC03_093_jr_8015AE2C.o,tail11.data.o,ov_SC03_093_jr_8015C32C.o,tail12.data.o,ov_SC03_093_jr_8016AB6C.o,tail13.data.o,ov_SC03_093_jr_801734BC.o,tail14.data.o,ov_SC03_093_jr_80178D40.o,tail15.data.o,ov_SC03_093_jr_8017A4AC.o,tail16.data.o,ov_SC03_093_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_093_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_093_jr_8012ACE0.o,tail2.data.o,ov_SC03_093_jr_801380E0.o,tail3.data.o,ov_SC03_093_jr_8013F350.o,tail4.data.o,ov_SC03_093_jr_8013FFD8.o,tail5.data.o,ov_SC03_093_jr_80140608.o,tail6.data.o,ov_SC03_093_jr_8015444C.o,tail7.data.o,ov_SC03_093_jr_80154C24.o,ov_SC03_093_jr_801588CC.o,tail8.data.o,ov_SC03_093_jr_80159C84.o,tail9.data.o,ov_SC03_093_jr_8015A3C8.o,tail10.data.o,ov_SC03_093_jr_8015AE2C.o,tail11.data.o,ov_SC03_093_jr_8015C32C.o,tail12.data.o,ov_SC03_093_jr_8016AB6C.o,tail13.data.o,ov_SC03_093_jr_801734BC.o,tail14.data.o,ov_SC03_093_jr_80178D40.o,tail15.data.o,ov_SC03_093_jr_8017A4AC.o,tail16.data.o,ov_SC03_093_jr_8017AE2C.o,ov_SC03_093_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_093/ov_SC03_093_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_093/ov_SC03_093_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_093/ov_SC03_093_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1506,7 +1506,7 @@ ov_SC03_094_ELF := $(ov_SC03_094_OUT).elf ov_SC03_094_MAPFILE := $(ov_SC03_094_OUT).map ov_SC03_094_LD_SCRIPT := $(ov_SC03_094_OUT).ld ov_SC03_094_SPLAT_YAML := config/splat.ov_SC03_094.yaml -ov_SC03_094_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_094_jr_8012ACE0.o,tail2.data.o,ov_SC03_094_jr_801380E0.o,tail3.data.o,ov_SC03_094_jr_8013F350.o,tail4.data.o,ov_SC03_094_jr_8013FFD8.o,tail5.data.o,ov_SC03_094_jr_80140608.o,tail6.data.o,ov_SC03_094_jr_8015444C.o,tail7.data.o,ov_SC03_094_jr_80154C24.o,ov_SC03_094_jr_801588CC.o,tail8.data.o,ov_SC03_094_jr_80159C84.o,tail9.data.o,ov_SC03_094_jr_8015A3C8.o,tail10.data.o,ov_SC03_094_jr_8015AE2C.o,tail11.data.o,ov_SC03_094_jr_8015C32C.o,tail12.data.o,ov_SC03_094_jr_8016AB6C.o,tail13.data.o,ov_SC03_094_jr_801734BC.o,tail14.data.o,ov_SC03_094_jr_80178D40.o,tail15.data.o,ov_SC03_094_jr_8017A4AC.o,tail16.data.o,ov_SC03_094_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_094_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_094_jr_8012ACE0.o,tail2.data.o,ov_SC03_094_jr_801380E0.o,tail3.data.o,ov_SC03_094_jr_8013F350.o,tail4.data.o,ov_SC03_094_jr_8013FFD8.o,tail5.data.o,ov_SC03_094_jr_80140608.o,tail6.data.o,ov_SC03_094_jr_8015444C.o,tail7.data.o,ov_SC03_094_jr_80154C24.o,ov_SC03_094_jr_801588CC.o,tail8.data.o,ov_SC03_094_jr_80159C84.o,tail9.data.o,ov_SC03_094_jr_8015A3C8.o,tail10.data.o,ov_SC03_094_jr_8015AE2C.o,tail11.data.o,ov_SC03_094_jr_8015C32C.o,tail12.data.o,ov_SC03_094_jr_8016AB6C.o,tail13.data.o,ov_SC03_094_jr_801734BC.o,tail14.data.o,ov_SC03_094_jr_80178D40.o,tail15.data.o,ov_SC03_094_jr_8017A4AC.o,tail16.data.o,ov_SC03_094_jr_8017AE2C.o,ov_SC03_094_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_094/ov_SC03_094_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_094/ov_SC03_094_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_094/ov_SC03_094_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1533,7 +1533,7 @@ ov_SC03_095_ELF := $(ov_SC03_095_OUT).elf ov_SC03_095_MAPFILE := $(ov_SC03_095_OUT).map ov_SC03_095_LD_SCRIPT := $(ov_SC03_095_OUT).ld ov_SC03_095_SPLAT_YAML := config/splat.ov_SC03_095.yaml -ov_SC03_095_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_095_jr_8012ACE0.o,tail2.data.o,ov_SC03_095_jr_801380E0.o,tail3.data.o,ov_SC03_095_jr_8013F350.o,tail4.data.o,ov_SC03_095_jr_8013FFD8.o,tail5.data.o,ov_SC03_095_jr_80140608.o,tail6.data.o,ov_SC03_095_jr_8015444C.o,tail7.data.o,ov_SC03_095_jr_80154C24.o,ov_SC03_095_jr_801588CC.o,tail8.data.o,ov_SC03_095_jr_80159C84.o,tail9.data.o,ov_SC03_095_jr_8015A3C8.o,tail10.data.o,ov_SC03_095_jr_8015AE2C.o,tail11.data.o,ov_SC03_095_jr_8015C32C.o,tail12.data.o,ov_SC03_095_jr_8016AB6C.o,tail13.data.o,ov_SC03_095_jr_801734BC.o,tail14.data.o,ov_SC03_095_jr_80178D40.o,tail15.data.o,ov_SC03_095_jr_8017A4AC.o,tail16.data.o,ov_SC03_095_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_095_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_095_jr_8012ACE0.o,tail2.data.o,ov_SC03_095_jr_801380E0.o,tail3.data.o,ov_SC03_095_jr_8013F350.o,tail4.data.o,ov_SC03_095_jr_8013FFD8.o,tail5.data.o,ov_SC03_095_jr_80140608.o,tail6.data.o,ov_SC03_095_jr_8015444C.o,tail7.data.o,ov_SC03_095_jr_80154C24.o,ov_SC03_095_jr_801588CC.o,tail8.data.o,ov_SC03_095_jr_80159C84.o,tail9.data.o,ov_SC03_095_jr_8015A3C8.o,tail10.data.o,ov_SC03_095_jr_8015AE2C.o,tail11.data.o,ov_SC03_095_jr_8015C32C.o,tail12.data.o,ov_SC03_095_jr_8016AB6C.o,tail13.data.o,ov_SC03_095_jr_801734BC.o,tail14.data.o,ov_SC03_095_jr_80178D40.o,tail15.data.o,ov_SC03_095_jr_8017A4AC.o,tail16.data.o,ov_SC03_095_jr_8017AE2C.o,ov_SC03_095_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_095/ov_SC03_095_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_095/ov_SC03_095_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_095/ov_SC03_095_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1560,7 +1560,7 @@ ov_SC03_096_ELF := $(ov_SC03_096_OUT).elf ov_SC03_096_MAPFILE := $(ov_SC03_096_OUT).map ov_SC03_096_LD_SCRIPT := $(ov_SC03_096_OUT).ld ov_SC03_096_SPLAT_YAML := config/splat.ov_SC03_096.yaml -ov_SC03_096_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_096_jr_8012ACE0.o,tail2.data.o,ov_SC03_096_jr_801380E0.o,tail3.data.o,ov_SC03_096_jr_8013F350.o,tail4.data.o,ov_SC03_096_jr_8013FFD8.o,tail5.data.o,ov_SC03_096_jr_80140608.o,tail6.data.o,ov_SC03_096_jr_8015444C.o,tail7.data.o,ov_SC03_096_jr_80154C24.o,ov_SC03_096_jr_801588CC.o,tail8.data.o,ov_SC03_096_jr_80159C84.o,tail9.data.o,ov_SC03_096_jr_8015A3C8.o,tail10.data.o,ov_SC03_096_jr_8015AE2C.o,tail11.data.o,ov_SC03_096_jr_8015C32C.o,tail12.data.o,ov_SC03_096_jr_8016AB6C.o,tail13.data.o,ov_SC03_096_jr_801734BC.o,tail14.data.o,ov_SC03_096_jr_80178D40.o,tail15.data.o,ov_SC03_096_jr_8017A4AC.o,tail16.data.o,ov_SC03_096_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_096_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_096_jr_8012ACE0.o,tail2.data.o,ov_SC03_096_jr_801380E0.o,tail3.data.o,ov_SC03_096_jr_8013F350.o,tail4.data.o,ov_SC03_096_jr_8013FFD8.o,tail5.data.o,ov_SC03_096_jr_80140608.o,tail6.data.o,ov_SC03_096_jr_8015444C.o,tail7.data.o,ov_SC03_096_jr_80154C24.o,ov_SC03_096_jr_801588CC.o,tail8.data.o,ov_SC03_096_jr_80159C84.o,tail9.data.o,ov_SC03_096_jr_8015A3C8.o,tail10.data.o,ov_SC03_096_jr_8015AE2C.o,tail11.data.o,ov_SC03_096_jr_8015C32C.o,tail12.data.o,ov_SC03_096_jr_8016AB6C.o,tail13.data.o,ov_SC03_096_jr_801734BC.o,tail14.data.o,ov_SC03_096_jr_80178D40.o,tail15.data.o,ov_SC03_096_jr_8017A4AC.o,tail16.data.o,ov_SC03_096_jr_8017AE2C.o,ov_SC03_096_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_096/ov_SC03_096_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_096/ov_SC03_096_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_096/ov_SC03_096_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1587,7 +1587,7 @@ ov_SC03_097_ELF := $(ov_SC03_097_OUT).elf ov_SC03_097_MAPFILE := $(ov_SC03_097_OUT).map ov_SC03_097_LD_SCRIPT := $(ov_SC03_097_OUT).ld ov_SC03_097_SPLAT_YAML := config/splat.ov_SC03_097.yaml -ov_SC03_097_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_097_jr_8012ACE0.o,tail2.data.o,ov_SC03_097_jr_801380E0.o,tail3.data.o,ov_SC03_097_jr_8013F350.o,tail4.data.o,ov_SC03_097_jr_8013FFD8.o,tail5.data.o,ov_SC03_097_jr_80140608.o,tail6.data.o,ov_SC03_097_jr_8015444C.o,tail7.data.o,ov_SC03_097_jr_80154C24.o,ov_SC03_097_jr_801588CC.o,tail8.data.o,ov_SC03_097_jr_80159C84.o,tail9.data.o,ov_SC03_097_jr_8015A3C8.o,tail10.data.o,ov_SC03_097_jr_8015AE2C.o,tail11.data.o,ov_SC03_097_jr_8015C32C.o,tail12.data.o,ov_SC03_097_jr_8016AB6C.o,tail13.data.o,ov_SC03_097_jr_801734BC.o,tail14.data.o,ov_SC03_097_jr_80178D40.o,tail15.data.o,ov_SC03_097_jr_8017A4AC.o,tail16.data.o,ov_SC03_097_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_097_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_097_jr_8012ACE0.o,tail2.data.o,ov_SC03_097_jr_801380E0.o,tail3.data.o,ov_SC03_097_jr_8013F350.o,tail4.data.o,ov_SC03_097_jr_8013FFD8.o,tail5.data.o,ov_SC03_097_jr_80140608.o,tail6.data.o,ov_SC03_097_jr_8015444C.o,tail7.data.o,ov_SC03_097_jr_80154C24.o,ov_SC03_097_jr_801588CC.o,tail8.data.o,ov_SC03_097_jr_80159C84.o,tail9.data.o,ov_SC03_097_jr_8015A3C8.o,tail10.data.o,ov_SC03_097_jr_8015AE2C.o,tail11.data.o,ov_SC03_097_jr_8015C32C.o,tail12.data.o,ov_SC03_097_jr_8016AB6C.o,tail13.data.o,ov_SC03_097_jr_801734BC.o,tail14.data.o,ov_SC03_097_jr_80178D40.o,tail15.data.o,ov_SC03_097_jr_8017A4AC.o,tail16.data.o,ov_SC03_097_jr_8017AE2C.o,ov_SC03_097_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_097/ov_SC03_097_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_097/ov_SC03_097_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_097/ov_SC03_097_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1614,7 +1614,7 @@ ov_SC03_098_ELF := $(ov_SC03_098_OUT).elf ov_SC03_098_MAPFILE := $(ov_SC03_098_OUT).map ov_SC03_098_LD_SCRIPT := $(ov_SC03_098_OUT).ld ov_SC03_098_SPLAT_YAML := config/splat.ov_SC03_098.yaml -ov_SC03_098_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_098_jr_8012ACE0.o,tail2.data.o,ov_SC03_098_jr_801380E0.o,tail3.data.o,ov_SC03_098_jr_8013F350.o,tail4.data.o,ov_SC03_098_jr_8013FFD8.o,tail5.data.o,ov_SC03_098_jr_80140608.o,tail6.data.o,ov_SC03_098_jr_8015444C.o,tail7.data.o,ov_SC03_098_jr_80154C24.o,ov_SC03_098_jr_801588CC.o,tail8.data.o,ov_SC03_098_jr_80159C84.o,tail9.data.o,ov_SC03_098_jr_8015A3C8.o,tail10.data.o,ov_SC03_098_jr_8015AE2C.o,tail11.data.o,ov_SC03_098_jr_8015C32C.o,tail12.data.o,ov_SC03_098_jr_8016AB6C.o,tail13.data.o,ov_SC03_098_jr_801734BC.o,tail14.data.o,ov_SC03_098_jr_80178D40.o,tail15.data.o,ov_SC03_098_jr_8017A4AC.o,tail16.data.o,ov_SC03_098_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_098_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_098_jr_8012ACE0.o,tail2.data.o,ov_SC03_098_jr_801380E0.o,tail3.data.o,ov_SC03_098_jr_8013F350.o,tail4.data.o,ov_SC03_098_jr_8013FFD8.o,tail5.data.o,ov_SC03_098_jr_80140608.o,tail6.data.o,ov_SC03_098_jr_8015444C.o,tail7.data.o,ov_SC03_098_jr_80154C24.o,ov_SC03_098_jr_801588CC.o,tail8.data.o,ov_SC03_098_jr_80159C84.o,tail9.data.o,ov_SC03_098_jr_8015A3C8.o,tail10.data.o,ov_SC03_098_jr_8015AE2C.o,tail11.data.o,ov_SC03_098_jr_8015C32C.o,tail12.data.o,ov_SC03_098_jr_8016AB6C.o,tail13.data.o,ov_SC03_098_jr_801734BC.o,tail14.data.o,ov_SC03_098_jr_80178D40.o,tail15.data.o,ov_SC03_098_jr_8017A4AC.o,tail16.data.o,ov_SC03_098_jr_8017AE2C.o,ov_SC03_098_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_098/ov_SC03_098_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_098/ov_SC03_098_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_098/ov_SC03_098_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1641,7 +1641,7 @@ ov_SC03_099_ELF := $(ov_SC03_099_OUT).elf ov_SC03_099_MAPFILE := $(ov_SC03_099_OUT).map ov_SC03_099_LD_SCRIPT := $(ov_SC03_099_OUT).ld ov_SC03_099_SPLAT_YAML := config/splat.ov_SC03_099.yaml -ov_SC03_099_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_099_jr_8012ACE0.o,tail2.data.o,ov_SC03_099_jr_801380E0.o,tail3.data.o,ov_SC03_099_jr_8013F350.o,tail4.data.o,ov_SC03_099_jr_8013FFD8.o,tail5.data.o,ov_SC03_099_jr_80140608.o,tail6.data.o,ov_SC03_099_jr_8015444C.o,tail7.data.o,ov_SC03_099_jr_80154C24.o,ov_SC03_099_jr_801588CC.o,tail8.data.o,ov_SC03_099_jr_80159C84.o,tail9.data.o,ov_SC03_099_jr_8015A3C8.o,tail10.data.o,ov_SC03_099_jr_8015AE2C.o,tail11.data.o,ov_SC03_099_jr_8015C32C.o,tail12.data.o,ov_SC03_099_jr_8016AB6C.o,tail13.data.o,ov_SC03_099_jr_801734BC.o,tail14.data.o,ov_SC03_099_jr_80178D40.o,tail15.data.o,ov_SC03_099_jr_8017A4AC.o,tail16.data.o,ov_SC03_099_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_099_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_099_jr_8012ACE0.o,tail2.data.o,ov_SC03_099_jr_801380E0.o,tail3.data.o,ov_SC03_099_jr_8013F350.o,tail4.data.o,ov_SC03_099_jr_8013FFD8.o,tail5.data.o,ov_SC03_099_jr_80140608.o,tail6.data.o,ov_SC03_099_jr_8015444C.o,tail7.data.o,ov_SC03_099_jr_80154C24.o,ov_SC03_099_jr_801588CC.o,tail8.data.o,ov_SC03_099_jr_80159C84.o,tail9.data.o,ov_SC03_099_jr_8015A3C8.o,tail10.data.o,ov_SC03_099_jr_8015AE2C.o,tail11.data.o,ov_SC03_099_jr_8015C32C.o,tail12.data.o,ov_SC03_099_jr_8016AB6C.o,tail13.data.o,ov_SC03_099_jr_801734BC.o,tail14.data.o,ov_SC03_099_jr_80178D40.o,tail15.data.o,ov_SC03_099_jr_8017A4AC.o,tail16.data.o,ov_SC03_099_jr_8017AE2C.o,ov_SC03_099_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_099/ov_SC03_099_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_099/ov_SC03_099_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_099/ov_SC03_099_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1668,7 +1668,7 @@ ov_SC03_100_ELF := $(ov_SC03_100_OUT).elf ov_SC03_100_MAPFILE := $(ov_SC03_100_OUT).map ov_SC03_100_LD_SCRIPT := $(ov_SC03_100_OUT).ld ov_SC03_100_SPLAT_YAML := config/splat.ov_SC03_100.yaml -ov_SC03_100_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_100_jr_8012ACE0.o,tail2.data.o,ov_SC03_100_jr_801380E0.o,tail3.data.o,ov_SC03_100_jr_8013F350.o,tail4.data.o,ov_SC03_100_jr_8013FFD8.o,tail5.data.o,ov_SC03_100_jr_80140608.o,tail6.data.o,ov_SC03_100_jr_8015444C.o,tail7.data.o,ov_SC03_100_jr_80154C24.o,ov_SC03_100_jr_801588CC.o,tail8.data.o,ov_SC03_100_jr_80159C84.o,tail9.data.o,ov_SC03_100_jr_8015A3C8.o,tail10.data.o,ov_SC03_100_jr_8015AE2C.o,tail11.data.o,ov_SC03_100_jr_8015C32C.o,tail12.data.o,ov_SC03_100_jr_8016AB6C.o,tail13.data.o,ov_SC03_100_jr_801734BC.o,tail14.data.o,ov_SC03_100_jr_80178D40.o,tail15.data.o,ov_SC03_100_jr_8017A4AC.o,tail16.data.o,ov_SC03_100_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_100_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_100_jr_8012ACE0.o,tail2.data.o,ov_SC03_100_jr_801380E0.o,tail3.data.o,ov_SC03_100_jr_8013F350.o,tail4.data.o,ov_SC03_100_jr_8013FFD8.o,tail5.data.o,ov_SC03_100_jr_80140608.o,tail6.data.o,ov_SC03_100_jr_8015444C.o,tail7.data.o,ov_SC03_100_jr_80154C24.o,ov_SC03_100_jr_801588CC.o,tail8.data.o,ov_SC03_100_jr_80159C84.o,tail9.data.o,ov_SC03_100_jr_8015A3C8.o,tail10.data.o,ov_SC03_100_jr_8015AE2C.o,tail11.data.o,ov_SC03_100_jr_8015C32C.o,tail12.data.o,ov_SC03_100_jr_8016AB6C.o,tail13.data.o,ov_SC03_100_jr_801734BC.o,tail14.data.o,ov_SC03_100_jr_80178D40.o,tail15.data.o,ov_SC03_100_jr_8017A4AC.o,tail16.data.o,ov_SC03_100_jr_8017AE2C.o,ov_SC03_100_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_100/ov_SC03_100_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_100/ov_SC03_100_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_100/ov_SC03_100_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1695,7 +1695,7 @@ ov_SC03_101_ELF := $(ov_SC03_101_OUT).elf ov_SC03_101_MAPFILE := $(ov_SC03_101_OUT).map ov_SC03_101_LD_SCRIPT := $(ov_SC03_101_OUT).ld ov_SC03_101_SPLAT_YAML := config/splat.ov_SC03_101.yaml -ov_SC03_101_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_101_jr_8012ACE0.o,tail2.data.o,ov_SC03_101_jr_801380E0.o,tail3.data.o,ov_SC03_101_jr_8013F350.o,tail4.data.o,ov_SC03_101_jr_8013FFD8.o,tail5.data.o,ov_SC03_101_jr_80140608.o,tail6.data.o,ov_SC03_101_jr_8015444C.o,tail7.data.o,ov_SC03_101_jr_80154C24.o,ov_SC03_101_jr_801588CC.o,tail8.data.o,ov_SC03_101_jr_80159C84.o,tail9.data.o,ov_SC03_101_jr_8015A3C8.o,tail10.data.o,ov_SC03_101_jr_8015AE2C.o,tail11.data.o,ov_SC03_101_jr_8015C32C.o,tail12.data.o,ov_SC03_101_jr_8016AB6C.o,tail13.data.o,ov_SC03_101_jr_801734BC.o,tail14.data.o,ov_SC03_101_jr_80178D40.o,tail15.data.o,ov_SC03_101_jr_8017A4AC.o,tail16.data.o,ov_SC03_101_jr_8017CA80.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_101_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_101_jr_8012ACE0.o,tail2.data.o,ov_SC03_101_jr_801380E0.o,tail3.data.o,ov_SC03_101_jr_8013F350.o,tail4.data.o,ov_SC03_101_jr_8013FFD8.o,tail5.data.o,ov_SC03_101_jr_80140608.o,tail6.data.o,ov_SC03_101_jr_8015444C.o,tail7.data.o,ov_SC03_101_jr_80154C24.o,ov_SC03_101_jr_801588CC.o,tail8.data.o,ov_SC03_101_jr_80159C84.o,tail9.data.o,ov_SC03_101_jr_8015A3C8.o,tail10.data.o,ov_SC03_101_jr_8015AE2C.o,tail11.data.o,ov_SC03_101_jr_8015C32C.o,tail12.data.o,ov_SC03_101_jr_8016AB6C.o,tail13.data.o,ov_SC03_101_jr_801734BC.o,tail14.data.o,ov_SC03_101_jr_80178D40.o,tail15.data.o,ov_SC03_101_jr_8017A4AC.o,tail16.data.o,ov_SC03_101_jr_8017AE2C.o,ov_SC03_101_jr_8017CA80.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_101/ov_SC03_101_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_101/ov_SC03_101_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_101/ov_SC03_101_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1722,7 +1722,7 @@ ov_SC03_102_ELF := $(ov_SC03_102_OUT).elf ov_SC03_102_MAPFILE := $(ov_SC03_102_OUT).map ov_SC03_102_LD_SCRIPT := $(ov_SC03_102_OUT).ld ov_SC03_102_SPLAT_YAML := config/splat.ov_SC03_102.yaml -ov_SC03_102_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_102_jr_8012ACE0.o,tail2.data.o,ov_SC03_102_jr_801380E0.o,tail3.data.o,ov_SC03_102_jr_8013F350.o,tail4.data.o,ov_SC03_102_jr_8013FFD8.o,tail5.data.o,ov_SC03_102_jr_80140608.o,tail6.data.o,ov_SC03_102_jr_8015444C.o,tail7.data.o,ov_SC03_102_jr_80154C24.o,ov_SC03_102_jr_801588CC.o,tail8.data.o,ov_SC03_102_jr_80159C84.o,tail9.data.o,ov_SC03_102_jr_8015A3C8.o,tail10.data.o,ov_SC03_102_jr_8015AE2C.o,tail11.data.o,ov_SC03_102_jr_8015C32C.o,tail12.data.o,ov_SC03_102_jr_8016AB6C.o,tail13.data.o,ov_SC03_102_jr_801734BC.o,tail14.data.o,ov_SC03_102_jr_80178D40.o,tail15.data.o,ov_SC03_102_jr_8017A4AC.o,tail16.data.o,ov_SC03_102_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_102_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_102_jr_8012ACE0.o,tail2.data.o,ov_SC03_102_jr_801380E0.o,tail3.data.o,ov_SC03_102_jr_8013F350.o,tail4.data.o,ov_SC03_102_jr_8013FFD8.o,tail5.data.o,ov_SC03_102_jr_80140608.o,tail6.data.o,ov_SC03_102_jr_8015444C.o,tail7.data.o,ov_SC03_102_jr_80154C24.o,ov_SC03_102_jr_801588CC.o,tail8.data.o,ov_SC03_102_jr_80159C84.o,tail9.data.o,ov_SC03_102_jr_8015A3C8.o,tail10.data.o,ov_SC03_102_jr_8015AE2C.o,tail11.data.o,ov_SC03_102_jr_8015C32C.o,tail12.data.o,ov_SC03_102_jr_8016AB6C.o,tail13.data.o,ov_SC03_102_jr_801734BC.o,tail14.data.o,ov_SC03_102_jr_80178D40.o,tail15.data.o,ov_SC03_102_jr_8017A4AC.o,tail16.data.o,ov_SC03_102_jr_8017AE2C.o,ov_SC03_102_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_102/ov_SC03_102_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_102/ov_SC03_102_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_102/ov_SC03_102_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1749,7 +1749,7 @@ ov_SC03_103_ELF := $(ov_SC03_103_OUT).elf ov_SC03_103_MAPFILE := $(ov_SC03_103_OUT).map ov_SC03_103_LD_SCRIPT := $(ov_SC03_103_OUT).ld ov_SC03_103_SPLAT_YAML := config/splat.ov_SC03_103.yaml -ov_SC03_103_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_103_jr_8012ACE0.o,tail2.data.o,ov_SC03_103_jr_801380E0.o,tail3.data.o,ov_SC03_103_jr_8013F350.o,tail4.data.o,ov_SC03_103_jr_80140608.o,tail5.data.o,ov_SC03_103_jr_8015444C.o,tail6.data.o,ov_SC03_103_jr_80154C24.o,ov_SC03_103_jr_801588CC.o,tail7.data.o,ov_SC03_103_jr_80159C84.o,tail8.data.o,ov_SC03_103_jr_8015A3C8.o,tail9.data.o,ov_SC03_103_jr_8015AE2C.o,tail10.data.o,ov_SC03_103_jr_8015C32C.o,tail11.data.o,ov_SC03_103_jr_8016AB6C.o,tail12.data.o,ov_SC03_103_jr_801734BC.o,tail13.data.o,ov_SC03_103_jr_80178D40.o,tail14.data.o,ov_SC03_103_jr_8017A4AC.o,tail15.data.o,ov_SC03_103_jr_8017C294.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_103_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_103_jr_8012ACE0.o,tail2.data.o,ov_SC03_103_jr_801380E0.o,tail3.data.o,ov_SC03_103_jr_8013F350.o,tail4.data.o,ov_SC03_103_jr_80140608.o,tail5.data.o,ov_SC03_103_jr_8015444C.o,tail6.data.o,ov_SC03_103_jr_80154C24.o,ov_SC03_103_jr_801588CC.o,tail7.data.o,ov_SC03_103_jr_80159C84.o,tail8.data.o,ov_SC03_103_jr_8015A3C8.o,tail9.data.o,ov_SC03_103_jr_8015AE2C.o,tail10.data.o,ov_SC03_103_jr_8015C32C.o,tail11.data.o,ov_SC03_103_jr_8016AB6C.o,tail12.data.o,ov_SC03_103_jr_801734BC.o,tail13.data.o,ov_SC03_103_jr_80178D40.o,tail14.data.o,ov_SC03_103_jr_8017A4AC.o,tail15.data.o,ov_SC03_103_jr_8017AE2C.o,ov_SC03_103_jr_8017C294.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_103/ov_SC03_103_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_103/ov_SC03_103_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_103/ov_SC03_103_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1776,7 +1776,7 @@ ov_SC03_104_ELF := $(ov_SC03_104_OUT).elf ov_SC03_104_MAPFILE := $(ov_SC03_104_OUT).map ov_SC03_104_LD_SCRIPT := $(ov_SC03_104_OUT).ld ov_SC03_104_SPLAT_YAML := config/splat.ov_SC03_104.yaml -ov_SC03_104_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_104_jr_8012ACE0.o,tail2.data.o,ov_SC03_104_jr_801380E0.o,tail3.data.o,ov_SC03_104_jr_8013F350.o,tail4.data.o,ov_SC03_104_jr_8013FFD8.o,tail5.data.o,ov_SC03_104_jr_80140608.o,tail6.data.o,ov_SC03_104_jr_8015444C.o,tail7.data.o,ov_SC03_104_jr_80154C24.o,ov_SC03_104_jr_801588CC.o,tail8.data.o,ov_SC03_104_jr_80159C84.o,tail9.data.o,ov_SC03_104_jr_8015A3C8.o,tail10.data.o,ov_SC03_104_jr_8015AE2C.o,tail11.data.o,ov_SC03_104_jr_8015C32C.o,tail12.data.o,ov_SC03_104_jr_8016AB6C.o,tail13.data.o,ov_SC03_104_jr_801734BC.o,tail14.data.o,ov_SC03_104_jr_80178D40.o,tail15.data.o,ov_SC03_104_jr_8017A4AC.o,tail16.data.o,ov_SC03_104_jr_8017CA80.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_104_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_104_jr_8012ACE0.o,tail2.data.o,ov_SC03_104_jr_801380E0.o,tail3.data.o,ov_SC03_104_jr_8013F350.o,tail4.data.o,ov_SC03_104_jr_8013FFD8.o,tail5.data.o,ov_SC03_104_jr_80140608.o,tail6.data.o,ov_SC03_104_jr_8015444C.o,tail7.data.o,ov_SC03_104_jr_80154C24.o,ov_SC03_104_jr_801588CC.o,tail8.data.o,ov_SC03_104_jr_80159C84.o,tail9.data.o,ov_SC03_104_jr_8015A3C8.o,tail10.data.o,ov_SC03_104_jr_8015AE2C.o,tail11.data.o,ov_SC03_104_jr_8015C32C.o,tail12.data.o,ov_SC03_104_jr_8016AB6C.o,tail13.data.o,ov_SC03_104_jr_801734BC.o,tail14.data.o,ov_SC03_104_jr_80178D40.o,tail15.data.o,ov_SC03_104_jr_8017A4AC.o,tail16.data.o,ov_SC03_104_jr_8017AE2C.o,ov_SC03_104_jr_8017CA80.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_104/ov_SC03_104_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_104/ov_SC03_104_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_104/ov_SC03_104_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1803,7 +1803,7 @@ ov_SC03_105_ELF := $(ov_SC03_105_OUT).elf ov_SC03_105_MAPFILE := $(ov_SC03_105_OUT).map ov_SC03_105_LD_SCRIPT := $(ov_SC03_105_OUT).ld ov_SC03_105_SPLAT_YAML := config/splat.ov_SC03_105.yaml -ov_SC03_105_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_105_jr_8012ACE0.o,tail2.data.o,ov_SC03_105_jr_801380E0.o,tail3.data.o,ov_SC03_105_jr_8013F350.o,tail4.data.o,ov_SC03_105_jr_8013FFD8.o,tail5.data.o,ov_SC03_105_jr_80140608.o,tail6.data.o,ov_SC03_105_jr_8015444C.o,tail7.data.o,ov_SC03_105_jr_80154C24.o,ov_SC03_105_jr_801588CC.o,tail8.data.o,ov_SC03_105_jr_80159C84.o,tail9.data.o,ov_SC03_105_jr_8015A3C8.o,tail10.data.o,ov_SC03_105_jr_8015AE2C.o,tail11.data.o,ov_SC03_105_jr_8015C32C.o,tail12.data.o,ov_SC03_105_jr_8016AB6C.o,tail13.data.o,ov_SC03_105_jr_801734BC.o,tail14.data.o,ov_SC03_105_jr_80178D40.o,tail15.data.o,ov_SC03_105_jr_8017A4AC.o,tail16.data.o,ov_SC03_105_jr_8017C8D0.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_105_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_105_jr_8012ACE0.o,tail2.data.o,ov_SC03_105_jr_801380E0.o,tail3.data.o,ov_SC03_105_jr_8013F350.o,tail4.data.o,ov_SC03_105_jr_8013FFD8.o,tail5.data.o,ov_SC03_105_jr_80140608.o,tail6.data.o,ov_SC03_105_jr_8015444C.o,tail7.data.o,ov_SC03_105_jr_80154C24.o,ov_SC03_105_jr_801588CC.o,tail8.data.o,ov_SC03_105_jr_80159C84.o,tail9.data.o,ov_SC03_105_jr_8015A3C8.o,tail10.data.o,ov_SC03_105_jr_8015AE2C.o,tail11.data.o,ov_SC03_105_jr_8015C32C.o,tail12.data.o,ov_SC03_105_jr_8016AB6C.o,tail13.data.o,ov_SC03_105_jr_801734BC.o,tail14.data.o,ov_SC03_105_jr_80178D40.o,tail15.data.o,ov_SC03_105_jr_8017A4AC.o,tail16.data.o,ov_SC03_105_jr_8017AE2C.o,tail17.data.o,ov_SC03_105_jr_8017C8D0.o,tail18.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_105/ov_SC03_105_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_105/ov_SC03_105_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_105/ov_SC03_105_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1830,7 +1830,7 @@ ov_SC03_108_ELF := $(ov_SC03_108_OUT).elf ov_SC03_108_MAPFILE := $(ov_SC03_108_OUT).map ov_SC03_108_LD_SCRIPT := $(ov_SC03_108_OUT).ld ov_SC03_108_SPLAT_YAML := config/splat.ov_SC03_108.yaml -ov_SC03_108_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_108_jr_8012ACE0.o,tail2.data.o,ov_SC03_108_jr_801380E0.o,tail3.data.o,ov_SC03_108_jr_8013F350.o,tail4.data.o,ov_SC03_108_jr_8013FFD8.o,tail5.data.o,ov_SC03_108_jr_80140608.o,tail6.data.o,ov_SC03_108_jr_8015444C.o,tail7.data.o,ov_SC03_108_jr_80154C24.o,ov_SC03_108_jr_801588CC.o,tail8.data.o,ov_SC03_108_jr_80159C84.o,tail9.data.o,ov_SC03_108_jr_8015A3C8.o,tail10.data.o,ov_SC03_108_jr_8015AE2C.o,tail11.data.o,ov_SC03_108_jr_8015C32C.o,tail12.data.o,ov_SC03_108_jr_8016AB6C.o,tail13.data.o,ov_SC03_108_jr_801734BC.o,tail14.data.o,ov_SC03_108_jr_80178D40.o,tail15.data.o,ov_SC03_108_jr_8017A4AC.o,tail16.data.o,ov_SC03_108_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_108_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_108_jr_8012ACE0.o,tail2.data.o,ov_SC03_108_jr_801380E0.o,tail3.data.o,ov_SC03_108_jr_8013F350.o,tail4.data.o,ov_SC03_108_jr_8013FFD8.o,tail5.data.o,ov_SC03_108_jr_80140608.o,tail6.data.o,ov_SC03_108_jr_8015444C.o,tail7.data.o,ov_SC03_108_jr_80154C24.o,ov_SC03_108_jr_801588CC.o,tail8.data.o,ov_SC03_108_jr_80159C84.o,tail9.data.o,ov_SC03_108_jr_8015A3C8.o,tail10.data.o,ov_SC03_108_jr_8015AE2C.o,tail11.data.o,ov_SC03_108_jr_8015C32C.o,tail12.data.o,ov_SC03_108_jr_8016AB6C.o,tail13.data.o,ov_SC03_108_jr_801734BC.o,tail14.data.o,ov_SC03_108_jr_80178D40.o,tail15.data.o,ov_SC03_108_jr_8017A4AC.o,tail16.data.o,ov_SC03_108_jr_8017AE2C.o,ov_SC03_108_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_108/ov_SC03_108_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_108/ov_SC03_108_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_108/ov_SC03_108_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1857,7 +1857,7 @@ ov_SC03_109_ELF := $(ov_SC03_109_OUT).elf ov_SC03_109_MAPFILE := $(ov_SC03_109_OUT).map ov_SC03_109_LD_SCRIPT := $(ov_SC03_109_OUT).ld ov_SC03_109_SPLAT_YAML := config/splat.ov_SC03_109.yaml -ov_SC03_109_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_109_jr_8012ACE0.o,tail2.data.o,ov_SC03_109_jr_801380E0.o,tail3.data.o,ov_SC03_109_jr_8013F350.o,tail4.data.o,ov_SC03_109_jr_8013FFD8.o,tail5.data.o,ov_SC03_109_jr_80140608.o,tail6.data.o,ov_SC03_109_jr_8015444C.o,tail7.data.o,ov_SC03_109_jr_80154C24.o,ov_SC03_109_jr_801588CC.o,tail8.data.o,ov_SC03_109_jr_80159C84.o,tail9.data.o,ov_SC03_109_jr_8015A3C8.o,tail10.data.o,ov_SC03_109_jr_8015AE2C.o,tail11.data.o,ov_SC03_109_jr_8015C32C.o,tail12.data.o,ov_SC03_109_jr_8016AB6C.o,tail13.data.o,ov_SC03_109_jr_801734BC.o,tail14.data.o,ov_SC03_109_jr_80178D40.o,tail15.data.o,ov_SC03_109_jr_8017A4AC.o,tail16.data.o,ov_SC03_109_jr_8017C180.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_109_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_109_jr_8012ACE0.o,tail2.data.o,ov_SC03_109_jr_801380E0.o,tail3.data.o,ov_SC03_109_jr_8013F350.o,tail4.data.o,ov_SC03_109_jr_8013FFD8.o,tail5.data.o,ov_SC03_109_jr_80140608.o,tail6.data.o,ov_SC03_109_jr_8015444C.o,tail7.data.o,ov_SC03_109_jr_80154C24.o,ov_SC03_109_jr_801588CC.o,tail8.data.o,ov_SC03_109_jr_80159C84.o,tail9.data.o,ov_SC03_109_jr_8015A3C8.o,tail10.data.o,ov_SC03_109_jr_8015AE2C.o,tail11.data.o,ov_SC03_109_jr_8015C32C.o,tail12.data.o,ov_SC03_109_jr_8016AB6C.o,tail13.data.o,ov_SC03_109_jr_801734BC.o,tail14.data.o,ov_SC03_109_jr_80178D40.o,tail15.data.o,ov_SC03_109_jr_8017A4AC.o,tail16.data.o,ov_SC03_109_jr_8017AE2C.o,ov_SC03_109_jr_8017C180.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_109/ov_SC03_109_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_109/ov_SC03_109_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_109/ov_SC03_109_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1884,7 +1884,7 @@ ov_SC03_110_ELF := $(ov_SC03_110_OUT).elf ov_SC03_110_MAPFILE := $(ov_SC03_110_OUT).map ov_SC03_110_LD_SCRIPT := $(ov_SC03_110_OUT).ld ov_SC03_110_SPLAT_YAML := config/splat.ov_SC03_110.yaml -ov_SC03_110_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_110_jr_8012ACE0.o,tail2.data.o,ov_SC03_110_jr_801380E0.o,tail3.data.o,ov_SC03_110_jr_8013F350.o,tail4.data.o,ov_SC03_110_jr_8013FFD8.o,tail5.data.o,ov_SC03_110_jr_80140608.o,tail6.data.o,ov_SC03_110_jr_8015444C.o,tail7.data.o,ov_SC03_110_jr_80154C24.o,ov_SC03_110_jr_801588CC.o,tail8.data.o,ov_SC03_110_jr_80159C84.o,tail9.data.o,ov_SC03_110_jr_8015A3C8.o,tail10.data.o,ov_SC03_110_jr_8015AE2C.o,tail11.data.o,ov_SC03_110_jr_8015C32C.o,tail12.data.o,ov_SC03_110_jr_8016AB6C.o,tail13.data.o,ov_SC03_110_jr_801734BC.o,tail14.data.o,ov_SC03_110_jr_80178D40.o,tail15.data.o,ov_SC03_110_jr_8017A4AC.o,tail16.data.o,ov_SC03_110_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_110_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_110_jr_8012ACE0.o,tail2.data.o,ov_SC03_110_jr_801380E0.o,tail3.data.o,ov_SC03_110_jr_8013F350.o,tail4.data.o,ov_SC03_110_jr_8013FFD8.o,tail5.data.o,ov_SC03_110_jr_80140608.o,tail6.data.o,ov_SC03_110_jr_8015444C.o,tail7.data.o,ov_SC03_110_jr_80154C24.o,ov_SC03_110_jr_801588CC.o,tail8.data.o,ov_SC03_110_jr_80159C84.o,tail9.data.o,ov_SC03_110_jr_8015A3C8.o,tail10.data.o,ov_SC03_110_jr_8015AE2C.o,tail11.data.o,ov_SC03_110_jr_8015C32C.o,tail12.data.o,ov_SC03_110_jr_8016AB6C.o,tail13.data.o,ov_SC03_110_jr_801734BC.o,tail14.data.o,ov_SC03_110_jr_80178D40.o,tail15.data.o,ov_SC03_110_jr_8017A4AC.o,tail16.data.o,ov_SC03_110_jr_8017AE2C.o,ov_SC03_110_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_110/ov_SC03_110_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_110/ov_SC03_110_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_110/ov_SC03_110_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1911,7 +1911,7 @@ ov_SC03_111_ELF := $(ov_SC03_111_OUT).elf ov_SC03_111_MAPFILE := $(ov_SC03_111_OUT).map ov_SC03_111_LD_SCRIPT := $(ov_SC03_111_OUT).ld ov_SC03_111_SPLAT_YAML := config/splat.ov_SC03_111.yaml -ov_SC03_111_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_111_jr_8012ACE0.o,tail2.data.o,ov_SC03_111_jr_801380E0.o,tail3.data.o,ov_SC03_111_jr_8013F350.o,tail4.data.o,ov_SC03_111_jr_8013FFD8.o,tail5.data.o,ov_SC03_111_jr_80140608.o,tail6.data.o,ov_SC03_111_jr_8015444C.o,tail7.data.o,ov_SC03_111_jr_80154C24.o,ov_SC03_111_jr_801588CC.o,tail8.data.o,ov_SC03_111_jr_80159C84.o,tail9.data.o,ov_SC03_111_jr_8015A3C8.o,tail10.data.o,ov_SC03_111_jr_8015AE2C.o,tail11.data.o,ov_SC03_111_jr_8015C32C.o,tail12.data.o,ov_SC03_111_jr_8016AB6C.o,tail13.data.o,ov_SC03_111_jr_801734BC.o,tail14.data.o,ov_SC03_111_jr_80178D40.o,tail15.data.o,ov_SC03_111_jr_8017A4AC.o,tail16.data.o,ov_SC03_111_jr_8017EC58.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_111_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_111_jr_8012ACE0.o,tail2.data.o,ov_SC03_111_jr_801380E0.o,tail3.data.o,ov_SC03_111_jr_8013F350.o,tail4.data.o,ov_SC03_111_jr_8013FFD8.o,tail5.data.o,ov_SC03_111_jr_80140608.o,tail6.data.o,ov_SC03_111_jr_8015444C.o,tail7.data.o,ov_SC03_111_jr_80154C24.o,ov_SC03_111_jr_801588CC.o,tail8.data.o,ov_SC03_111_jr_80159C84.o,tail9.data.o,ov_SC03_111_jr_8015A3C8.o,tail10.data.o,ov_SC03_111_jr_8015AE2C.o,tail11.data.o,ov_SC03_111_jr_8015C32C.o,tail12.data.o,ov_SC03_111_jr_8016AB6C.o,tail13.data.o,ov_SC03_111_jr_801734BC.o,tail14.data.o,ov_SC03_111_jr_80178D40.o,tail15.data.o,ov_SC03_111_jr_8017A4AC.o,tail16.data.o,ov_SC03_111_jr_8017AE2C.o,ov_SC03_111_jr_8017EC58.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_111/ov_SC03_111_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_111/ov_SC03_111_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_111/ov_SC03_111_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1938,7 +1938,7 @@ ov_SC03_112_ELF := $(ov_SC03_112_OUT).elf ov_SC03_112_MAPFILE := $(ov_SC03_112_OUT).map ov_SC03_112_LD_SCRIPT := $(ov_SC03_112_OUT).ld ov_SC03_112_SPLAT_YAML := config/splat.ov_SC03_112.yaml -ov_SC03_112_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_112_jr_8012ACE0.o,tail2.data.o,ov_SC03_112_jr_801380E0.o,tail3.data.o,ov_SC03_112_jr_8013F350.o,tail4.data.o,ov_SC03_112_jr_8013FFD8.o,tail5.data.o,ov_SC03_112_jr_80140608.o,tail6.data.o,ov_SC03_112_jr_8015444C.o,tail7.data.o,ov_SC03_112_jr_80154C24.o,ov_SC03_112_jr_801588CC.o,tail8.data.o,ov_SC03_112_jr_80159C84.o,tail9.data.o,ov_SC03_112_jr_8015A3C8.o,tail10.data.o,ov_SC03_112_jr_8015AE2C.o,tail11.data.o,ov_SC03_112_jr_8015C32C.o,tail12.data.o,ov_SC03_112_jr_8016AB6C.o,tail13.data.o,ov_SC03_112_jr_801734BC.o,tail14.data.o,ov_SC03_112_jr_80178D40.o,tail15.data.o,ov_SC03_112_jr_8017A4AC.o,tail16.data.o,ov_SC03_112_jr_8017C294.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_112_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_112_jr_8012ACE0.o,tail2.data.o,ov_SC03_112_jr_801380E0.o,tail3.data.o,ov_SC03_112_jr_8013F350.o,tail4.data.o,ov_SC03_112_jr_8013FFD8.o,tail5.data.o,ov_SC03_112_jr_80140608.o,tail6.data.o,ov_SC03_112_jr_8015444C.o,tail7.data.o,ov_SC03_112_jr_80154C24.o,ov_SC03_112_jr_801588CC.o,tail8.data.o,ov_SC03_112_jr_80159C84.o,tail9.data.o,ov_SC03_112_jr_8015A3C8.o,tail10.data.o,ov_SC03_112_jr_8015AE2C.o,tail11.data.o,ov_SC03_112_jr_8015C32C.o,tail12.data.o,ov_SC03_112_jr_8016AB6C.o,tail13.data.o,ov_SC03_112_jr_801734BC.o,tail14.data.o,ov_SC03_112_jr_80178D40.o,tail15.data.o,ov_SC03_112_jr_8017A4AC.o,tail16.data.o,ov_SC03_112_jr_8017AE2C.o,ov_SC03_112_jr_8017C294.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_112/ov_SC03_112_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_112/ov_SC03_112_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_112/ov_SC03_112_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1965,7 +1965,7 @@ ov_SC03_113_ELF := $(ov_SC03_113_OUT).elf ov_SC03_113_MAPFILE := $(ov_SC03_113_OUT).map ov_SC03_113_LD_SCRIPT := $(ov_SC03_113_OUT).ld ov_SC03_113_SPLAT_YAML := config/splat.ov_SC03_113.yaml -ov_SC03_113_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_113_jr_8012ACE0.o,tail2.data.o,ov_SC03_113_jr_801380E0.o,tail3.data.o,ov_SC03_113_jr_8013F350.o,tail4.data.o,ov_SC03_113_jr_8013FFD8.o,tail5.data.o,ov_SC03_113_jr_80140608.o,tail6.data.o,ov_SC03_113_jr_8015444C.o,tail7.data.o,ov_SC03_113_jr_80154C24.o,ov_SC03_113_jr_801588CC.o,tail8.data.o,ov_SC03_113_jr_80159C84.o,tail9.data.o,ov_SC03_113_jr_8015A3C8.o,tail10.data.o,ov_SC03_113_jr_8015AE2C.o,tail11.data.o,ov_SC03_113_jr_8015C32C.o,tail12.data.o,ov_SC03_113_jr_8016AB6C.o,tail13.data.o,ov_SC03_113_jr_801734BC.o,tail14.data.o,ov_SC03_113_jr_80178D40.o,tail15.data.o,ov_SC03_113_jr_8017A4AC.o,tail16.data.o,ov_SC03_113_jr_8017C294.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_113_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_113_jr_8012ACE0.o,tail2.data.o,ov_SC03_113_jr_801380E0.o,tail3.data.o,ov_SC03_113_jr_8013F350.o,tail4.data.o,ov_SC03_113_jr_8013FFD8.o,tail5.data.o,ov_SC03_113_jr_80140608.o,tail6.data.o,ov_SC03_113_jr_8015444C.o,tail7.data.o,ov_SC03_113_jr_80154C24.o,ov_SC03_113_jr_801588CC.o,tail8.data.o,ov_SC03_113_jr_80159C84.o,tail9.data.o,ov_SC03_113_jr_8015A3C8.o,tail10.data.o,ov_SC03_113_jr_8015AE2C.o,tail11.data.o,ov_SC03_113_jr_8015C32C.o,tail12.data.o,ov_SC03_113_jr_8016AB6C.o,tail13.data.o,ov_SC03_113_jr_801734BC.o,tail14.data.o,ov_SC03_113_jr_80178D40.o,tail15.data.o,ov_SC03_113_jr_8017A4AC.o,tail16.data.o,ov_SC03_113_jr_8017AE2C.o,ov_SC03_113_jr_8017C294.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_113/ov_SC03_113_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_113/ov_SC03_113_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_113/ov_SC03_113_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -1992,7 +1992,7 @@ ov_SC03_114_ELF := $(ov_SC03_114_OUT).elf ov_SC03_114_MAPFILE := $(ov_SC03_114_OUT).map ov_SC03_114_LD_SCRIPT := $(ov_SC03_114_OUT).ld ov_SC03_114_SPLAT_YAML := config/splat.ov_SC03_114.yaml -ov_SC03_114_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_114_jr_8012ACE0.o,tail2.data.o,ov_SC03_114_jr_801380E0.o,tail3.data.o,ov_SC03_114_jr_8013F350.o,tail4.data.o,ov_SC03_114_jr_8013FFD8.o,tail5.data.o,ov_SC03_114_jr_80140608.o,tail6.data.o,ov_SC03_114_jr_8015444C.o,tail7.data.o,ov_SC03_114_jr_80154C24.o,ov_SC03_114_jr_801588CC.o,tail8.data.o,ov_SC03_114_jr_80159C84.o,tail9.data.o,ov_SC03_114_jr_8015A3C8.o,tail10.data.o,ov_SC03_114_jr_8015AE2C.o,tail11.data.o,ov_SC03_114_jr_8015C32C.o,tail12.data.o,ov_SC03_114_jr_8016AB6C.o,tail13.data.o,ov_SC03_114_jr_801734BC.o,tail14.data.o,ov_SC03_114_jr_80178D40.o,tail15.data.o,ov_SC03_114_jr_8017A4AC.o,tail16.data.o,ov_SC03_114_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_114_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_114_jr_8012ACE0.o,tail2.data.o,ov_SC03_114_jr_801380E0.o,tail3.data.o,ov_SC03_114_jr_8013F350.o,tail4.data.o,ov_SC03_114_jr_8013FFD8.o,tail5.data.o,ov_SC03_114_jr_80140608.o,tail6.data.o,ov_SC03_114_jr_8015444C.o,tail7.data.o,ov_SC03_114_jr_80154C24.o,ov_SC03_114_jr_801588CC.o,tail8.data.o,ov_SC03_114_jr_80159C84.o,tail9.data.o,ov_SC03_114_jr_8015A3C8.o,tail10.data.o,ov_SC03_114_jr_8015AE2C.o,tail11.data.o,ov_SC03_114_jr_8015C32C.o,tail12.data.o,ov_SC03_114_jr_8016AB6C.o,tail13.data.o,ov_SC03_114_jr_801734BC.o,tail14.data.o,ov_SC03_114_jr_80178D40.o,tail15.data.o,ov_SC03_114_jr_8017A4AC.o,tail16.data.o,ov_SC03_114_jr_8017AE2C.o,ov_SC03_114_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_114/ov_SC03_114_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_114/ov_SC03_114_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_114/ov_SC03_114_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2019,7 +2019,7 @@ ov_SC03_115_ELF := $(ov_SC03_115_OUT).elf ov_SC03_115_MAPFILE := $(ov_SC03_115_OUT).map ov_SC03_115_LD_SCRIPT := $(ov_SC03_115_OUT).ld ov_SC03_115_SPLAT_YAML := config/splat.ov_SC03_115.yaml -ov_SC03_115_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_115_jr_8012ACE0.o,tail2.data.o,ov_SC03_115_jr_801380E0.o,tail3.data.o,ov_SC03_115_jr_8013F350.o,tail4.data.o,ov_SC03_115_jr_8013FFD8.o,tail5.data.o,ov_SC03_115_jr_80140608.o,tail6.data.o,ov_SC03_115_jr_8015444C.o,tail7.data.o,ov_SC03_115_jr_80154C24.o,ov_SC03_115_jr_801588CC.o,tail8.data.o,ov_SC03_115_jr_80159C84.o,tail9.data.o,ov_SC03_115_jr_8015A3C8.o,tail10.data.o,ov_SC03_115_jr_8015AE2C.o,tail11.data.o,ov_SC03_115_jr_8015C32C.o,tail12.data.o,ov_SC03_115_jr_8016AB6C.o,tail13.data.o,ov_SC03_115_jr_801734BC.o,tail14.data.o,ov_SC03_115_jr_80178D40.o,tail15.data.o,ov_SC03_115_jr_8017A4AC.o,tail16.data.o,ov_SC03_115_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_115_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_115_jr_8012ACE0.o,tail2.data.o,ov_SC03_115_jr_801380E0.o,tail3.data.o,ov_SC03_115_jr_8013F350.o,tail4.data.o,ov_SC03_115_jr_8013FFD8.o,tail5.data.o,ov_SC03_115_jr_80140608.o,tail6.data.o,ov_SC03_115_jr_8015444C.o,tail7.data.o,ov_SC03_115_jr_80154C24.o,ov_SC03_115_jr_801588CC.o,tail8.data.o,ov_SC03_115_jr_80159C84.o,tail9.data.o,ov_SC03_115_jr_8015A3C8.o,tail10.data.o,ov_SC03_115_jr_8015AE2C.o,tail11.data.o,ov_SC03_115_jr_8015C32C.o,tail12.data.o,ov_SC03_115_jr_8016AB6C.o,tail13.data.o,ov_SC03_115_jr_801734BC.o,tail14.data.o,ov_SC03_115_jr_80178D40.o,tail15.data.o,ov_SC03_115_jr_8017A4AC.o,tail16.data.o,ov_SC03_115_jr_8017AE2C.o,ov_SC03_115_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_115/ov_SC03_115_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_115/ov_SC03_115_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_115/ov_SC03_115_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2046,7 +2046,7 @@ ov_SC03_116_ELF := $(ov_SC03_116_OUT).elf ov_SC03_116_MAPFILE := $(ov_SC03_116_OUT).map ov_SC03_116_LD_SCRIPT := $(ov_SC03_116_OUT).ld ov_SC03_116_SPLAT_YAML := config/splat.ov_SC03_116.yaml -ov_SC03_116_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_116_jr_8012ACE0.o,tail2.data.o,ov_SC03_116_jr_801380E0.o,tail3.data.o,ov_SC03_116_jr_8013F350.o,tail4.data.o,ov_SC03_116_jr_8013FFD8.o,tail5.data.o,ov_SC03_116_jr_80140608.o,tail6.data.o,ov_SC03_116_jr_8015444C.o,tail7.data.o,ov_SC03_116_jr_80154C24.o,ov_SC03_116_jr_801588CC.o,tail8.data.o,ov_SC03_116_jr_80159C84.o,tail9.data.o,ov_SC03_116_jr_8015A3C8.o,tail10.data.o,ov_SC03_116_jr_8015AE2C.o,tail11.data.o,ov_SC03_116_jr_8015C32C.o,tail12.data.o,ov_SC03_116_jr_8016AB6C.o,tail13.data.o,ov_SC03_116_jr_801734BC.o,tail14.data.o,ov_SC03_116_jr_80178D40.o,tail15.data.o,ov_SC03_116_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_116_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_116_jr_8012ACE0.o,tail2.data.o,ov_SC03_116_jr_801380E0.o,tail3.data.o,ov_SC03_116_jr_8013F350.o,tail4.data.o,ov_SC03_116_jr_8013FFD8.o,tail5.data.o,ov_SC03_116_jr_80140608.o,tail6.data.o,ov_SC03_116_jr_8015444C.o,tail7.data.o,ov_SC03_116_jr_80154C24.o,ov_SC03_116_jr_801588CC.o,tail8.data.o,ov_SC03_116_jr_80159C84.o,tail9.data.o,ov_SC03_116_jr_8015A3C8.o,tail10.data.o,ov_SC03_116_jr_8015AE2C.o,tail11.data.o,ov_SC03_116_jr_8015C32C.o,tail12.data.o,ov_SC03_116_jr_8016AB6C.o,tail13.data.o,ov_SC03_116_jr_801734BC.o,tail14.data.o,ov_SC03_116_jr_80178D40.o,tail15.data.o,ov_SC03_116_jr_8017A4AC.o,tail16.data.o,ov_SC03_116_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_116/ov_SC03_116_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_116/ov_SC03_116_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_116/ov_SC03_116_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2073,7 +2073,7 @@ ov_SC03_117_ELF := $(ov_SC03_117_OUT).elf ov_SC03_117_MAPFILE := $(ov_SC03_117_OUT).map ov_SC03_117_LD_SCRIPT := $(ov_SC03_117_OUT).ld ov_SC03_117_SPLAT_YAML := config/splat.ov_SC03_117.yaml -ov_SC03_117_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_117_jr_8012ACE0.o,tail2.data.o,ov_SC03_117_jr_801380E0.o,tail3.data.o,ov_SC03_117_jr_8013F350.o,tail4.data.o,ov_SC03_117_jr_8013FFD8.o,tail5.data.o,ov_SC03_117_jr_80140608.o,tail6.data.o,ov_SC03_117_jr_8015444C.o,tail7.data.o,ov_SC03_117_jr_80154C24.o,ov_SC03_117_jr_801588CC.o,tail8.data.o,ov_SC03_117_jr_80159C84.o,tail9.data.o,ov_SC03_117_jr_8015A3C8.o,tail10.data.o,ov_SC03_117_jr_8015AE2C.o,tail11.data.o,ov_SC03_117_jr_8015C32C.o,tail12.data.o,ov_SC03_117_jr_8016AB6C.o,tail13.data.o,ov_SC03_117_jr_801734BC.o,tail14.data.o,ov_SC03_117_jr_80178D40.o,tail15.data.o,ov_SC03_117_jr_8017A4AC.o,tail16.data.o,ov_SC03_117_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_117_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_117_jr_8012ACE0.o,tail2.data.o,ov_SC03_117_jr_801380E0.o,tail3.data.o,ov_SC03_117_jr_8013F350.o,tail4.data.o,ov_SC03_117_jr_8013FFD8.o,tail5.data.o,ov_SC03_117_jr_80140608.o,tail6.data.o,ov_SC03_117_jr_8015444C.o,tail7.data.o,ov_SC03_117_jr_80154C24.o,ov_SC03_117_jr_801588CC.o,tail8.data.o,ov_SC03_117_jr_80159C84.o,tail9.data.o,ov_SC03_117_jr_8015A3C8.o,tail10.data.o,ov_SC03_117_jr_8015AE2C.o,tail11.data.o,ov_SC03_117_jr_8015C32C.o,tail12.data.o,ov_SC03_117_jr_8016AB6C.o,tail13.data.o,ov_SC03_117_jr_801734BC.o,tail14.data.o,ov_SC03_117_jr_80178D40.o,tail15.data.o,ov_SC03_117_jr_8017A4AC.o,tail16.data.o,ov_SC03_117_jr_8017AE2C.o,ov_SC03_117_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_117/ov_SC03_117_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_117/ov_SC03_117_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_117/ov_SC03_117_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2100,7 +2100,7 @@ ov_SC03_118_ELF := $(ov_SC03_118_OUT).elf ov_SC03_118_MAPFILE := $(ov_SC03_118_OUT).map ov_SC03_118_LD_SCRIPT := $(ov_SC03_118_OUT).ld ov_SC03_118_SPLAT_YAML := config/splat.ov_SC03_118.yaml -ov_SC03_118_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_118_jr_8012ACE0.o,tail2.data.o,ov_SC03_118_jr_801380E0.o,tail3.data.o,ov_SC03_118_jr_8013F350.o,tail4.data.o,ov_SC03_118_jr_8013FFD8.o,tail5.data.o,ov_SC03_118_jr_80140608.o,tail6.data.o,ov_SC03_118_jr_8015444C.o,tail7.data.o,ov_SC03_118_jr_80154C24.o,ov_SC03_118_jr_801588CC.o,tail8.data.o,ov_SC03_118_jr_80159C84.o,tail9.data.o,ov_SC03_118_jr_8015A3C8.o,tail10.data.o,ov_SC03_118_jr_8015AE2C.o,tail11.data.o,ov_SC03_118_jr_8015C32C.o,tail12.data.o,ov_SC03_118_jr_8016AB6C.o,tail13.data.o,ov_SC03_118_jr_801734BC.o,tail14.data.o,ov_SC03_118_jr_80178D40.o,tail15.data.o,ov_SC03_118_jr_8017A4AC.o,tail16.data.o,ov_SC03_118_jr_8017FB84.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_118_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_118_jr_8012ACE0.o,tail2.data.o,ov_SC03_118_jr_801380E0.o,tail3.data.o,ov_SC03_118_jr_8013F350.o,tail4.data.o,ov_SC03_118_jr_8013FFD8.o,tail5.data.o,ov_SC03_118_jr_80140608.o,tail6.data.o,ov_SC03_118_jr_8015444C.o,tail7.data.o,ov_SC03_118_jr_80154C24.o,ov_SC03_118_jr_801588CC.o,tail8.data.o,ov_SC03_118_jr_80159C84.o,tail9.data.o,ov_SC03_118_jr_8015A3C8.o,tail10.data.o,ov_SC03_118_jr_8015AE2C.o,tail11.data.o,ov_SC03_118_jr_8015C32C.o,tail12.data.o,ov_SC03_118_jr_8016AB6C.o,tail13.data.o,ov_SC03_118_jr_801734BC.o,tail14.data.o,ov_SC03_118_jr_80178D40.o,tail15.data.o,ov_SC03_118_jr_8017A4AC.o,tail16.data.o,ov_SC03_118_jr_8017AE2C.o,tail17.data.o,ov_SC03_118_jr_8017FB84.o,tail18.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_118/ov_SC03_118_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_118/ov_SC03_118_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_118/ov_SC03_118_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2127,7 +2127,7 @@ ov_SC03_119_ELF := $(ov_SC03_119_OUT).elf ov_SC03_119_MAPFILE := $(ov_SC03_119_OUT).map ov_SC03_119_LD_SCRIPT := $(ov_SC03_119_OUT).ld ov_SC03_119_SPLAT_YAML := config/splat.ov_SC03_119.yaml -ov_SC03_119_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_119_jr_8012ACE0.o,tail2.data.o,ov_SC03_119_jr_801380E0.o,tail3.data.o,ov_SC03_119_jr_8013F350.o,tail4.data.o,ov_SC03_119_jr_8013FFD8.o,tail5.data.o,ov_SC03_119_jr_80140608.o,tail6.data.o,ov_SC03_119_jr_8015444C.o,tail7.data.o,ov_SC03_119_jr_80154C24.o,ov_SC03_119_jr_801588CC.o,tail8.data.o,ov_SC03_119_jr_80159C84.o,tail9.data.o,ov_SC03_119_jr_8015A3C8.o,tail10.data.o,ov_SC03_119_jr_8015AE2C.o,tail11.data.o,ov_SC03_119_jr_8015C32C.o,tail12.data.o,ov_SC03_119_jr_8016AB6C.o,tail13.data.o,ov_SC03_119_jr_801734BC.o,tail14.data.o,ov_SC03_119_jr_80178D40.o,tail15.data.o,ov_SC03_119_jr_8017A4AC.o,tail16.data.o,ov_SC03_119_jr_8017FB84.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_119_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_119_jr_8012ACE0.o,tail2.data.o,ov_SC03_119_jr_801380E0.o,tail3.data.o,ov_SC03_119_jr_8013F350.o,tail4.data.o,ov_SC03_119_jr_8013FFD8.o,tail5.data.o,ov_SC03_119_jr_80140608.o,tail6.data.o,ov_SC03_119_jr_8015444C.o,tail7.data.o,ov_SC03_119_jr_80154C24.o,ov_SC03_119_jr_801588CC.o,tail8.data.o,ov_SC03_119_jr_80159C84.o,tail9.data.o,ov_SC03_119_jr_8015A3C8.o,tail10.data.o,ov_SC03_119_jr_8015AE2C.o,tail11.data.o,ov_SC03_119_jr_8015C32C.o,tail12.data.o,ov_SC03_119_jr_8016AB6C.o,tail13.data.o,ov_SC03_119_jr_801734BC.o,tail14.data.o,ov_SC03_119_jr_80178D40.o,tail15.data.o,ov_SC03_119_jr_8017A4AC.o,tail16.data.o,ov_SC03_119_jr_8017AE2C.o,tail17.data.o,ov_SC03_119_jr_8017FB84.o,tail18.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_119/ov_SC03_119_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_119/ov_SC03_119_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_119/ov_SC03_119_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2154,7 +2154,7 @@ ov_SC03_121_ELF := $(ov_SC03_121_OUT).elf ov_SC03_121_MAPFILE := $(ov_SC03_121_OUT).map ov_SC03_121_LD_SCRIPT := $(ov_SC03_121_OUT).ld ov_SC03_121_SPLAT_YAML := config/splat.ov_SC03_121.yaml -ov_SC03_121_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_121_jr_8012ACE0.o,tail2.data.o,ov_SC03_121_jr_801380E0.o,tail3.data.o,ov_SC03_121_jr_8013F350.o,tail4.data.o,ov_SC03_121_jr_8013FFD8.o,tail5.data.o,ov_SC03_121_jr_80140608.o,tail6.data.o,ov_SC03_121_jr_8015444C.o,tail7.data.o,ov_SC03_121_jr_80154C24.o,ov_SC03_121_jr_801588CC.o,tail8.data.o,ov_SC03_121_jr_80159C84.o,tail9.data.o,ov_SC03_121_jr_8015A3C8.o,tail10.data.o,ov_SC03_121_jr_8015AE2C.o,tail11.data.o,ov_SC03_121_jr_8015C32C.o,tail12.data.o,ov_SC03_121_jr_8016AB6C.o,tail13.data.o,ov_SC03_121_jr_801734BC.o,tail14.data.o,ov_SC03_121_jr_80178D40.o,tail15.data.o,ov_SC03_121_jr_8017A4AC.o,tail16.data.o,ov_SC03_121_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_121_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_121_jr_8012ACE0.o,tail2.data.o,ov_SC03_121_jr_801380E0.o,tail3.data.o,ov_SC03_121_jr_8013F350.o,tail4.data.o,ov_SC03_121_jr_8013FFD8.o,tail5.data.o,ov_SC03_121_jr_80140608.o,tail6.data.o,ov_SC03_121_jr_8015444C.o,tail7.data.o,ov_SC03_121_jr_80154C24.o,ov_SC03_121_jr_801588CC.o,tail8.data.o,ov_SC03_121_jr_80159C84.o,tail9.data.o,ov_SC03_121_jr_8015A3C8.o,tail10.data.o,ov_SC03_121_jr_8015AE2C.o,tail11.data.o,ov_SC03_121_jr_8015C32C.o,tail12.data.o,ov_SC03_121_jr_8016AB6C.o,tail13.data.o,ov_SC03_121_jr_801734BC.o,tail14.data.o,ov_SC03_121_jr_80178D40.o,tail15.data.o,ov_SC03_121_jr_8017A4AC.o,tail16.data.o,ov_SC03_121_jr_8017AE2C.o,ov_SC03_121_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_121/ov_SC03_121_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_121/ov_SC03_121_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_121/ov_SC03_121_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2181,7 +2181,7 @@ ov_SC03_124_ELF := $(ov_SC03_124_OUT).elf ov_SC03_124_MAPFILE := $(ov_SC03_124_OUT).map ov_SC03_124_LD_SCRIPT := $(ov_SC03_124_OUT).ld ov_SC03_124_SPLAT_YAML := config/splat.ov_SC03_124.yaml -ov_SC03_124_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_124_jr_8012ACE0.o,tail2.data.o,ov_SC03_124_jr_801380E0.o,tail3.data.o,ov_SC03_124_jr_8013F350.o,tail4.data.o,ov_SC03_124_jr_8013FFD8.o,tail5.data.o,ov_SC03_124_jr_80140608.o,tail6.data.o,ov_SC03_124_jr_8015444C.o,tail7.data.o,ov_SC03_124_jr_80154C24.o,ov_SC03_124_jr_801588CC.o,tail8.data.o,ov_SC03_124_jr_80159C84.o,tail9.data.o,ov_SC03_124_jr_8015A3C8.o,tail10.data.o,ov_SC03_124_jr_8015AE2C.o,tail11.data.o,ov_SC03_124_jr_8015C32C.o,tail12.data.o,ov_SC03_124_jr_8016AB6C.o,tail13.data.o,ov_SC03_124_jr_801734BC.o,tail14.data.o,ov_SC03_124_jr_80178D40.o,tail15.data.o,ov_SC03_124_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_124_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_124_jr_8012ACE0.o,tail2.data.o,ov_SC03_124_jr_801380E0.o,tail3.data.o,ov_SC03_124_jr_8013F350.o,tail4.data.o,ov_SC03_124_jr_8013FFD8.o,tail5.data.o,ov_SC03_124_jr_80140608.o,tail6.data.o,ov_SC03_124_jr_8015444C.o,tail7.data.o,ov_SC03_124_jr_80154C24.o,ov_SC03_124_jr_801588CC.o,tail8.data.o,ov_SC03_124_jr_80159C84.o,tail9.data.o,ov_SC03_124_jr_8015A3C8.o,tail10.data.o,ov_SC03_124_jr_8015AE2C.o,tail11.data.o,ov_SC03_124_jr_8015C32C.o,tail12.data.o,ov_SC03_124_jr_8016AB6C.o,tail13.data.o,ov_SC03_124_jr_801734BC.o,tail14.data.o,ov_SC03_124_jr_80178D40.o,tail15.data.o,ov_SC03_124_jr_8017A4AC.o,tail16.data.o,ov_SC03_124_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_124/ov_SC03_124_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_124/ov_SC03_124_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_124/ov_SC03_124_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2208,7 +2208,7 @@ ov_SC03_125_ELF := $(ov_SC03_125_OUT).elf ov_SC03_125_MAPFILE := $(ov_SC03_125_OUT).map ov_SC03_125_LD_SCRIPT := $(ov_SC03_125_OUT).ld ov_SC03_125_SPLAT_YAML := config/splat.ov_SC03_125.yaml -ov_SC03_125_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_125_jr_8012ACE0.o,tail2.data.o,ov_SC03_125_jr_801380E0.o,tail3.data.o,ov_SC03_125_jr_8013F350.o,tail4.data.o,ov_SC03_125_jr_8013FFD8.o,tail5.data.o,ov_SC03_125_jr_80140608.o,tail6.data.o,ov_SC03_125_jr_8015444C.o,tail7.data.o,ov_SC03_125_jr_80154C24.o,ov_SC03_125_jr_801588CC.o,tail8.data.o,ov_SC03_125_jr_80159C84.o,tail9.data.o,ov_SC03_125_jr_8015A3C8.o,tail10.data.o,ov_SC03_125_jr_8015AE2C.o,tail11.data.o,ov_SC03_125_jr_8015C32C.o,tail12.data.o,ov_SC03_125_jr_8016AB6C.o,tail13.data.o,ov_SC03_125_jr_801734BC.o,tail14.data.o,ov_SC03_125_jr_80178D40.o,tail15.data.o,ov_SC03_125_jr_8017A4AC.o,tail16.data.o,ov_SC03_125_jr_8017D604.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_125_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_125_jr_8012ACE0.o,tail2.data.o,ov_SC03_125_jr_801380E0.o,tail3.data.o,ov_SC03_125_jr_8013F350.o,tail4.data.o,ov_SC03_125_jr_8013FFD8.o,tail5.data.o,ov_SC03_125_jr_80140608.o,tail6.data.o,ov_SC03_125_jr_8015444C.o,tail7.data.o,ov_SC03_125_jr_80154C24.o,ov_SC03_125_jr_801588CC.o,tail8.data.o,ov_SC03_125_jr_80159C84.o,tail9.data.o,ov_SC03_125_jr_8015A3C8.o,tail10.data.o,ov_SC03_125_jr_8015AE2C.o,tail11.data.o,ov_SC03_125_jr_8015C32C.o,tail12.data.o,ov_SC03_125_jr_8016AB6C.o,tail13.data.o,ov_SC03_125_jr_801734BC.o,tail14.data.o,ov_SC03_125_jr_80178D40.o,tail15.data.o,ov_SC03_125_jr_8017A4AC.o,tail16.data.o,ov_SC03_125_jr_8017AE2C.o,ov_SC03_125_jr_8017D604.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_125/ov_SC03_125_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_125/ov_SC03_125_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_125/ov_SC03_125_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2235,7 +2235,7 @@ ov_SC03_126_ELF := $(ov_SC03_126_OUT).elf ov_SC03_126_MAPFILE := $(ov_SC03_126_OUT).map ov_SC03_126_LD_SCRIPT := $(ov_SC03_126_OUT).ld ov_SC03_126_SPLAT_YAML := config/splat.ov_SC03_126.yaml -ov_SC03_126_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_126_jr_8012ACE0.o,tail2.data.o,ov_SC03_126_jr_801380E0.o,tail3.data.o,ov_SC03_126_jr_8013F350.o,tail4.data.o,ov_SC03_126_jr_8013FFD8.o,tail5.data.o,ov_SC03_126_jr_80140608.o,tail6.data.o,ov_SC03_126_jr_8015444C.o,tail7.data.o,ov_SC03_126_jr_80154C24.o,ov_SC03_126_jr_801588CC.o,tail8.data.o,ov_SC03_126_jr_80159C84.o,tail9.data.o,ov_SC03_126_jr_8015A3C8.o,tail10.data.o,ov_SC03_126_jr_8015AE2C.o,tail11.data.o,ov_SC03_126_jr_8015C32C.o,tail12.data.o,ov_SC03_126_jr_8016AB6C.o,tail13.data.o,ov_SC03_126_jr_801734BC.o,tail14.data.o,ov_SC03_126_jr_80178D40.o,tail15.data.o,ov_SC03_126_jr_8017A4AC.o,tail16.data.o,ov_SC03_126_jr_8017D5C0.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_126_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_126_jr_8012ACE0.o,tail2.data.o,ov_SC03_126_jr_801380E0.o,tail3.data.o,ov_SC03_126_jr_8013F350.o,tail4.data.o,ov_SC03_126_jr_8013FFD8.o,tail5.data.o,ov_SC03_126_jr_80140608.o,tail6.data.o,ov_SC03_126_jr_8015444C.o,tail7.data.o,ov_SC03_126_jr_80154C24.o,ov_SC03_126_jr_801588CC.o,tail8.data.o,ov_SC03_126_jr_80159C84.o,tail9.data.o,ov_SC03_126_jr_8015A3C8.o,tail10.data.o,ov_SC03_126_jr_8015AE2C.o,tail11.data.o,ov_SC03_126_jr_8015C32C.o,tail12.data.o,ov_SC03_126_jr_8016AB6C.o,tail13.data.o,ov_SC03_126_jr_801734BC.o,tail14.data.o,ov_SC03_126_jr_80178D40.o,tail15.data.o,ov_SC03_126_jr_8017A4AC.o,tail16.data.o,ov_SC03_126_jr_8017AE2C.o,tail17.data.o,ov_SC03_126_jr_8017D5C0.o,tail18.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_126/ov_SC03_126_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_126/ov_SC03_126_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_126/ov_SC03_126_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2262,7 +2262,7 @@ ov_SC04_002_ELF := $(ov_SC04_002_OUT).elf ov_SC04_002_MAPFILE := $(ov_SC04_002_OUT).map ov_SC04_002_LD_SCRIPT := $(ov_SC04_002_OUT).ld ov_SC04_002_SPLAT_YAML := config/splat.ov_SC04_002.yaml -ov_SC04_002_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_002_jr_8012ACE0.o,tail2.data.o,ov_SC04_002_jr_801380E0.o,tail3.data.o,ov_SC04_002_jr_8013F350.o,tail4.data.o,ov_SC04_002_jr_8013FFD8.o,tail5.data.o,ov_SC04_002_jr_80140608.o,tail6.data.o,ov_SC04_002_jr_8015444C.o,tail7.data.o,ov_SC04_002_jr_80154C24.o,ov_SC04_002_jr_801588CC.o,tail8.data.o,ov_SC04_002_jr_80159C84.o,tail9.data.o,ov_SC04_002_jr_8015A3C8.o,tail10.data.o,ov_SC04_002_jr_8015AE2C.o,tail11.data.o,ov_SC04_002_jr_8015C32C.o,tail12.data.o,ov_SC04_002_jr_8016AB6C.o,tail13.data.o,ov_SC04_002_jr_801734BC.o,tail14.data.o,ov_SC04_002_jr_80178D40.o,tail15.data.o,ov_SC04_002_jr_8017A4AC.o,tail16.data.o,ov_SC04_002_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_002_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_002_jr_8012ACE0.o,tail2.data.o,ov_SC04_002_jr_801380E0.o,tail3.data.o,ov_SC04_002_jr_8013F350.o,tail4.data.o,ov_SC04_002_jr_8013FFD8.o,tail5.data.o,ov_SC04_002_jr_80140608.o,tail6.data.o,ov_SC04_002_jr_8015444C.o,tail7.data.o,ov_SC04_002_jr_80154C24.o,ov_SC04_002_jr_801588CC.o,tail8.data.o,ov_SC04_002_jr_80159C84.o,tail9.data.o,ov_SC04_002_jr_8015A3C8.o,tail10.data.o,ov_SC04_002_jr_8015AE2C.o,tail11.data.o,ov_SC04_002_jr_8015C32C.o,tail12.data.o,ov_SC04_002_jr_8016AB6C.o,tail13.data.o,ov_SC04_002_jr_801734BC.o,tail14.data.o,ov_SC04_002_jr_80178D40.o,tail15.data.o,ov_SC04_002_jr_8017A4AC.o,tail16.data.o,ov_SC04_002_jr_8017AE2C.o,ov_SC04_002_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_002/ov_SC04_002_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_002/ov_SC04_002_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_002/ov_SC04_002_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2289,7 +2289,7 @@ ov_SC04_003_ELF := $(ov_SC04_003_OUT).elf ov_SC04_003_MAPFILE := $(ov_SC04_003_OUT).map ov_SC04_003_LD_SCRIPT := $(ov_SC04_003_OUT).ld ov_SC04_003_SPLAT_YAML := config/splat.ov_SC04_003.yaml -ov_SC04_003_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_003_jr_8012ACE0.o,tail2.data.o,ov_SC04_003_jr_801380E0.o,tail3.data.o,ov_SC04_003_jr_8013F350.o,tail4.data.o,ov_SC04_003_jr_8013FFD8.o,tail5.data.o,ov_SC04_003_jr_80140608.o,tail6.data.o,ov_SC04_003_jr_8015444C.o,tail7.data.o,ov_SC04_003_jr_80154C24.o,ov_SC04_003_jr_801588CC.o,tail8.data.o,ov_SC04_003_jr_80159C84.o,tail9.data.o,ov_SC04_003_jr_8015A3C8.o,tail10.data.o,ov_SC04_003_jr_8015AE2C.o,tail11.data.o,ov_SC04_003_jr_8015C32C.o,tail12.data.o,ov_SC04_003_jr_8016AB6C.o,tail13.data.o,ov_SC04_003_jr_801734BC.o,tail14.data.o,ov_SC04_003_jr_80178D40.o,tail15.data.o,ov_SC04_003_jr_8017A4AC.o,tail16.data.o,ov_SC04_003_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_003_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_003_jr_8012ACE0.o,tail2.data.o,ov_SC04_003_jr_801380E0.o,tail3.data.o,ov_SC04_003_jr_8013F350.o,tail4.data.o,ov_SC04_003_jr_8013FFD8.o,tail5.data.o,ov_SC04_003_jr_80140608.o,tail6.data.o,ov_SC04_003_jr_8015444C.o,tail7.data.o,ov_SC04_003_jr_80154C24.o,ov_SC04_003_jr_801588CC.o,tail8.data.o,ov_SC04_003_jr_80159C84.o,tail9.data.o,ov_SC04_003_jr_8015A3C8.o,tail10.data.o,ov_SC04_003_jr_8015AE2C.o,tail11.data.o,ov_SC04_003_jr_8015C32C.o,tail12.data.o,ov_SC04_003_jr_8016AB6C.o,tail13.data.o,ov_SC04_003_jr_801734BC.o,tail14.data.o,ov_SC04_003_jr_80178D40.o,tail15.data.o,ov_SC04_003_jr_8017A4AC.o,tail16.data.o,ov_SC04_003_jr_8017AE2C.o,ov_SC04_003_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_003/ov_SC04_003_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_003/ov_SC04_003_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_003/ov_SC04_003_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2316,7 +2316,7 @@ ov_SC04_004_ELF := $(ov_SC04_004_OUT).elf ov_SC04_004_MAPFILE := $(ov_SC04_004_OUT).map ov_SC04_004_LD_SCRIPT := $(ov_SC04_004_OUT).ld ov_SC04_004_SPLAT_YAML := config/splat.ov_SC04_004.yaml -ov_SC04_004_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_004_jr_8012ACE0.o,tail2.data.o,ov_SC04_004_jr_801380E0.o,tail3.data.o,ov_SC04_004_jr_8013F350.o,tail4.data.o,ov_SC04_004_jr_8013FFD8.o,tail5.data.o,ov_SC04_004_jr_80140608.o,tail6.data.o,ov_SC04_004_jr_8015444C.o,tail7.data.o,ov_SC04_004_jr_80154C24.o,ov_SC04_004_jr_801588CC.o,tail8.data.o,ov_SC04_004_jr_80159C84.o,tail9.data.o,ov_SC04_004_jr_8015A3C8.o,tail10.data.o,ov_SC04_004_jr_8015AE2C.o,tail11.data.o,ov_SC04_004_jr_8015C32C.o,tail12.data.o,ov_SC04_004_jr_8016AB6C.o,tail13.data.o,ov_SC04_004_jr_801734BC.o,tail14.data.o,ov_SC04_004_jr_80178D40.o,tail15.data.o,ov_SC04_004_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_004_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_004_jr_8012ACE0.o,tail2.data.o,ov_SC04_004_jr_801380E0.o,tail3.data.o,ov_SC04_004_jr_8013F350.o,tail4.data.o,ov_SC04_004_jr_8013FFD8.o,tail5.data.o,ov_SC04_004_jr_80140608.o,tail6.data.o,ov_SC04_004_jr_8015444C.o,tail7.data.o,ov_SC04_004_jr_80154C24.o,ov_SC04_004_jr_801588CC.o,tail8.data.o,ov_SC04_004_jr_80159C84.o,tail9.data.o,ov_SC04_004_jr_8015A3C8.o,tail10.data.o,ov_SC04_004_jr_8015AE2C.o,tail11.data.o,ov_SC04_004_jr_8015C32C.o,tail12.data.o,ov_SC04_004_jr_8016AB6C.o,tail13.data.o,ov_SC04_004_jr_801734BC.o,tail14.data.o,ov_SC04_004_jr_80178D40.o,tail15.data.o,ov_SC04_004_jr_8017A4AC.o,tail16.data.o,ov_SC04_004_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_004/ov_SC04_004_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_004/ov_SC04_004_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_004/ov_SC04_004_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2343,7 +2343,7 @@ ov_SC04_005_ELF := $(ov_SC04_005_OUT).elf ov_SC04_005_MAPFILE := $(ov_SC04_005_OUT).map ov_SC04_005_LD_SCRIPT := $(ov_SC04_005_OUT).ld ov_SC04_005_SPLAT_YAML := config/splat.ov_SC04_005.yaml -ov_SC04_005_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_005_jr_8012ACE0.o,tail2.data.o,ov_SC04_005_jr_801380E0.o,tail3.data.o,ov_SC04_005_jr_8013F350.o,tail4.data.o,ov_SC04_005_jr_8013FFD8.o,tail5.data.o,ov_SC04_005_jr_80140608.o,tail6.data.o,ov_SC04_005_jr_8015444C.o,tail7.data.o,ov_SC04_005_jr_80154C24.o,ov_SC04_005_jr_801588CC.o,tail8.data.o,ov_SC04_005_jr_80159C84.o,tail9.data.o,ov_SC04_005_jr_8015A3C8.o,tail10.data.o,ov_SC04_005_jr_8015AE2C.o,tail11.data.o,ov_SC04_005_jr_8015C32C.o,tail12.data.o,ov_SC04_005_jr_8016AB6C.o,tail13.data.o,ov_SC04_005_jr_801734BC.o,tail14.data.o,ov_SC04_005_jr_80178D40.o,tail15.data.o,ov_SC04_005_jr_8017A4AC.o,tail16.data.o,ov_SC04_005_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_005_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_005_jr_8012ACE0.o,tail2.data.o,ov_SC04_005_jr_801380E0.o,tail3.data.o,ov_SC04_005_jr_8013F350.o,tail4.data.o,ov_SC04_005_jr_8013FFD8.o,tail5.data.o,ov_SC04_005_jr_80140608.o,tail6.data.o,ov_SC04_005_jr_8015444C.o,tail7.data.o,ov_SC04_005_jr_80154C24.o,ov_SC04_005_jr_801588CC.o,tail8.data.o,ov_SC04_005_jr_80159C84.o,tail9.data.o,ov_SC04_005_jr_8015A3C8.o,tail10.data.o,ov_SC04_005_jr_8015AE2C.o,tail11.data.o,ov_SC04_005_jr_8015C32C.o,tail12.data.o,ov_SC04_005_jr_8016AB6C.o,tail13.data.o,ov_SC04_005_jr_801734BC.o,tail14.data.o,ov_SC04_005_jr_80178D40.o,tail15.data.o,ov_SC04_005_jr_8017A4AC.o,tail16.data.o,ov_SC04_005_jr_8017AE2C.o,ov_SC04_005_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_005/ov_SC04_005_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_005/ov_SC04_005_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_005/ov_SC04_005_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2370,7 +2370,7 @@ ov_SC04_006_ELF := $(ov_SC04_006_OUT).elf ov_SC04_006_MAPFILE := $(ov_SC04_006_OUT).map ov_SC04_006_LD_SCRIPT := $(ov_SC04_006_OUT).ld ov_SC04_006_SPLAT_YAML := config/splat.ov_SC04_006.yaml -ov_SC04_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_006_jr_8012ACE0.o,tail2.data.o,ov_SC04_006_jr_801380E0.o,tail3.data.o,ov_SC04_006_jr_8013F350.o,tail4.data.o,ov_SC04_006_jr_8013FFD8.o,tail5.data.o,ov_SC04_006_jr_80140608.o,tail6.data.o,ov_SC04_006_jr_8015444C.o,tail7.data.o,ov_SC04_006_jr_80154C24.o,ov_SC04_006_jr_801588CC.o,tail8.data.o,ov_SC04_006_jr_80159C84.o,tail9.data.o,ov_SC04_006_jr_8015A3C8.o,tail10.data.o,ov_SC04_006_jr_8015AE2C.o,tail11.data.o,ov_SC04_006_jr_8015C32C.o,tail12.data.o,ov_SC04_006_jr_8016AB6C.o,tail13.data.o,ov_SC04_006_jr_801734BC.o,tail14.data.o,ov_SC04_006_jr_80178D40.o,tail15.data.o,ov_SC04_006_jr_8017A4AC.o,tail16.data.o,ov_SC04_006_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_006_jr_8012ACE0.o,tail2.data.o,ov_SC04_006_jr_801380E0.o,tail3.data.o,ov_SC04_006_jr_8013F350.o,tail4.data.o,ov_SC04_006_jr_8013FFD8.o,tail5.data.o,ov_SC04_006_jr_80140608.o,tail6.data.o,ov_SC04_006_jr_8015444C.o,tail7.data.o,ov_SC04_006_jr_80154C24.o,ov_SC04_006_jr_801588CC.o,tail8.data.o,ov_SC04_006_jr_80159C84.o,tail9.data.o,ov_SC04_006_jr_8015A3C8.o,tail10.data.o,ov_SC04_006_jr_8015AE2C.o,tail11.data.o,ov_SC04_006_jr_8015C32C.o,tail12.data.o,ov_SC04_006_jr_8016AB6C.o,tail13.data.o,ov_SC04_006_jr_801734BC.o,tail14.data.o,ov_SC04_006_jr_80178D40.o,tail15.data.o,ov_SC04_006_jr_8017A4AC.o,tail16.data.o,ov_SC04_006_jr_8017AE2C.o,ov_SC04_006_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_006/ov_SC04_006_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_006/ov_SC04_006_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_006/ov_SC04_006_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2397,7 +2397,7 @@ ov_SC04_007_ELF := $(ov_SC04_007_OUT).elf ov_SC04_007_MAPFILE := $(ov_SC04_007_OUT).map ov_SC04_007_LD_SCRIPT := $(ov_SC04_007_OUT).ld ov_SC04_007_SPLAT_YAML := config/splat.ov_SC04_007.yaml -ov_SC04_007_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_007_jr_8012ACE0.o,tail2.data.o,ov_SC04_007_jr_801380E0.o,tail3.data.o,ov_SC04_007_jr_8013F350.o,tail4.data.o,ov_SC04_007_jr_8013FFD8.o,tail5.data.o,ov_SC04_007_jr_80140608.o,tail6.data.o,ov_SC04_007_jr_8015444C.o,tail7.data.o,ov_SC04_007_jr_80154C24.o,ov_SC04_007_jr_801588CC.o,tail8.data.o,ov_SC04_007_jr_80159C84.o,tail9.data.o,ov_SC04_007_jr_8015A3C8.o,tail10.data.o,ov_SC04_007_jr_8015AE2C.o,tail11.data.o,ov_SC04_007_jr_8015C32C.o,tail12.data.o,ov_SC04_007_jr_8016AB6C.o,tail13.data.o,ov_SC04_007_jr_801734BC.o,tail14.data.o,ov_SC04_007_jr_80178D40.o,tail15.data.o,ov_SC04_007_jr_8017A4AC.o,tail16.data.o,ov_SC04_007_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_007_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_007_jr_8012ACE0.o,tail2.data.o,ov_SC04_007_jr_801380E0.o,tail3.data.o,ov_SC04_007_jr_8013F350.o,tail4.data.o,ov_SC04_007_jr_8013FFD8.o,tail5.data.o,ov_SC04_007_jr_80140608.o,tail6.data.o,ov_SC04_007_jr_8015444C.o,tail7.data.o,ov_SC04_007_jr_80154C24.o,ov_SC04_007_jr_801588CC.o,tail8.data.o,ov_SC04_007_jr_80159C84.o,tail9.data.o,ov_SC04_007_jr_8015A3C8.o,tail10.data.o,ov_SC04_007_jr_8015AE2C.o,tail11.data.o,ov_SC04_007_jr_8015C32C.o,tail12.data.o,ov_SC04_007_jr_8016AB6C.o,tail13.data.o,ov_SC04_007_jr_801734BC.o,tail14.data.o,ov_SC04_007_jr_80178D40.o,tail15.data.o,ov_SC04_007_jr_8017A4AC.o,tail16.data.o,ov_SC04_007_jr_8017AE2C.o,ov_SC04_007_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_007/ov_SC04_007_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_007/ov_SC04_007_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_007/ov_SC04_007_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2424,7 +2424,7 @@ ov_SC04_008_ELF := $(ov_SC04_008_OUT).elf ov_SC04_008_MAPFILE := $(ov_SC04_008_OUT).map ov_SC04_008_LD_SCRIPT := $(ov_SC04_008_OUT).ld ov_SC04_008_SPLAT_YAML := config/splat.ov_SC04_008.yaml -ov_SC04_008_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_008_jr_8012ACE0.o,tail2.data.o,ov_SC04_008_jr_801380E0.o,tail3.data.o,ov_SC04_008_jr_8013F350.o,tail4.data.o,ov_SC04_008_jr_8013FFD8.o,tail5.data.o,ov_SC04_008_jr_80140608.o,tail6.data.o,ov_SC04_008_jr_8015444C.o,tail7.data.o,ov_SC04_008_jr_80154C24.o,ov_SC04_008_jr_801588CC.o,tail8.data.o,ov_SC04_008_jr_80159C84.o,tail9.data.o,ov_SC04_008_jr_8015AE2C.o,tail10.data.o,ov_SC04_008_jr_8015C32C.o,tail11.data.o,ov_SC04_008_jr_8016AB6C.o,tail12.data.o,ov_SC04_008_jr_801734BC.o,tail13.data.o,ov_SC04_008_jr_80178D40.o,tail14.data.o,ov_SC04_008_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_008_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_008_jr_8012ACE0.o,tail2.data.o,ov_SC04_008_jr_801380E0.o,tail3.data.o,ov_SC04_008_jr_8013F350.o,tail4.data.o,ov_SC04_008_jr_8013FFD8.o,tail5.data.o,ov_SC04_008_jr_80140608.o,tail6.data.o,ov_SC04_008_jr_8015444C.o,tail7.data.o,ov_SC04_008_jr_80154C24.o,ov_SC04_008_jr_801588CC.o,tail8.data.o,ov_SC04_008_jr_80159C84.o,tail9.data.o,ov_SC04_008_jr_8015AE2C.o,tail10.data.o,ov_SC04_008_jr_8015C32C.o,tail11.data.o,ov_SC04_008_jr_8016AB6C.o,tail12.data.o,ov_SC04_008_jr_801734BC.o,tail13.data.o,ov_SC04_008_jr_80178D40.o,tail14.data.o,ov_SC04_008_jr_8017A4AC.o,tail15.data.o,ov_SC04_008_jr_8017AE2C.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_008/ov_SC04_008_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_008/ov_SC04_008_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_008/ov_SC04_008_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2451,7 +2451,7 @@ ov_SC04_009_ELF := $(ov_SC04_009_OUT).elf ov_SC04_009_MAPFILE := $(ov_SC04_009_OUT).map ov_SC04_009_LD_SCRIPT := $(ov_SC04_009_OUT).ld ov_SC04_009_SPLAT_YAML := config/splat.ov_SC04_009.yaml -ov_SC04_009_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_009_jr_8012ACE0.o,tail2.data.o,ov_SC04_009_jr_801380E0.o,tail3.data.o,ov_SC04_009_jr_8013F350.o,tail4.data.o,ov_SC04_009_jr_8013FFD8.o,tail5.data.o,ov_SC04_009_jr_80140608.o,tail6.data.o,ov_SC04_009_jr_8015444C.o,tail7.data.o,ov_SC04_009_jr_80154C24.o,ov_SC04_009_jr_801588CC.o,tail8.data.o,ov_SC04_009_jr_80159C84.o,tail9.data.o,ov_SC04_009_jr_8015A3C8.o,tail10.data.o,ov_SC04_009_jr_8015AE2C.o,tail11.data.o,ov_SC04_009_jr_8015C32C.o,tail12.data.o,ov_SC04_009_jr_8016AB6C.o,tail13.data.o,ov_SC04_009_jr_801734BC.o,tail14.data.o,ov_SC04_009_jr_80178D40.o,tail15.data.o,ov_SC04_009_jr_8017A4AC.o,tail16.data.o,ov_SC04_009_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_009_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_009_jr_8012ACE0.o,tail2.data.o,ov_SC04_009_jr_801380E0.o,tail3.data.o,ov_SC04_009_jr_8013F350.o,tail4.data.o,ov_SC04_009_jr_8013FFD8.o,tail5.data.o,ov_SC04_009_jr_80140608.o,tail6.data.o,ov_SC04_009_jr_8015444C.o,tail7.data.o,ov_SC04_009_jr_80154C24.o,ov_SC04_009_jr_801588CC.o,tail8.data.o,ov_SC04_009_jr_80159C84.o,tail9.data.o,ov_SC04_009_jr_8015A3C8.o,tail10.data.o,ov_SC04_009_jr_8015AE2C.o,tail11.data.o,ov_SC04_009_jr_8015C32C.o,tail12.data.o,ov_SC04_009_jr_8016AB6C.o,tail13.data.o,ov_SC04_009_jr_801734BC.o,tail14.data.o,ov_SC04_009_jr_80178D40.o,tail15.data.o,ov_SC04_009_jr_8017A4AC.o,tail16.data.o,ov_SC04_009_jr_8017AE2C.o,ov_SC04_009_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_009/ov_SC04_009_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_009/ov_SC04_009_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_009/ov_SC04_009_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2478,7 +2478,7 @@ ov_SC04_010_ELF := $(ov_SC04_010_OUT).elf ov_SC04_010_MAPFILE := $(ov_SC04_010_OUT).map ov_SC04_010_LD_SCRIPT := $(ov_SC04_010_OUT).ld ov_SC04_010_SPLAT_YAML := config/splat.ov_SC04_010.yaml -ov_SC04_010_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_010_jr_8012ACE0.o,tail2.data.o,ov_SC04_010_jr_801380E0.o,tail3.data.o,ov_SC04_010_jr_8013F350.o,tail4.data.o,ov_SC04_010_jr_8013FFD8.o,tail5.data.o,ov_SC04_010_jr_80140608.o,tail6.data.o,ov_SC04_010_jr_8015444C.o,tail7.data.o,ov_SC04_010_jr_80154C24.o,ov_SC04_010_jr_801588CC.o,tail8.data.o,ov_SC04_010_jr_80159C84.o,tail9.data.o,ov_SC04_010_jr_8015A3C8.o,tail10.data.o,ov_SC04_010_jr_8015AE2C.o,tail11.data.o,ov_SC04_010_jr_8015C32C.o,tail12.data.o,ov_SC04_010_jr_8016AB6C.o,tail13.data.o,ov_SC04_010_jr_801734BC.o,tail14.data.o,ov_SC04_010_jr_80178D40.o,tail15.data.o,ov_SC04_010_jr_8017A4AC.o,tail16.data.o,ov_SC04_010_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_010_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_010_jr_8012ACE0.o,tail2.data.o,ov_SC04_010_jr_801380E0.o,tail3.data.o,ov_SC04_010_jr_8013F350.o,tail4.data.o,ov_SC04_010_jr_8013FFD8.o,tail5.data.o,ov_SC04_010_jr_80140608.o,tail6.data.o,ov_SC04_010_jr_8015444C.o,tail7.data.o,ov_SC04_010_jr_80154C24.o,ov_SC04_010_jr_801588CC.o,tail8.data.o,ov_SC04_010_jr_80159C84.o,tail9.data.o,ov_SC04_010_jr_8015A3C8.o,tail10.data.o,ov_SC04_010_jr_8015AE2C.o,tail11.data.o,ov_SC04_010_jr_8015C32C.o,tail12.data.o,ov_SC04_010_jr_8016AB6C.o,tail13.data.o,ov_SC04_010_jr_801734BC.o,tail14.data.o,ov_SC04_010_jr_80178D40.o,tail15.data.o,ov_SC04_010_jr_8017A4AC.o,tail16.data.o,ov_SC04_010_jr_8017AE2C.o,ov_SC04_010_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_010/ov_SC04_010_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_010/ov_SC04_010_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_010/ov_SC04_010_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2505,7 +2505,7 @@ ov_SC04_011_ELF := $(ov_SC04_011_OUT).elf ov_SC04_011_MAPFILE := $(ov_SC04_011_OUT).map ov_SC04_011_LD_SCRIPT := $(ov_SC04_011_OUT).ld ov_SC04_011_SPLAT_YAML := config/splat.ov_SC04_011.yaml -ov_SC04_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_011_jr_8012ACE0.o,tail2.data.o,ov_SC04_011_jr_801380E0.o,tail3.data.o,ov_SC04_011_jr_8013F350.o,tail4.data.o,ov_SC04_011_jr_8013FFD8.o,tail5.data.o,ov_SC04_011_jr_80140608.o,tail6.data.o,ov_SC04_011_jr_8015444C.o,tail7.data.o,ov_SC04_011_jr_80154C24.o,ov_SC04_011_jr_801588CC.o,tail8.data.o,ov_SC04_011_jr_80159C84.o,tail9.data.o,ov_SC04_011_jr_8015A3C8.o,tail10.data.o,ov_SC04_011_jr_8015AE2C.o,tail11.data.o,ov_SC04_011_jr_8015C32C.o,tail12.data.o,ov_SC04_011_jr_8016AB6C.o,tail13.data.o,ov_SC04_011_jr_801734BC.o,tail14.data.o,ov_SC04_011_jr_80178D40.o,tail15.data.o,ov_SC04_011_jr_8017A4AC.o,tail16.data.o,ov_SC04_011_jr_8017D494.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_011_jr_8012ACE0.o,tail2.data.o,ov_SC04_011_jr_801380E0.o,tail3.data.o,ov_SC04_011_jr_8013F350.o,tail4.data.o,ov_SC04_011_jr_8013FFD8.o,tail5.data.o,ov_SC04_011_jr_80140608.o,tail6.data.o,ov_SC04_011_jr_8015444C.o,tail7.data.o,ov_SC04_011_jr_80154C24.o,ov_SC04_011_jr_801588CC.o,tail8.data.o,ov_SC04_011_jr_80159C84.o,tail9.data.o,ov_SC04_011_jr_8015A3C8.o,tail10.data.o,ov_SC04_011_jr_8015AE2C.o,tail11.data.o,ov_SC04_011_jr_8015C32C.o,tail12.data.o,ov_SC04_011_jr_8016AB6C.o,tail13.data.o,ov_SC04_011_jr_801734BC.o,tail14.data.o,ov_SC04_011_jr_80178D40.o,tail15.data.o,ov_SC04_011_jr_8017A4AC.o,tail16.data.o,ov_SC04_011_jr_8017AE2C.o,tail17.data.o,ov_SC04_011_jr_8017D494.o,tail18.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2532,7 +2532,7 @@ ov_SC04_012_ELF := $(ov_SC04_012_OUT).elf ov_SC04_012_MAPFILE := $(ov_SC04_012_OUT).map ov_SC04_012_LD_SCRIPT := $(ov_SC04_012_OUT).ld ov_SC04_012_SPLAT_YAML := config/splat.ov_SC04_012.yaml -ov_SC04_012_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_012_jr_8012ACE0.o,tail2.data.o,ov_SC04_012_jr_801380E0.o,tail3.data.o,ov_SC04_012_jr_8013F350.o,tail4.data.o,ov_SC04_012_jr_8013FFD8.o,tail5.data.o,ov_SC04_012_jr_80140608.o,tail6.data.o,ov_SC04_012_jr_8015444C.o,tail7.data.o,ov_SC04_012_jr_80154C24.o,ov_SC04_012_jr_801588CC.o,tail8.data.o,ov_SC04_012_jr_80159C84.o,tail9.data.o,ov_SC04_012_jr_8015A3C8.o,tail10.data.o,ov_SC04_012_jr_8015AE2C.o,tail11.data.o,ov_SC04_012_jr_8015C32C.o,tail12.data.o,ov_SC04_012_jr_8016AB6C.o,tail13.data.o,ov_SC04_012_jr_801734BC.o,tail14.data.o,ov_SC04_012_jr_80178D40.o,tail15.data.o,ov_SC04_012_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_012_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_012_jr_8012ACE0.o,tail2.data.o,ov_SC04_012_jr_801380E0.o,tail3.data.o,ov_SC04_012_jr_8013F350.o,tail4.data.o,ov_SC04_012_jr_8013FFD8.o,tail5.data.o,ov_SC04_012_jr_80140608.o,tail6.data.o,ov_SC04_012_jr_8015444C.o,tail7.data.o,ov_SC04_012_jr_80154C24.o,ov_SC04_012_jr_801588CC.o,tail8.data.o,ov_SC04_012_jr_80159C84.o,tail9.data.o,ov_SC04_012_jr_8015A3C8.o,tail10.data.o,ov_SC04_012_jr_8015AE2C.o,tail11.data.o,ov_SC04_012_jr_8015C32C.o,tail12.data.o,ov_SC04_012_jr_8016AB6C.o,tail13.data.o,ov_SC04_012_jr_801734BC.o,tail14.data.o,ov_SC04_012_jr_80178D40.o,tail15.data.o,ov_SC04_012_jr_8017A4AC.o,tail16.data.o,ov_SC04_012_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_012/ov_SC04_012_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_012/ov_SC04_012_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_012/ov_SC04_012_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2559,7 +2559,7 @@ ov_SC04_015_ELF := $(ov_SC04_015_OUT).elf ov_SC04_015_MAPFILE := $(ov_SC04_015_OUT).map ov_SC04_015_LD_SCRIPT := $(ov_SC04_015_OUT).ld ov_SC04_015_SPLAT_YAML := config/splat.ov_SC04_015.yaml -ov_SC04_015_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_015_jr_8012ACE0.o,tail2.data.o,ov_SC04_015_jr_801380E0.o,tail3.data.o,ov_SC04_015_jr_8013F350.o,tail4.data.o,ov_SC04_015_jr_8013FFD8.o,tail5.data.o,ov_SC04_015_jr_80140608.o,tail6.data.o,ov_SC04_015_jr_8015444C.o,tail7.data.o,ov_SC04_015_jr_80154C24.o,ov_SC04_015_jr_801588CC.o,tail8.data.o,ov_SC04_015_jr_80159C84.o,tail9.data.o,ov_SC04_015_jr_8015A3C8.o,tail10.data.o,ov_SC04_015_jr_8015AE2C.o,tail11.data.o,ov_SC04_015_jr_8015C32C.o,tail12.data.o,ov_SC04_015_jr_8016AB6C.o,tail13.data.o,ov_SC04_015_jr_801734BC.o,tail14.data.o,ov_SC04_015_jr_80178D40.o,tail15.data.o,ov_SC04_015_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_015_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_015_jr_8012ACE0.o,tail2.data.o,ov_SC04_015_jr_801380E0.o,tail3.data.o,ov_SC04_015_jr_8013F350.o,tail4.data.o,ov_SC04_015_jr_8013FFD8.o,tail5.data.o,ov_SC04_015_jr_80140608.o,tail6.data.o,ov_SC04_015_jr_8015444C.o,tail7.data.o,ov_SC04_015_jr_80154C24.o,ov_SC04_015_jr_801588CC.o,tail8.data.o,ov_SC04_015_jr_80159C84.o,tail9.data.o,ov_SC04_015_jr_8015A3C8.o,tail10.data.o,ov_SC04_015_jr_8015AE2C.o,tail11.data.o,ov_SC04_015_jr_8015C32C.o,tail12.data.o,ov_SC04_015_jr_8016AB6C.o,tail13.data.o,ov_SC04_015_jr_801734BC.o,tail14.data.o,ov_SC04_015_jr_80178D40.o,tail15.data.o,ov_SC04_015_jr_8017A4AC.o,tail16.data.o,ov_SC04_015_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_015/ov_SC04_015_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_015/ov_SC04_015_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_015/ov_SC04_015_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2586,7 +2586,7 @@ ov_SC04_016_ELF := $(ov_SC04_016_OUT).elf ov_SC04_016_MAPFILE := $(ov_SC04_016_OUT).map ov_SC04_016_LD_SCRIPT := $(ov_SC04_016_OUT).ld ov_SC04_016_SPLAT_YAML := config/splat.ov_SC04_016.yaml -ov_SC04_016_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_016_jr_8012ACE0.o,tail2.data.o,ov_SC04_016_jr_801380E0.o,tail3.data.o,ov_SC04_016_jr_8013F350.o,tail4.data.o,ov_SC04_016_jr_8013FFD8.o,tail5.data.o,ov_SC04_016_jr_80140608.o,tail6.data.o,ov_SC04_016_jr_8015444C.o,tail7.data.o,ov_SC04_016_jr_80154C24.o,ov_SC04_016_jr_801588CC.o,tail8.data.o,ov_SC04_016_jr_80159C84.o,tail9.data.o,ov_SC04_016_jr_8015A3C8.o,tail10.data.o,ov_SC04_016_jr_8015AE2C.o,tail11.data.o,ov_SC04_016_jr_8015C32C.o,tail12.data.o,ov_SC04_016_jr_8016AB6C.o,tail13.data.o,ov_SC04_016_jr_801734BC.o,tail14.data.o,ov_SC04_016_jr_80178D40.o,tail15.data.o,ov_SC04_016_jr_8017A4AC.o,tail16.data.o,ov_SC04_016_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_016_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_016_jr_8012ACE0.o,tail2.data.o,ov_SC04_016_jr_801380E0.o,tail3.data.o,ov_SC04_016_jr_8013F350.o,tail4.data.o,ov_SC04_016_jr_8013FFD8.o,tail5.data.o,ov_SC04_016_jr_80140608.o,tail6.data.o,ov_SC04_016_jr_8015444C.o,tail7.data.o,ov_SC04_016_jr_80154C24.o,ov_SC04_016_jr_801588CC.o,tail8.data.o,ov_SC04_016_jr_80159C84.o,tail9.data.o,ov_SC04_016_jr_8015A3C8.o,tail10.data.o,ov_SC04_016_jr_8015AE2C.o,tail11.data.o,ov_SC04_016_jr_8015C32C.o,tail12.data.o,ov_SC04_016_jr_8016AB6C.o,tail13.data.o,ov_SC04_016_jr_801734BC.o,tail14.data.o,ov_SC04_016_jr_80178D40.o,tail15.data.o,ov_SC04_016_jr_8017A4AC.o,tail16.data.o,ov_SC04_016_jr_8017AE2C.o,ov_SC04_016_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_016/ov_SC04_016_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_016/ov_SC04_016_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_016/ov_SC04_016_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2613,7 +2613,7 @@ ov_SC04_020_ELF := $(ov_SC04_020_OUT).elf ov_SC04_020_MAPFILE := $(ov_SC04_020_OUT).map ov_SC04_020_LD_SCRIPT := $(ov_SC04_020_OUT).ld ov_SC04_020_SPLAT_YAML := config/splat.ov_SC04_020.yaml -ov_SC04_020_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_020_jr_8012ACE0.o,tail2.data.o,ov_SC04_020_jr_801380E0.o,tail3.data.o,ov_SC04_020_jr_8013F350.o,tail4.data.o,ov_SC04_020_jr_8013FFD8.o,tail5.data.o,ov_SC04_020_jr_80140608.o,tail6.data.o,ov_SC04_020_jr_8015444C.o,tail7.data.o,ov_SC04_020_jr_80154C24.o,ov_SC04_020_jr_801588CC.o,tail8.data.o,ov_SC04_020_jr_80159C84.o,tail9.data.o,ov_SC04_020_jr_8015A3C8.o,tail10.data.o,ov_SC04_020_jr_8015AE2C.o,tail11.data.o,ov_SC04_020_jr_8015C32C.o,tail12.data.o,ov_SC04_020_jr_8016AB6C.o,tail13.data.o,ov_SC04_020_jr_801734BC.o,tail14.data.o,ov_SC04_020_jr_80178D40.o,tail15.data.o,ov_SC04_020_jr_8017A4AC.o,tail16.data.o,ov_SC04_020_jr_8017D604.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_020_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_020_jr_8012ACE0.o,tail2.data.o,ov_SC04_020_jr_801380E0.o,tail3.data.o,ov_SC04_020_jr_8013F350.o,tail4.data.o,ov_SC04_020_jr_8013FFD8.o,tail5.data.o,ov_SC04_020_jr_80140608.o,tail6.data.o,ov_SC04_020_jr_8015444C.o,tail7.data.o,ov_SC04_020_jr_80154C24.o,ov_SC04_020_jr_801588CC.o,tail8.data.o,ov_SC04_020_jr_80159C84.o,tail9.data.o,ov_SC04_020_jr_8015A3C8.o,tail10.data.o,ov_SC04_020_jr_8015AE2C.o,tail11.data.o,ov_SC04_020_jr_8015C32C.o,tail12.data.o,ov_SC04_020_jr_8016AB6C.o,tail13.data.o,ov_SC04_020_jr_801734BC.o,tail14.data.o,ov_SC04_020_jr_80178D40.o,tail15.data.o,ov_SC04_020_jr_8017A4AC.o,tail16.data.o,ov_SC04_020_jr_8017AE2C.o,ov_SC04_020_jr_8017D604.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_020/ov_SC04_020_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_020/ov_SC04_020_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_020/ov_SC04_020_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2640,7 +2640,7 @@ ov_SC04_021_ELF := $(ov_SC04_021_OUT).elf ov_SC04_021_MAPFILE := $(ov_SC04_021_OUT).map ov_SC04_021_LD_SCRIPT := $(ov_SC04_021_OUT).ld ov_SC04_021_SPLAT_YAML := config/splat.ov_SC04_021.yaml -ov_SC04_021_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_021_jr_8012ACE0.o,tail2.data.o,ov_SC04_021_jr_801380E0.o,tail3.data.o,ov_SC04_021_jr_8013F350.o,tail4.data.o,ov_SC04_021_jr_8013FFD8.o,tail5.data.o,ov_SC04_021_jr_80140608.o,tail6.data.o,ov_SC04_021_jr_8015444C.o,tail7.data.o,ov_SC04_021_jr_80154C24.o,ov_SC04_021_jr_801588CC.o,tail8.data.o,ov_SC04_021_jr_80159C84.o,tail9.data.o,ov_SC04_021_jr_8015A3C8.o,tail10.data.o,ov_SC04_021_jr_8015AE2C.o,tail11.data.o,ov_SC04_021_jr_8015C32C.o,tail12.data.o,ov_SC04_021_jr_8016AB6C.o,tail13.data.o,ov_SC04_021_jr_801734BC.o,tail14.data.o,ov_SC04_021_jr_80178D40.o,tail15.data.o,ov_SC04_021_jr_8017A4AC.o,tail16.data.o,ov_SC04_021_jr_8017D5C0.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_021_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_021_jr_8012ACE0.o,tail2.data.o,ov_SC04_021_jr_801380E0.o,tail3.data.o,ov_SC04_021_jr_8013F350.o,tail4.data.o,ov_SC04_021_jr_8013FFD8.o,tail5.data.o,ov_SC04_021_jr_80140608.o,tail6.data.o,ov_SC04_021_jr_8015444C.o,tail7.data.o,ov_SC04_021_jr_80154C24.o,ov_SC04_021_jr_801588CC.o,tail8.data.o,ov_SC04_021_jr_80159C84.o,tail9.data.o,ov_SC04_021_jr_8015A3C8.o,tail10.data.o,ov_SC04_021_jr_8015AE2C.o,tail11.data.o,ov_SC04_021_jr_8015C32C.o,tail12.data.o,ov_SC04_021_jr_8016AB6C.o,tail13.data.o,ov_SC04_021_jr_801734BC.o,tail14.data.o,ov_SC04_021_jr_80178D40.o,tail15.data.o,ov_SC04_021_jr_8017A4AC.o,tail16.data.o,ov_SC04_021_jr_8017AE2C.o,tail17.data.o,ov_SC04_021_jr_8017D5C0.o,tail18.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_021/ov_SC04_021_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_021/ov_SC04_021_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_021/ov_SC04_021_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2667,7 +2667,7 @@ ov_SC05_001_ELF := $(ov_SC05_001_OUT).elf ov_SC05_001_MAPFILE := $(ov_SC05_001_OUT).map ov_SC05_001_LD_SCRIPT := $(ov_SC05_001_OUT).ld ov_SC05_001_SPLAT_YAML := config/splat.ov_SC05_001.yaml -ov_SC05_001_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_001_jr_8012ACE0.o,tail2.data.o,ov_SC05_001_jr_801380E0.o,tail3.data.o,ov_SC05_001_jr_8013F350.o,tail4.data.o,ov_SC05_001_jr_8013FFD8.o,tail5.data.o,ov_SC05_001_jr_80140608.o,tail6.data.o,ov_SC05_001_jr_8015444C.o,tail7.data.o,ov_SC05_001_jr_80154C24.o,ov_SC05_001_jr_801588CC.o,tail8.data.o,ov_SC05_001_jr_80159C84.o,tail9.data.o,ov_SC05_001_jr_8015A3C8.o,tail10.data.o,ov_SC05_001_jr_8015AE2C.o,tail11.data.o,ov_SC05_001_jr_8015C32C.o,tail12.data.o,ov_SC05_001_jr_8016AB6C.o,tail13.data.o,ov_SC05_001_jr_801734BC.o,tail14.data.o,ov_SC05_001_jr_80178D40.o,tail15.data.o,ov_SC05_001_jr_8017A4AC.o,tail16.data.o,ov_SC05_001_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_001_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_001_jr_8012ACE0.o,tail2.data.o,ov_SC05_001_jr_801380E0.o,tail3.data.o,ov_SC05_001_jr_8013F350.o,tail4.data.o,ov_SC05_001_jr_8013FFD8.o,tail5.data.o,ov_SC05_001_jr_80140608.o,tail6.data.o,ov_SC05_001_jr_8015444C.o,tail7.data.o,ov_SC05_001_jr_80154C24.o,ov_SC05_001_jr_801588CC.o,tail8.data.o,ov_SC05_001_jr_80159C84.o,tail9.data.o,ov_SC05_001_jr_8015A3C8.o,tail10.data.o,ov_SC05_001_jr_8015AE2C.o,tail11.data.o,ov_SC05_001_jr_8015C32C.o,tail12.data.o,ov_SC05_001_jr_8016AB6C.o,tail13.data.o,ov_SC05_001_jr_801734BC.o,tail14.data.o,ov_SC05_001_jr_80178D40.o,tail15.data.o,ov_SC05_001_jr_8017A4AC.o,tail16.data.o,ov_SC05_001_jr_8017AE2C.o,ov_SC05_001_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_001/ov_SC05_001_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_001/ov_SC05_001_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_001/ov_SC05_001_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2694,7 +2694,7 @@ ov_SC05_002_ELF := $(ov_SC05_002_OUT).elf ov_SC05_002_MAPFILE := $(ov_SC05_002_OUT).map ov_SC05_002_LD_SCRIPT := $(ov_SC05_002_OUT).ld ov_SC05_002_SPLAT_YAML := config/splat.ov_SC05_002.yaml -ov_SC05_002_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_002_jr_8012ACE0.o,tail2.data.o,ov_SC05_002_jr_801380E0.o,tail3.data.o,ov_SC05_002_jr_8013F350.o,tail4.data.o,ov_SC05_002_jr_8013FFD8.o,tail5.data.o,ov_SC05_002_jr_80140608.o,tail6.data.o,ov_SC05_002_jr_8015444C.o,tail7.data.o,ov_SC05_002_jr_80154C24.o,ov_SC05_002_jr_801588CC.o,tail8.data.o,ov_SC05_002_jr_80159C84.o,tail9.data.o,ov_SC05_002_jr_8015A3C8.o,tail10.data.o,ov_SC05_002_jr_8015AE2C.o,tail11.data.o,ov_SC05_002_jr_8015C32C.o,tail12.data.o,ov_SC05_002_jr_8016AB6C.o,tail13.data.o,ov_SC05_002_jr_801734BC.o,tail14.data.o,ov_SC05_002_jr_80178D40.o,tail15.data.o,ov_SC05_002_jr_8017A4AC.o,tail16.data.o,ov_SC05_002_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_002_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_002_jr_8012ACE0.o,tail2.data.o,ov_SC05_002_jr_801380E0.o,tail3.data.o,ov_SC05_002_jr_8013F350.o,tail4.data.o,ov_SC05_002_jr_8013FFD8.o,tail5.data.o,ov_SC05_002_jr_80140608.o,tail6.data.o,ov_SC05_002_jr_8015444C.o,tail7.data.o,ov_SC05_002_jr_80154C24.o,ov_SC05_002_jr_801588CC.o,tail8.data.o,ov_SC05_002_jr_80159C84.o,tail9.data.o,ov_SC05_002_jr_8015A3C8.o,tail10.data.o,ov_SC05_002_jr_8015AE2C.o,tail11.data.o,ov_SC05_002_jr_8015C32C.o,tail12.data.o,ov_SC05_002_jr_8016AB6C.o,tail13.data.o,ov_SC05_002_jr_801734BC.o,tail14.data.o,ov_SC05_002_jr_80178D40.o,tail15.data.o,ov_SC05_002_jr_8017A4AC.o,tail16.data.o,ov_SC05_002_jr_8017AE2C.o,ov_SC05_002_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_002/ov_SC05_002_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_002/ov_SC05_002_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_002/ov_SC05_002_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2721,7 +2721,7 @@ ov_SC05_003_ELF := $(ov_SC05_003_OUT).elf ov_SC05_003_MAPFILE := $(ov_SC05_003_OUT).map ov_SC05_003_LD_SCRIPT := $(ov_SC05_003_OUT).ld ov_SC05_003_SPLAT_YAML := config/splat.ov_SC05_003.yaml -ov_SC05_003_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_003_jr_8012ACE0.o,tail2.data.o,ov_SC05_003_jr_801380E0.o,tail3.data.o,ov_SC05_003_jr_8013F350.o,tail4.data.o,ov_SC05_003_jr_8013FFD8.o,tail5.data.o,ov_SC05_003_jr_80140608.o,tail6.data.o,ov_SC05_003_jr_8015444C.o,tail7.data.o,ov_SC05_003_jr_80154C24.o,ov_SC05_003_jr_801588CC.o,tail8.data.o,ov_SC05_003_jr_80159C84.o,tail9.data.o,ov_SC05_003_jr_8015A3C8.o,tail10.data.o,ov_SC05_003_jr_8015AE2C.o,tail11.data.o,ov_SC05_003_jr_8015C32C.o,tail12.data.o,ov_SC05_003_jr_8016AB6C.o,tail13.data.o,ov_SC05_003_jr_801734BC.o,tail14.data.o,ov_SC05_003_jr_80178D40.o,tail15.data.o,ov_SC05_003_jr_8017A4AC.o,tail16.data.o,ov_SC05_003_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_003_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_003_jr_8012ACE0.o,tail2.data.o,ov_SC05_003_jr_801380E0.o,tail3.data.o,ov_SC05_003_jr_8013F350.o,tail4.data.o,ov_SC05_003_jr_8013FFD8.o,tail5.data.o,ov_SC05_003_jr_80140608.o,tail6.data.o,ov_SC05_003_jr_8015444C.o,tail7.data.o,ov_SC05_003_jr_80154C24.o,ov_SC05_003_jr_801588CC.o,tail8.data.o,ov_SC05_003_jr_80159C84.o,tail9.data.o,ov_SC05_003_jr_8015A3C8.o,tail10.data.o,ov_SC05_003_jr_8015AE2C.o,tail11.data.o,ov_SC05_003_jr_8015C32C.o,tail12.data.o,ov_SC05_003_jr_8016AB6C.o,tail13.data.o,ov_SC05_003_jr_801734BC.o,tail14.data.o,ov_SC05_003_jr_80178D40.o,tail15.data.o,ov_SC05_003_jr_8017A4AC.o,tail16.data.o,ov_SC05_003_jr_8017AE2C.o,ov_SC05_003_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_003/ov_SC05_003_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_003/ov_SC05_003_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_003/ov_SC05_003_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2748,7 +2748,7 @@ ov_SC05_004_ELF := $(ov_SC05_004_OUT).elf ov_SC05_004_MAPFILE := $(ov_SC05_004_OUT).map ov_SC05_004_LD_SCRIPT := $(ov_SC05_004_OUT).ld ov_SC05_004_SPLAT_YAML := config/splat.ov_SC05_004.yaml -ov_SC05_004_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_004_jr_8012ACE0.o,tail2.data.o,ov_SC05_004_jr_801380E0.o,tail3.data.o,ov_SC05_004_jr_8013F350.o,tail4.data.o,ov_SC05_004_jr_80140608.o,tail5.data.o,ov_SC05_004_jr_8015444C.o,tail6.data.o,ov_SC05_004_jr_80154C24.o,ov_SC05_004_jr_801588CC.o,tail7.data.o,ov_SC05_004_jr_80159C84.o,tail8.data.o,ov_SC05_004_jr_8015A3C8.o,tail9.data.o,ov_SC05_004_jr_8015AE2C.o,tail10.data.o,ov_SC05_004_jr_8015C32C.o,tail11.data.o,ov_SC05_004_jr_8016AB6C.o,tail12.data.o,ov_SC05_004_jr_801734BC.o,tail13.data.o,ov_SC05_004_jr_80178D40.o,tail14.data.o,ov_SC05_004_jr_8017A4AC.o,tail15.data.o,ov_SC05_004_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_004_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_004_jr_8012ACE0.o,tail2.data.o,ov_SC05_004_jr_801380E0.o,tail3.data.o,ov_SC05_004_jr_8013F350.o,tail4.data.o,ov_SC05_004_jr_80140608.o,tail5.data.o,ov_SC05_004_jr_8015444C.o,tail6.data.o,ov_SC05_004_jr_80154C24.o,ov_SC05_004_jr_801588CC.o,tail7.data.o,ov_SC05_004_jr_80159C84.o,tail8.data.o,ov_SC05_004_jr_8015A3C8.o,tail9.data.o,ov_SC05_004_jr_8015AE2C.o,tail10.data.o,ov_SC05_004_jr_8015C32C.o,tail11.data.o,ov_SC05_004_jr_8016AB6C.o,tail12.data.o,ov_SC05_004_jr_801734BC.o,tail13.data.o,ov_SC05_004_jr_80178D40.o,tail14.data.o,ov_SC05_004_jr_8017A4AC.o,tail15.data.o,ov_SC05_004_jr_8017AE2C.o,ov_SC05_004_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_004/ov_SC05_004_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_004/ov_SC05_004_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_004/ov_SC05_004_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2775,7 +2775,7 @@ ov_SC05_005_ELF := $(ov_SC05_005_OUT).elf ov_SC05_005_MAPFILE := $(ov_SC05_005_OUT).map ov_SC05_005_LD_SCRIPT := $(ov_SC05_005_OUT).ld ov_SC05_005_SPLAT_YAML := config/splat.ov_SC05_005.yaml -ov_SC05_005_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_005_jr_8012ACE0.o,tail2.data.o,ov_SC05_005_jr_801380E0.o,tail3.data.o,ov_SC05_005_jr_8013F350.o,tail4.data.o,ov_SC05_005_jr_8013FFD8.o,tail5.data.o,ov_SC05_005_jr_80140608.o,tail6.data.o,ov_SC05_005_jr_8015444C.o,tail7.data.o,ov_SC05_005_jr_80154C24.o,ov_SC05_005_jr_801588CC.o,tail8.data.o,ov_SC05_005_jr_80159C84.o,tail9.data.o,ov_SC05_005_jr_8015A3C8.o,tail10.data.o,ov_SC05_005_jr_8015AE2C.o,tail11.data.o,ov_SC05_005_jr_8015C32C.o,tail12.data.o,ov_SC05_005_jr_8016AB6C.o,tail13.data.o,ov_SC05_005_jr_801734BC.o,tail14.data.o,ov_SC05_005_jr_80178D40.o,tail15.data.o,ov_SC05_005_jr_8017A4AC.o,tail16.data.o,ov_SC05_005_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_005_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_005_jr_8012ACE0.o,tail2.data.o,ov_SC05_005_jr_801380E0.o,tail3.data.o,ov_SC05_005_jr_8013F350.o,tail4.data.o,ov_SC05_005_jr_8013FFD8.o,tail5.data.o,ov_SC05_005_jr_80140608.o,tail6.data.o,ov_SC05_005_jr_8015444C.o,tail7.data.o,ov_SC05_005_jr_80154C24.o,ov_SC05_005_jr_801588CC.o,tail8.data.o,ov_SC05_005_jr_80159C84.o,tail9.data.o,ov_SC05_005_jr_8015A3C8.o,tail10.data.o,ov_SC05_005_jr_8015AE2C.o,tail11.data.o,ov_SC05_005_jr_8015C32C.o,tail12.data.o,ov_SC05_005_jr_8016AB6C.o,tail13.data.o,ov_SC05_005_jr_801734BC.o,tail14.data.o,ov_SC05_005_jr_80178D40.o,tail15.data.o,ov_SC05_005_jr_8017A4AC.o,tail16.data.o,ov_SC05_005_jr_8017AE2C.o,ov_SC05_005_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_005/ov_SC05_005_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_005/ov_SC05_005_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_005/ov_SC05_005_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2802,7 +2802,7 @@ ov_SC05_006_ELF := $(ov_SC05_006_OUT).elf ov_SC05_006_MAPFILE := $(ov_SC05_006_OUT).map ov_SC05_006_LD_SCRIPT := $(ov_SC05_006_OUT).ld ov_SC05_006_SPLAT_YAML := config/splat.ov_SC05_006.yaml -ov_SC05_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_006_jr_8012ACE0.o,tail2.data.o,ov_SC05_006_jr_801380E0.o,tail3.data.o,ov_SC05_006_jr_8013F350.o,tail4.data.o,ov_SC05_006_jr_8013FFD8.o,tail5.data.o,ov_SC05_006_jr_80140608.o,tail6.data.o,ov_SC05_006_jr_8015444C.o,tail7.data.o,ov_SC05_006_jr_80154C24.o,ov_SC05_006_jr_801588CC.o,tail8.data.o,ov_SC05_006_jr_80159C84.o,tail9.data.o,ov_SC05_006_jr_8015A3C8.o,tail10.data.o,ov_SC05_006_jr_8015AE2C.o,tail11.data.o,ov_SC05_006_jr_8015C32C.o,tail12.data.o,ov_SC05_006_jr_8016AB6C.o,tail13.data.o,ov_SC05_006_jr_801734BC.o,tail14.data.o,ov_SC05_006_jr_80178D40.o,tail15.data.o,ov_SC05_006_jr_8017A4AC.o,tail16.data.o,ov_SC05_006_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_006_jr_8012ACE0.o,tail2.data.o,ov_SC05_006_jr_801380E0.o,tail3.data.o,ov_SC05_006_jr_8013F350.o,tail4.data.o,ov_SC05_006_jr_8013FFD8.o,tail5.data.o,ov_SC05_006_jr_80140608.o,tail6.data.o,ov_SC05_006_jr_8015444C.o,tail7.data.o,ov_SC05_006_jr_80154C24.o,ov_SC05_006_jr_801588CC.o,tail8.data.o,ov_SC05_006_jr_80159C84.o,tail9.data.o,ov_SC05_006_jr_8015A3C8.o,tail10.data.o,ov_SC05_006_jr_8015AE2C.o,tail11.data.o,ov_SC05_006_jr_8015C32C.o,tail12.data.o,ov_SC05_006_jr_8016AB6C.o,tail13.data.o,ov_SC05_006_jr_801734BC.o,tail14.data.o,ov_SC05_006_jr_80178D40.o,tail15.data.o,ov_SC05_006_jr_8017A4AC.o,tail16.data.o,ov_SC05_006_jr_8017AE2C.o,ov_SC05_006_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_006/ov_SC05_006_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_006/ov_SC05_006_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_006/ov_SC05_006_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2829,7 +2829,7 @@ ov_SC05_007_ELF := $(ov_SC05_007_OUT).elf ov_SC05_007_MAPFILE := $(ov_SC05_007_OUT).map ov_SC05_007_LD_SCRIPT := $(ov_SC05_007_OUT).ld ov_SC05_007_SPLAT_YAML := config/splat.ov_SC05_007.yaml -ov_SC05_007_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_007_jr_8012ACE0.o,tail2.data.o,ov_SC05_007_jr_801380E0.o,tail3.data.o,ov_SC05_007_jr_8013F350.o,tail4.data.o,ov_SC05_007_jr_8013FFD8.o,tail5.data.o,ov_SC05_007_jr_80140608.o,tail6.data.o,ov_SC05_007_jr_8015444C.o,tail7.data.o,ov_SC05_007_jr_80154C24.o,ov_SC05_007_jr_801588CC.o,tail8.data.o,ov_SC05_007_jr_80159C84.o,tail9.data.o,ov_SC05_007_jr_8015A3C8.o,tail10.data.o,ov_SC05_007_jr_8015AE2C.o,tail11.data.o,ov_SC05_007_jr_8015C32C.o,tail12.data.o,ov_SC05_007_jr_8016AB6C.o,tail13.data.o,ov_SC05_007_jr_801734BC.o,tail14.data.o,ov_SC05_007_jr_80178D40.o,tail15.data.o,ov_SC05_007_jr_8017A4AC.o,tail16.data.o,ov_SC05_007_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_007_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_007_jr_8012ACE0.o,tail2.data.o,ov_SC05_007_jr_801380E0.o,tail3.data.o,ov_SC05_007_jr_8013F350.o,tail4.data.o,ov_SC05_007_jr_8013FFD8.o,tail5.data.o,ov_SC05_007_jr_80140608.o,tail6.data.o,ov_SC05_007_jr_8015444C.o,tail7.data.o,ov_SC05_007_jr_80154C24.o,ov_SC05_007_jr_801588CC.o,tail8.data.o,ov_SC05_007_jr_80159C84.o,tail9.data.o,ov_SC05_007_jr_8015A3C8.o,tail10.data.o,ov_SC05_007_jr_8015AE2C.o,tail11.data.o,ov_SC05_007_jr_8015C32C.o,tail12.data.o,ov_SC05_007_jr_8016AB6C.o,tail13.data.o,ov_SC05_007_jr_801734BC.o,tail14.data.o,ov_SC05_007_jr_80178D40.o,tail15.data.o,ov_SC05_007_jr_8017A4AC.o,tail16.data.o,ov_SC05_007_jr_8017AE2C.o,ov_SC05_007_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_007/ov_SC05_007_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_007/ov_SC05_007_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_007/ov_SC05_007_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2856,7 +2856,7 @@ ov_SC05_008_ELF := $(ov_SC05_008_OUT).elf ov_SC05_008_MAPFILE := $(ov_SC05_008_OUT).map ov_SC05_008_LD_SCRIPT := $(ov_SC05_008_OUT).ld ov_SC05_008_SPLAT_YAML := config/splat.ov_SC05_008.yaml -ov_SC05_008_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_008_jr_8012ACE0.o,tail2.data.o,ov_SC05_008_jr_801380E0.o,tail3.data.o,ov_SC05_008_jr_8013F350.o,tail4.data.o,ov_SC05_008_jr_8013FFD8.o,tail5.data.o,ov_SC05_008_jr_80140608.o,tail6.data.o,ov_SC05_008_jr_8015444C.o,tail7.data.o,ov_SC05_008_jr_80154C24.o,ov_SC05_008_jr_801588CC.o,tail8.data.o,ov_SC05_008_jr_80159C84.o,tail9.data.o,ov_SC05_008_jr_8015A3C8.o,tail10.data.o,ov_SC05_008_jr_8015AE2C.o,tail11.data.o,ov_SC05_008_jr_8015C32C.o,tail12.data.o,ov_SC05_008_jr_8016AB6C.o,tail13.data.o,ov_SC05_008_jr_801734BC.o,tail14.data.o,ov_SC05_008_jr_80178D40.o,tail15.data.o,ov_SC05_008_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_008_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_008_jr_8012ACE0.o,tail2.data.o,ov_SC05_008_jr_801380E0.o,tail3.data.o,ov_SC05_008_jr_8013F350.o,tail4.data.o,ov_SC05_008_jr_8013FFD8.o,tail5.data.o,ov_SC05_008_jr_80140608.o,tail6.data.o,ov_SC05_008_jr_8015444C.o,tail7.data.o,ov_SC05_008_jr_80154C24.o,ov_SC05_008_jr_801588CC.o,tail8.data.o,ov_SC05_008_jr_80159C84.o,tail9.data.o,ov_SC05_008_jr_8015A3C8.o,tail10.data.o,ov_SC05_008_jr_8015AE2C.o,tail11.data.o,ov_SC05_008_jr_8015C32C.o,tail12.data.o,ov_SC05_008_jr_8016AB6C.o,tail13.data.o,ov_SC05_008_jr_801734BC.o,tail14.data.o,ov_SC05_008_jr_80178D40.o,tail15.data.o,ov_SC05_008_jr_8017A4AC.o,tail16.data.o,ov_SC05_008_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_008/ov_SC05_008_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_008/ov_SC05_008_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_008/ov_SC05_008_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2883,7 +2883,7 @@ ov_SC05_009_ELF := $(ov_SC05_009_OUT).elf ov_SC05_009_MAPFILE := $(ov_SC05_009_OUT).map ov_SC05_009_LD_SCRIPT := $(ov_SC05_009_OUT).ld ov_SC05_009_SPLAT_YAML := config/splat.ov_SC05_009.yaml -ov_SC05_009_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_009_jr_8012ACE0.o,tail2.data.o,ov_SC05_009_jr_801380E0.o,tail3.data.o,ov_SC05_009_jr_8013F350.o,tail4.data.o,ov_SC05_009_jr_8013FFD8.o,tail5.data.o,ov_SC05_009_jr_80140608.o,tail6.data.o,ov_SC05_009_jr_8015444C.o,tail7.data.o,ov_SC05_009_jr_80154C24.o,ov_SC05_009_jr_801588CC.o,tail8.data.o,ov_SC05_009_jr_80159C84.o,tail9.data.o,ov_SC05_009_jr_8015AE2C.o,tail10.data.o,ov_SC05_009_jr_8015C32C.o,tail11.data.o,ov_SC05_009_jr_8016AB6C.o,tail12.data.o,ov_SC05_009_jr_801734BC.o,tail13.data.o,ov_SC05_009_jr_80178D40.o,tail14.data.o,ov_SC05_009_jr_8017A4AC.o,tail15.data.o,ov_SC05_009_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_009_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_009_jr_8012ACE0.o,tail2.data.o,ov_SC05_009_jr_801380E0.o,tail3.data.o,ov_SC05_009_jr_8013F350.o,tail4.data.o,ov_SC05_009_jr_8013FFD8.o,tail5.data.o,ov_SC05_009_jr_80140608.o,tail6.data.o,ov_SC05_009_jr_8015444C.o,tail7.data.o,ov_SC05_009_jr_80154C24.o,ov_SC05_009_jr_801588CC.o,tail8.data.o,ov_SC05_009_jr_80159C84.o,tail9.data.o,ov_SC05_009_jr_8015AE2C.o,tail10.data.o,ov_SC05_009_jr_8015C32C.o,tail11.data.o,ov_SC05_009_jr_8016AB6C.o,tail12.data.o,ov_SC05_009_jr_801734BC.o,tail13.data.o,ov_SC05_009_jr_80178D40.o,tail14.data.o,ov_SC05_009_jr_8017A4AC.o,tail15.data.o,ov_SC05_009_jr_8017AE2C.o,ov_SC05_009_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_009/ov_SC05_009_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_009/ov_SC05_009_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_009/ov_SC05_009_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2910,7 +2910,7 @@ ov_SC05_010_ELF := $(ov_SC05_010_OUT).elf ov_SC05_010_MAPFILE := $(ov_SC05_010_OUT).map ov_SC05_010_LD_SCRIPT := $(ov_SC05_010_OUT).ld ov_SC05_010_SPLAT_YAML := config/splat.ov_SC05_010.yaml -ov_SC05_010_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_010_jr_8012ACE0.o,tail2.data.o,ov_SC05_010_jr_801380E0.o,tail3.data.o,ov_SC05_010_jr_8013F350.o,tail4.data.o,ov_SC05_010_jr_8013FFD8.o,tail5.data.o,ov_SC05_010_jr_80140608.o,tail6.data.o,ov_SC05_010_jr_8015444C.o,tail7.data.o,ov_SC05_010_jr_80154C24.o,ov_SC05_010_jr_801588CC.o,tail8.data.o,ov_SC05_010_jr_80159C84.o,tail9.data.o,ov_SC05_010_jr_8015A3C8.o,tail10.data.o,ov_SC05_010_jr_8015AE2C.o,tail11.data.o,ov_SC05_010_jr_8015C32C.o,tail12.data.o,ov_SC05_010_jr_8016AB6C.o,tail13.data.o,ov_SC05_010_jr_801734BC.o,tail14.data.o,ov_SC05_010_jr_80178D40.o,tail15.data.o,ov_SC05_010_jr_8017A4AC.o,tail16.data.o,ov_SC05_010_jr_8017C8D0.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_010_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_010_jr_8012ACE0.o,tail2.data.o,ov_SC05_010_jr_801380E0.o,tail3.data.o,ov_SC05_010_jr_8013F350.o,tail4.data.o,ov_SC05_010_jr_8013FFD8.o,tail5.data.o,ov_SC05_010_jr_80140608.o,tail6.data.o,ov_SC05_010_jr_8015444C.o,tail7.data.o,ov_SC05_010_jr_80154C24.o,ov_SC05_010_jr_801588CC.o,tail8.data.o,ov_SC05_010_jr_80159C84.o,tail9.data.o,ov_SC05_010_jr_8015A3C8.o,tail10.data.o,ov_SC05_010_jr_8015AE2C.o,tail11.data.o,ov_SC05_010_jr_8015C32C.o,tail12.data.o,ov_SC05_010_jr_8016AB6C.o,tail13.data.o,ov_SC05_010_jr_801734BC.o,tail14.data.o,ov_SC05_010_jr_80178D40.o,tail15.data.o,ov_SC05_010_jr_8017A4AC.o,tail16.data.o,ov_SC05_010_jr_8017AE2C.o,tail17.data.o,ov_SC05_010_jr_8017C8D0.o,tail18.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_010/ov_SC05_010_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_010/ov_SC05_010_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_010/ov_SC05_010_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2937,7 +2937,7 @@ ov_SC05_011_ELF := $(ov_SC05_011_OUT).elf ov_SC05_011_MAPFILE := $(ov_SC05_011_OUT).map ov_SC05_011_LD_SCRIPT := $(ov_SC05_011_OUT).ld ov_SC05_011_SPLAT_YAML := config/splat.ov_SC05_011.yaml -ov_SC05_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_011_jr_8012ACE0.o,tail2.data.o,ov_SC05_011_jr_801380E0.o,tail3.data.o,ov_SC05_011_jr_8013F350.o,tail4.data.o,ov_SC05_011_jr_8013FFD8.o,tail5.data.o,ov_SC05_011_jr_80140608.o,tail6.data.o,ov_SC05_011_jr_8015444C.o,tail7.data.o,ov_SC05_011_jr_80154C24.o,ov_SC05_011_jr_801588CC.o,tail8.data.o,ov_SC05_011_jr_80159C84.o,tail9.data.o,ov_SC05_011_jr_8015A3C8.o,tail10.data.o,ov_SC05_011_jr_8015AE2C.o,tail11.data.o,ov_SC05_011_jr_8015C32C.o,tail12.data.o,ov_SC05_011_jr_8016AB6C.o,tail13.data.o,ov_SC05_011_jr_801734BC.o,tail14.data.o,ov_SC05_011_jr_80178D40.o,tail15.data.o,ov_SC05_011_jr_8017A4AC.o,tail16.data.o,ov_SC05_011_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_011_jr_8012ACE0.o,tail2.data.o,ov_SC05_011_jr_801380E0.o,tail3.data.o,ov_SC05_011_jr_8013F350.o,tail4.data.o,ov_SC05_011_jr_8013FFD8.o,tail5.data.o,ov_SC05_011_jr_80140608.o,tail6.data.o,ov_SC05_011_jr_8015444C.o,tail7.data.o,ov_SC05_011_jr_80154C24.o,ov_SC05_011_jr_801588CC.o,tail8.data.o,ov_SC05_011_jr_80159C84.o,tail9.data.o,ov_SC05_011_jr_8015A3C8.o,tail10.data.o,ov_SC05_011_jr_8015AE2C.o,tail11.data.o,ov_SC05_011_jr_8015C32C.o,tail12.data.o,ov_SC05_011_jr_8016AB6C.o,tail13.data.o,ov_SC05_011_jr_801734BC.o,tail14.data.o,ov_SC05_011_jr_80178D40.o,tail15.data.o,ov_SC05_011_jr_8017A4AC.o,tail16.data.o,ov_SC05_011_jr_8017AE2C.o,ov_SC05_011_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_011/ov_SC05_011_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_011/ov_SC05_011_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_011/ov_SC05_011_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2964,7 +2964,7 @@ ov_SC05_017_ELF := $(ov_SC05_017_OUT).elf ov_SC05_017_MAPFILE := $(ov_SC05_017_OUT).map ov_SC05_017_LD_SCRIPT := $(ov_SC05_017_OUT).ld ov_SC05_017_SPLAT_YAML := config/splat.ov_SC05_017.yaml -ov_SC05_017_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_017_jr_8012ACE0.o,tail2.data.o,ov_SC05_017_jr_801380E0.o,tail3.data.o,ov_SC05_017_jr_8013F350.o,tail4.data.o,ov_SC05_017_jr_8013FFD8.o,tail5.data.o,ov_SC05_017_jr_80140608.o,tail6.data.o,ov_SC05_017_jr_8015444C.o,tail7.data.o,ov_SC05_017_jr_80154C24.o,ov_SC05_017_jr_801588CC.o,tail8.data.o,ov_SC05_017_jr_80159C84.o,tail9.data.o,ov_SC05_017_jr_8015A3C8.o,tail10.data.o,ov_SC05_017_jr_8015AE2C.o,tail11.data.o,ov_SC05_017_jr_8015C32C.o,tail12.data.o,ov_SC05_017_jr_8016AB6C.o,tail13.data.o,ov_SC05_017_jr_801734BC.o,tail14.data.o,ov_SC05_017_jr_80178D40.o,tail15.data.o,ov_SC05_017_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_017_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_017_jr_8012ACE0.o,tail2.data.o,ov_SC05_017_jr_801380E0.o,tail3.data.o,ov_SC05_017_jr_8013F350.o,tail4.data.o,ov_SC05_017_jr_8013FFD8.o,tail5.data.o,ov_SC05_017_jr_80140608.o,tail6.data.o,ov_SC05_017_jr_8015444C.o,tail7.data.o,ov_SC05_017_jr_80154C24.o,ov_SC05_017_jr_801588CC.o,tail8.data.o,ov_SC05_017_jr_80159C84.o,tail9.data.o,ov_SC05_017_jr_8015A3C8.o,tail10.data.o,ov_SC05_017_jr_8015AE2C.o,tail11.data.o,ov_SC05_017_jr_8015C32C.o,tail12.data.o,ov_SC05_017_jr_8016AB6C.o,tail13.data.o,ov_SC05_017_jr_801734BC.o,tail14.data.o,ov_SC05_017_jr_80178D40.o,tail15.data.o,ov_SC05_017_jr_8017A4AC.o,tail16.data.o,ov_SC05_017_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_017/ov_SC05_017_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_017/ov_SC05_017_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_017/ov_SC05_017_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -2991,7 +2991,7 @@ ov_SC05_018_ELF := $(ov_SC05_018_OUT).elf ov_SC05_018_MAPFILE := $(ov_SC05_018_OUT).map ov_SC05_018_LD_SCRIPT := $(ov_SC05_018_OUT).ld ov_SC05_018_SPLAT_YAML := config/splat.ov_SC05_018.yaml -ov_SC05_018_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_018_jr_8012ACE0.o,tail2.data.o,ov_SC05_018_jr_801380E0.o,tail3.data.o,ov_SC05_018_jr_8013F350.o,tail4.data.o,ov_SC05_018_jr_8013FFD8.o,tail5.data.o,ov_SC05_018_jr_80140608.o,tail6.data.o,ov_SC05_018_jr_8015444C.o,tail7.data.o,ov_SC05_018_jr_80154C24.o,ov_SC05_018_jr_801588CC.o,tail8.data.o,ov_SC05_018_jr_80159C84.o,tail9.data.o,ov_SC05_018_jr_8015A3C8.o,tail10.data.o,ov_SC05_018_jr_8015AE2C.o,tail11.data.o,ov_SC05_018_jr_8015C32C.o,tail12.data.o,ov_SC05_018_jr_8016AB6C.o,tail13.data.o,ov_SC05_018_jr_801734BC.o,tail14.data.o,ov_SC05_018_jr_80178D40.o,tail15.data.o,ov_SC05_018_jr_8017A4AC.o,tail16.data.o,ov_SC05_018_jr_8017D604.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_018_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_018_jr_8012ACE0.o,tail2.data.o,ov_SC05_018_jr_801380E0.o,tail3.data.o,ov_SC05_018_jr_8013F350.o,tail4.data.o,ov_SC05_018_jr_8013FFD8.o,tail5.data.o,ov_SC05_018_jr_80140608.o,tail6.data.o,ov_SC05_018_jr_8015444C.o,tail7.data.o,ov_SC05_018_jr_80154C24.o,ov_SC05_018_jr_801588CC.o,tail8.data.o,ov_SC05_018_jr_80159C84.o,tail9.data.o,ov_SC05_018_jr_8015A3C8.o,tail10.data.o,ov_SC05_018_jr_8015AE2C.o,tail11.data.o,ov_SC05_018_jr_8015C32C.o,tail12.data.o,ov_SC05_018_jr_8016AB6C.o,tail13.data.o,ov_SC05_018_jr_801734BC.o,tail14.data.o,ov_SC05_018_jr_80178D40.o,tail15.data.o,ov_SC05_018_jr_8017A4AC.o,tail16.data.o,ov_SC05_018_jr_8017AE2C.o,ov_SC05_018_jr_8017D604.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_018/ov_SC05_018_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_018/ov_SC05_018_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_018/ov_SC05_018_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3018,7 +3018,7 @@ ov_SC05_019_ELF := $(ov_SC05_019_OUT).elf ov_SC05_019_MAPFILE := $(ov_SC05_019_OUT).map ov_SC05_019_LD_SCRIPT := $(ov_SC05_019_OUT).ld ov_SC05_019_SPLAT_YAML := config/splat.ov_SC05_019.yaml -ov_SC05_019_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_019_jr_8012ACE0.o,tail2.data.o,ov_SC05_019_jr_801380E0.o,tail3.data.o,ov_SC05_019_jr_8013F350.o,tail4.data.o,ov_SC05_019_jr_8013FFD8.o,tail5.data.o,ov_SC05_019_jr_80140608.o,tail6.data.o,ov_SC05_019_jr_8015444C.o,tail7.data.o,ov_SC05_019_jr_80154C24.o,ov_SC05_019_jr_801588CC.o,tail8.data.o,ov_SC05_019_jr_80159C84.o,tail9.data.o,ov_SC05_019_jr_8015A3C8.o,tail10.data.o,ov_SC05_019_jr_8015AE2C.o,tail11.data.o,ov_SC05_019_jr_8015C32C.o,tail12.data.o,ov_SC05_019_jr_8016AB6C.o,tail13.data.o,ov_SC05_019_jr_801734BC.o,tail14.data.o,ov_SC05_019_jr_80178D40.o,tail15.data.o,ov_SC05_019_jr_8017A4AC.o,tail16.data.o,ov_SC05_019_jr_8017D5C0.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_019_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_019_jr_8012ACE0.o,tail2.data.o,ov_SC05_019_jr_801380E0.o,tail3.data.o,ov_SC05_019_jr_8013F350.o,tail4.data.o,ov_SC05_019_jr_8013FFD8.o,tail5.data.o,ov_SC05_019_jr_80140608.o,tail6.data.o,ov_SC05_019_jr_8015444C.o,tail7.data.o,ov_SC05_019_jr_80154C24.o,ov_SC05_019_jr_801588CC.o,tail8.data.o,ov_SC05_019_jr_80159C84.o,tail9.data.o,ov_SC05_019_jr_8015A3C8.o,tail10.data.o,ov_SC05_019_jr_8015AE2C.o,tail11.data.o,ov_SC05_019_jr_8015C32C.o,tail12.data.o,ov_SC05_019_jr_8016AB6C.o,tail13.data.o,ov_SC05_019_jr_801734BC.o,tail14.data.o,ov_SC05_019_jr_80178D40.o,tail15.data.o,ov_SC05_019_jr_8017A4AC.o,tail16.data.o,ov_SC05_019_jr_8017AE2C.o,tail17.data.o,ov_SC05_019_jr_8017D5C0.o,tail18.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_019/ov_SC05_019_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_019/ov_SC05_019_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_019/ov_SC05_019_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3045,7 +3045,7 @@ ov_SC06_006_ELF := $(ov_SC06_006_OUT).elf ov_SC06_006_MAPFILE := $(ov_SC06_006_OUT).map ov_SC06_006_LD_SCRIPT := $(ov_SC06_006_OUT).ld ov_SC06_006_SPLAT_YAML := config/splat.ov_SC06_006.yaml -ov_SC06_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_006_jr_8012ACE0.o,tail2.data.o,ov_SC06_006_jr_801380E0.o,tail3.data.o,ov_SC06_006_jr_8013F350.o,tail4.data.o,ov_SC06_006_jr_8013FFD8.o,tail5.data.o,ov_SC06_006_jr_80140608.o,tail6.data.o,ov_SC06_006_jr_8015444C.o,tail7.data.o,ov_SC06_006_jr_80154C24.o,ov_SC06_006_jr_801588CC.o,tail8.data.o,ov_SC06_006_jr_80159C84.o,tail9.data.o,ov_SC06_006_jr_8015A3C8.o,tail10.data.o,ov_SC06_006_jr_8015AE2C.o,tail11.data.o,ov_SC06_006_jr_8015C32C.o,tail12.data.o,ov_SC06_006_jr_8016AB6C.o,tail13.data.o,ov_SC06_006_jr_801734BC.o,tail14.data.o,ov_SC06_006_jr_80178D40.o,tail15.data.o,ov_SC06_006_jr_8017A4AC.o,tail16.data.o,ov_SC06_006_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_006_jr_8012ACE0.o,tail2.data.o,ov_SC06_006_jr_801380E0.o,tail3.data.o,ov_SC06_006_jr_8013F350.o,tail4.data.o,ov_SC06_006_jr_8013FFD8.o,tail5.data.o,ov_SC06_006_jr_80140608.o,tail6.data.o,ov_SC06_006_jr_8015444C.o,tail7.data.o,ov_SC06_006_jr_80154C24.o,ov_SC06_006_jr_801588CC.o,tail8.data.o,ov_SC06_006_jr_80159C84.o,tail9.data.o,ov_SC06_006_jr_8015A3C8.o,tail10.data.o,ov_SC06_006_jr_8015AE2C.o,tail11.data.o,ov_SC06_006_jr_8015C32C.o,tail12.data.o,ov_SC06_006_jr_8016AB6C.o,tail13.data.o,ov_SC06_006_jr_801734BC.o,tail14.data.o,ov_SC06_006_jr_80178D40.o,tail15.data.o,ov_SC06_006_jr_8017A4AC.o,tail16.data.o,ov_SC06_006_jr_8017AE2C.o,ov_SC06_006_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_006/ov_SC06_006_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_006/ov_SC06_006_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_006/ov_SC06_006_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3072,7 +3072,7 @@ ov_SC06_008_ELF := $(ov_SC06_008_OUT).elf ov_SC06_008_MAPFILE := $(ov_SC06_008_OUT).map ov_SC06_008_LD_SCRIPT := $(ov_SC06_008_OUT).ld ov_SC06_008_SPLAT_YAML := config/splat.ov_SC06_008.yaml -ov_SC06_008_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_008_jr_8012ACE0.o,tail2.data.o,ov_SC06_008_jr_801380E0.o,tail3.data.o,ov_SC06_008_jr_8013F350.o,tail4.data.o,ov_SC06_008_jr_8013FFD8.o,tail5.data.o,ov_SC06_008_jr_80140608.o,tail6.data.o,ov_SC06_008_jr_8015444C.o,tail7.data.o,ov_SC06_008_jr_80154C24.o,ov_SC06_008_jr_801588CC.o,tail8.data.o,ov_SC06_008_jr_80159C84.o,tail9.data.o,ov_SC06_008_jr_8015A3C8.o,tail10.data.o,ov_SC06_008_jr_8015AE2C.o,tail11.data.o,ov_SC06_008_jr_8015C32C.o,tail12.data.o,ov_SC06_008_jr_8016AB6C.o,tail13.data.o,ov_SC06_008_jr_801734BC.o,tail14.data.o,ov_SC06_008_jr_80178D40.o,tail15.data.o,ov_SC06_008_jr_8017A4AC.o,tail16.data.o,ov_SC06_008_jr_8017C294.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_008_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_008_jr_8012ACE0.o,tail2.data.o,ov_SC06_008_jr_801380E0.o,tail3.data.o,ov_SC06_008_jr_8013F350.o,tail4.data.o,ov_SC06_008_jr_8013FFD8.o,tail5.data.o,ov_SC06_008_jr_80140608.o,tail6.data.o,ov_SC06_008_jr_8015444C.o,tail7.data.o,ov_SC06_008_jr_80154C24.o,ov_SC06_008_jr_801588CC.o,tail8.data.o,ov_SC06_008_jr_80159C84.o,tail9.data.o,ov_SC06_008_jr_8015A3C8.o,tail10.data.o,ov_SC06_008_jr_8015AE2C.o,tail11.data.o,ov_SC06_008_jr_8015C32C.o,tail12.data.o,ov_SC06_008_jr_8016AB6C.o,tail13.data.o,ov_SC06_008_jr_801734BC.o,tail14.data.o,ov_SC06_008_jr_80178D40.o,tail15.data.o,ov_SC06_008_jr_8017A4AC.o,tail16.data.o,ov_SC06_008_jr_8017AE2C.o,ov_SC06_008_jr_8017C294.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_008/ov_SC06_008_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_008/ov_SC06_008_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_008/ov_SC06_008_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3126,7 +3126,7 @@ ov_SC06_011_ELF := $(ov_SC06_011_OUT).elf ov_SC06_011_MAPFILE := $(ov_SC06_011_OUT).map ov_SC06_011_LD_SCRIPT := $(ov_SC06_011_OUT).ld ov_SC06_011_SPLAT_YAML := config/splat.ov_SC06_011.yaml -ov_SC06_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_011_jr_8012ACE0.o,tail2.data.o,ov_SC06_011_jr_801380E0.o,tail3.data.o,ov_SC06_011_jr_8013F350.o,tail4.data.o,ov_SC06_011_jr_8013FFD8.o,tail5.data.o,ov_SC06_011_jr_80140608.o,tail6.data.o,ov_SC06_011_jr_8015444C.o,tail7.data.o,ov_SC06_011_jr_80154C24.o,ov_SC06_011_jr_801588CC.o,tail8.data.o,ov_SC06_011_jr_80159C84.o,tail9.data.o,ov_SC06_011_jr_8015A3C8.o,tail10.data.o,ov_SC06_011_jr_8015AE2C.o,tail11.data.o,ov_SC06_011_jr_8015C32C.o,tail12.data.o,ov_SC06_011_jr_8016AB6C.o,tail13.data.o,ov_SC06_011_jr_801734BC.o,tail14.data.o,ov_SC06_011_jr_80178D40.o,tail15.data.o,ov_SC06_011_jr_8017A4AC.o,tail16.data.o,ov_SC06_011_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_011_jr_8012ACE0.o,tail2.data.o,ov_SC06_011_jr_801380E0.o,tail3.data.o,ov_SC06_011_jr_8013F350.o,tail4.data.o,ov_SC06_011_jr_8013FFD8.o,tail5.data.o,ov_SC06_011_jr_80140608.o,tail6.data.o,ov_SC06_011_jr_8015444C.o,tail7.data.o,ov_SC06_011_jr_80154C24.o,ov_SC06_011_jr_801588CC.o,tail8.data.o,ov_SC06_011_jr_80159C84.o,tail9.data.o,ov_SC06_011_jr_8015A3C8.o,tail10.data.o,ov_SC06_011_jr_8015AE2C.o,tail11.data.o,ov_SC06_011_jr_8015C32C.o,tail12.data.o,ov_SC06_011_jr_8016AB6C.o,tail13.data.o,ov_SC06_011_jr_801734BC.o,tail14.data.o,ov_SC06_011_jr_80178D40.o,tail15.data.o,ov_SC06_011_jr_8017A4AC.o,tail16.data.o,ov_SC06_011_jr_8017AE2C.o,ov_SC06_011_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_011/ov_SC06_011_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_011/ov_SC06_011_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_011/ov_SC06_011_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3153,7 +3153,7 @@ ov_SC06_013_ELF := $(ov_SC06_013_OUT).elf ov_SC06_013_MAPFILE := $(ov_SC06_013_OUT).map ov_SC06_013_LD_SCRIPT := $(ov_SC06_013_OUT).ld ov_SC06_013_SPLAT_YAML := config/splat.ov_SC06_013.yaml -ov_SC06_013_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_013_jr_8012ACE0.o,tail2.data.o,ov_SC06_013_jr_801380E0.o,tail3.data.o,ov_SC06_013_jr_8013F350.o,tail4.data.o,ov_SC06_013_jr_8013FFD8.o,tail5.data.o,ov_SC06_013_jr_80140608.o,tail6.data.o,ov_SC06_013_jr_8015444C.o,tail7.data.o,ov_SC06_013_jr_80154C24.o,ov_SC06_013_jr_801588CC.o,tail8.data.o,ov_SC06_013_jr_80159C84.o,tail9.data.o,ov_SC06_013_jr_8015A3C8.o,tail10.data.o,ov_SC06_013_jr_8015AE2C.o,tail11.data.o,ov_SC06_013_jr_8015C32C.o,tail12.data.o,ov_SC06_013_jr_8016AB6C.o,tail13.data.o,ov_SC06_013_jr_801734BC.o,tail14.data.o,ov_SC06_013_jr_80178D40.o,tail15.data.o,ov_SC06_013_jr_8017A4AC.o,tail16.data.o,ov_SC06_013_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_013_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_013_jr_8012ACE0.o,tail2.data.o,ov_SC06_013_jr_801380E0.o,tail3.data.o,ov_SC06_013_jr_8013F350.o,tail4.data.o,ov_SC06_013_jr_8013FFD8.o,tail5.data.o,ov_SC06_013_jr_80140608.o,tail6.data.o,ov_SC06_013_jr_8015444C.o,tail7.data.o,ov_SC06_013_jr_80154C24.o,ov_SC06_013_jr_801588CC.o,tail8.data.o,ov_SC06_013_jr_80159C84.o,tail9.data.o,ov_SC06_013_jr_8015A3C8.o,tail10.data.o,ov_SC06_013_jr_8015AE2C.o,tail11.data.o,ov_SC06_013_jr_8015C32C.o,tail12.data.o,ov_SC06_013_jr_8016AB6C.o,tail13.data.o,ov_SC06_013_jr_801734BC.o,tail14.data.o,ov_SC06_013_jr_80178D40.o,tail15.data.o,ov_SC06_013_jr_8017A4AC.o,tail16.data.o,ov_SC06_013_jr_8017AE2C.o,ov_SC06_013_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_013/ov_SC06_013_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_013/ov_SC06_013_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_013/ov_SC06_013_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3180,7 +3180,7 @@ ov_SC06_014_ELF := $(ov_SC06_014_OUT).elf ov_SC06_014_MAPFILE := $(ov_SC06_014_OUT).map ov_SC06_014_LD_SCRIPT := $(ov_SC06_014_OUT).ld ov_SC06_014_SPLAT_YAML := config/splat.ov_SC06_014.yaml -ov_SC06_014_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_014_jr_8012ACE0.o,tail2.data.o,ov_SC06_014_jr_801380E0.o,tail3.data.o,ov_SC06_014_jr_8013F350.o,tail4.data.o,ov_SC06_014_jr_8013FFD8.o,tail5.data.o,ov_SC06_014_jr_80140608.o,tail6.data.o,ov_SC06_014_jr_8015444C.o,tail7.data.o,ov_SC06_014_jr_80154C24.o,ov_SC06_014_jr_801588CC.o,tail8.data.o,ov_SC06_014_jr_80159C84.o,tail9.data.o,ov_SC06_014_jr_8015A3C8.o,tail10.data.o,ov_SC06_014_jr_8015AE2C.o,tail11.data.o,ov_SC06_014_jr_8015C32C.o,tail12.data.o,ov_SC06_014_jr_8016AB6C.o,tail13.data.o,ov_SC06_014_jr_801734BC.o,tail14.data.o,ov_SC06_014_jr_80178D40.o,tail15.data.o,ov_SC06_014_jr_8017A4AC.o,tail16.data.o,ov_SC06_014_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_014_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_014_jr_8012ACE0.o,tail2.data.o,ov_SC06_014_jr_801380E0.o,tail3.data.o,ov_SC06_014_jr_8013F350.o,tail4.data.o,ov_SC06_014_jr_8013FFD8.o,tail5.data.o,ov_SC06_014_jr_80140608.o,tail6.data.o,ov_SC06_014_jr_8015444C.o,tail7.data.o,ov_SC06_014_jr_80154C24.o,ov_SC06_014_jr_801588CC.o,tail8.data.o,ov_SC06_014_jr_80159C84.o,tail9.data.o,ov_SC06_014_jr_8015A3C8.o,tail10.data.o,ov_SC06_014_jr_8015AE2C.o,tail11.data.o,ov_SC06_014_jr_8015C32C.o,tail12.data.o,ov_SC06_014_jr_8016AB6C.o,tail13.data.o,ov_SC06_014_jr_801734BC.o,tail14.data.o,ov_SC06_014_jr_80178D40.o,tail15.data.o,ov_SC06_014_jr_8017A4AC.o,tail16.data.o,ov_SC06_014_jr_8017AE2C.o,ov_SC06_014_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_014/ov_SC06_014_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_014/ov_SC06_014_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_014/ov_SC06_014_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3207,7 +3207,7 @@ ov_SC06_015_ELF := $(ov_SC06_015_OUT).elf ov_SC06_015_MAPFILE := $(ov_SC06_015_OUT).map ov_SC06_015_LD_SCRIPT := $(ov_SC06_015_OUT).ld ov_SC06_015_SPLAT_YAML := config/splat.ov_SC06_015.yaml -ov_SC06_015_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_015_jr_8012ACE0.o,tail2.data.o,ov_SC06_015_jr_801380E0.o,tail3.data.o,ov_SC06_015_jr_8013F350.o,tail4.data.o,ov_SC06_015_jr_8013FFD8.o,tail5.data.o,ov_SC06_015_jr_80140608.o,tail6.data.o,ov_SC06_015_jr_8015444C.o,tail7.data.o,ov_SC06_015_jr_80154C24.o,ov_SC06_015_jr_801588CC.o,tail8.data.o,ov_SC06_015_jr_80159C84.o,tail9.data.o,ov_SC06_015_jr_8015A3C8.o,tail10.data.o,ov_SC06_015_jr_8015AE2C.o,tail11.data.o,ov_SC06_015_jr_8015C32C.o,tail12.data.o,ov_SC06_015_jr_8016AB6C.o,tail13.data.o,ov_SC06_015_jr_801734BC.o,tail14.data.o,ov_SC06_015_jr_80178D40.o,tail15.data.o,ov_SC06_015_jr_8017A4AC.o,tail16.data.o,ov_SC06_015_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_015_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_015_jr_8012ACE0.o,tail2.data.o,ov_SC06_015_jr_801380E0.o,tail3.data.o,ov_SC06_015_jr_8013F350.o,tail4.data.o,ov_SC06_015_jr_8013FFD8.o,tail5.data.o,ov_SC06_015_jr_80140608.o,tail6.data.o,ov_SC06_015_jr_8015444C.o,tail7.data.o,ov_SC06_015_jr_80154C24.o,ov_SC06_015_jr_801588CC.o,tail8.data.o,ov_SC06_015_jr_80159C84.o,tail9.data.o,ov_SC06_015_jr_8015A3C8.o,tail10.data.o,ov_SC06_015_jr_8015AE2C.o,tail11.data.o,ov_SC06_015_jr_8015C32C.o,tail12.data.o,ov_SC06_015_jr_8016AB6C.o,tail13.data.o,ov_SC06_015_jr_801734BC.o,tail14.data.o,ov_SC06_015_jr_80178D40.o,tail15.data.o,ov_SC06_015_jr_8017A4AC.o,tail16.data.o,ov_SC06_015_jr_8017AE2C.o,ov_SC06_015_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_015/ov_SC06_015_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_015/ov_SC06_015_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_015/ov_SC06_015_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3234,7 +3234,7 @@ ov_SC06_016_ELF := $(ov_SC06_016_OUT).elf ov_SC06_016_MAPFILE := $(ov_SC06_016_OUT).map ov_SC06_016_LD_SCRIPT := $(ov_SC06_016_OUT).ld ov_SC06_016_SPLAT_YAML := config/splat.ov_SC06_016.yaml -ov_SC06_016_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_016_jr_8012ACE0.o,tail2.data.o,ov_SC06_016_jr_801380E0.o,tail3.data.o,ov_SC06_016_jr_8013F350.o,tail4.data.o,ov_SC06_016_jr_8013FFD8.o,tail5.data.o,ov_SC06_016_jr_80140608.o,tail6.data.o,ov_SC06_016_jr_8015444C.o,tail7.data.o,ov_SC06_016_jr_80154C24.o,ov_SC06_016_jr_801588CC.o,tail8.data.o,ov_SC06_016_jr_80159C84.o,tail9.data.o,ov_SC06_016_jr_8015A3C8.o,tail10.data.o,ov_SC06_016_jr_8015AE2C.o,tail11.data.o,ov_SC06_016_jr_8015C32C.o,tail12.data.o,ov_SC06_016_jr_8016AB6C.o,tail13.data.o,ov_SC06_016_jr_801734BC.o,tail14.data.o,ov_SC06_016_jr_80178D40.o,tail15.data.o,ov_SC06_016_jr_8017A4AC.o,tail16.data.o,ov_SC06_016_jr_8017C8D0.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_016_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_016_jr_8012ACE0.o,tail2.data.o,ov_SC06_016_jr_801380E0.o,tail3.data.o,ov_SC06_016_jr_8013F350.o,tail4.data.o,ov_SC06_016_jr_8013FFD8.o,tail5.data.o,ov_SC06_016_jr_80140608.o,tail6.data.o,ov_SC06_016_jr_8015444C.o,tail7.data.o,ov_SC06_016_jr_80154C24.o,ov_SC06_016_jr_801588CC.o,tail8.data.o,ov_SC06_016_jr_80159C84.o,tail9.data.o,ov_SC06_016_jr_8015A3C8.o,tail10.data.o,ov_SC06_016_jr_8015AE2C.o,tail11.data.o,ov_SC06_016_jr_8015C32C.o,tail12.data.o,ov_SC06_016_jr_8016AB6C.o,tail13.data.o,ov_SC06_016_jr_801734BC.o,tail14.data.o,ov_SC06_016_jr_80178D40.o,tail15.data.o,ov_SC06_016_jr_8017A4AC.o,tail16.data.o,ov_SC06_016_jr_8017AE2C.o,tail17.data.o,ov_SC06_016_jr_8017C8D0.o,tail18.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_016/ov_SC06_016_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_016/ov_SC06_016_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_016/ov_SC06_016_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3261,7 +3261,7 @@ ov_SC06_018_ELF := $(ov_SC06_018_OUT).elf ov_SC06_018_MAPFILE := $(ov_SC06_018_OUT).map ov_SC06_018_LD_SCRIPT := $(ov_SC06_018_OUT).ld ov_SC06_018_SPLAT_YAML := config/splat.ov_SC06_018.yaml -ov_SC06_018_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_018_jr_8012ACE0.o,tail2.data.o,ov_SC06_018_jr_801380E0.o,tail3.data.o,ov_SC06_018_jr_8013F350.o,tail4.data.o,ov_SC06_018_jr_8013FFD8.o,tail5.data.o,ov_SC06_018_jr_80140608.o,tail6.data.o,ov_SC06_018_jr_8015444C.o,tail7.data.o,ov_SC06_018_jr_80154C24.o,ov_SC06_018_jr_801588CC.o,tail8.data.o,ov_SC06_018_jr_80159C84.o,tail9.data.o,ov_SC06_018_jr_8015A3C8.o,tail10.data.o,ov_SC06_018_jr_8015AE2C.o,tail11.data.o,ov_SC06_018_jr_8015C32C.o,tail12.data.o,ov_SC06_018_jr_8016AB6C.o,tail13.data.o,ov_SC06_018_jr_801734BC.o,tail14.data.o,ov_SC06_018_jr_80178D40.o,tail15.data.o,ov_SC06_018_jr_8017A4AC.o,tail16.data.o,ov_SC06_018_jr_8017C24C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_018_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_018_jr_8012ACE0.o,tail2.data.o,ov_SC06_018_jr_801380E0.o,tail3.data.o,ov_SC06_018_jr_8013F350.o,tail4.data.o,ov_SC06_018_jr_8013FFD8.o,tail5.data.o,ov_SC06_018_jr_80140608.o,tail6.data.o,ov_SC06_018_jr_8015444C.o,tail7.data.o,ov_SC06_018_jr_80154C24.o,ov_SC06_018_jr_801588CC.o,tail8.data.o,ov_SC06_018_jr_80159C84.o,tail9.data.o,ov_SC06_018_jr_8015A3C8.o,tail10.data.o,ov_SC06_018_jr_8015AE2C.o,tail11.data.o,ov_SC06_018_jr_8015C32C.o,tail12.data.o,ov_SC06_018_jr_8016AB6C.o,tail13.data.o,ov_SC06_018_jr_801734BC.o,tail14.data.o,ov_SC06_018_jr_80178D40.o,tail15.data.o,ov_SC06_018_jr_8017A4AC.o,tail16.data.o,ov_SC06_018_jr_8017AE2C.o,ov_SC06_018_jr_8017C24C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_018/ov_SC06_018_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_018/ov_SC06_018_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_018/ov_SC06_018_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3288,7 +3288,7 @@ ov_SC06_020_ELF := $(ov_SC06_020_OUT).elf ov_SC06_020_MAPFILE := $(ov_SC06_020_OUT).map ov_SC06_020_LD_SCRIPT := $(ov_SC06_020_OUT).ld ov_SC06_020_SPLAT_YAML := config/splat.ov_SC06_020.yaml -ov_SC06_020_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_020_jr_8012ACE0.o,tail2.data.o,ov_SC06_020_jr_801380E0.o,tail3.data.o,ov_SC06_020_jr_8013F350.o,tail4.data.o,ov_SC06_020_jr_8013FFD8.o,tail5.data.o,ov_SC06_020_jr_80140608.o,tail6.data.o,ov_SC06_020_jr_8015444C.o,tail7.data.o,ov_SC06_020_jr_80154C24.o,ov_SC06_020_jr_801588CC.o,tail8.data.o,ov_SC06_020_jr_80159C84.o,tail9.data.o,ov_SC06_020_jr_8015A3C8.o,tail10.data.o,ov_SC06_020_jr_8015AE2C.o,tail11.data.o,ov_SC06_020_jr_8015C32C.o,tail12.data.o,ov_SC06_020_jr_8016AB6C.o,tail13.data.o,ov_SC06_020_jr_801734BC.o,tail14.data.o,ov_SC06_020_jr_80178D40.o,tail15.data.o,ov_SC06_020_jr_8017A4AC.o,tail16.data.o,ov_SC06_020_jr_8017C24C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_020_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_020_jr_8012ACE0.o,tail2.data.o,ov_SC06_020_jr_801380E0.o,tail3.data.o,ov_SC06_020_jr_8013F350.o,tail4.data.o,ov_SC06_020_jr_8013FFD8.o,tail5.data.o,ov_SC06_020_jr_80140608.o,tail6.data.o,ov_SC06_020_jr_8015444C.o,tail7.data.o,ov_SC06_020_jr_80154C24.o,ov_SC06_020_jr_801588CC.o,tail8.data.o,ov_SC06_020_jr_80159C84.o,tail9.data.o,ov_SC06_020_jr_8015A3C8.o,tail10.data.o,ov_SC06_020_jr_8015AE2C.o,tail11.data.o,ov_SC06_020_jr_8015C32C.o,tail12.data.o,ov_SC06_020_jr_8016AB6C.o,tail13.data.o,ov_SC06_020_jr_801734BC.o,tail14.data.o,ov_SC06_020_jr_80178D40.o,tail15.data.o,ov_SC06_020_jr_8017A4AC.o,tail16.data.o,ov_SC06_020_jr_8017AE2C.o,ov_SC06_020_jr_8017C24C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_020/ov_SC06_020_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_020/ov_SC06_020_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_020/ov_SC06_020_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3315,7 +3315,7 @@ ov_SC06_022_ELF := $(ov_SC06_022_OUT).elf ov_SC06_022_MAPFILE := $(ov_SC06_022_OUT).map ov_SC06_022_LD_SCRIPT := $(ov_SC06_022_OUT).ld ov_SC06_022_SPLAT_YAML := config/splat.ov_SC06_022.yaml -ov_SC06_022_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_022_jr_8012ACE0.o,tail2.data.o,ov_SC06_022_jr_801380E0.o,tail3.data.o,ov_SC06_022_jr_8013F350.o,tail4.data.o,ov_SC06_022_jr_8013FFD8.o,tail5.data.o,ov_SC06_022_jr_80140608.o,tail6.data.o,ov_SC06_022_jr_8015444C.o,tail7.data.o,ov_SC06_022_jr_80154C24.o,ov_SC06_022_jr_801588CC.o,tail8.data.o,ov_SC06_022_jr_80159C84.o,tail9.data.o,ov_SC06_022_jr_8015A3C8.o,tail10.data.o,ov_SC06_022_jr_8015AE2C.o,tail11.data.o,ov_SC06_022_jr_8015C32C.o,tail12.data.o,ov_SC06_022_jr_8016AB6C.o,tail13.data.o,ov_SC06_022_jr_801734BC.o,tail14.data.o,ov_SC06_022_jr_80178D40.o,tail15.data.o,ov_SC06_022_jr_8017A4AC.o,tail16.data.o,ov_SC06_022_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_022_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_022_jr_8012ACE0.o,tail2.data.o,ov_SC06_022_jr_801380E0.o,tail3.data.o,ov_SC06_022_jr_8013F350.o,tail4.data.o,ov_SC06_022_jr_8013FFD8.o,tail5.data.o,ov_SC06_022_jr_80140608.o,tail6.data.o,ov_SC06_022_jr_8015444C.o,tail7.data.o,ov_SC06_022_jr_80154C24.o,ov_SC06_022_jr_801588CC.o,tail8.data.o,ov_SC06_022_jr_80159C84.o,tail9.data.o,ov_SC06_022_jr_8015A3C8.o,tail10.data.o,ov_SC06_022_jr_8015AE2C.o,tail11.data.o,ov_SC06_022_jr_8015C32C.o,tail12.data.o,ov_SC06_022_jr_8016AB6C.o,tail13.data.o,ov_SC06_022_jr_801734BC.o,tail14.data.o,ov_SC06_022_jr_80178D40.o,tail15.data.o,ov_SC06_022_jr_8017A4AC.o,tail16.data.o,ov_SC06_022_jr_8017AE2C.o,ov_SC06_022_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_022/ov_SC06_022_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_022/ov_SC06_022_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_022/ov_SC06_022_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3342,7 +3342,7 @@ ov_SC06_024_ELF := $(ov_SC06_024_OUT).elf ov_SC06_024_MAPFILE := $(ov_SC06_024_OUT).map ov_SC06_024_LD_SCRIPT := $(ov_SC06_024_OUT).ld ov_SC06_024_SPLAT_YAML := config/splat.ov_SC06_024.yaml -ov_SC06_024_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_024_jr_8012ACE0.o,tail2.data.o,ov_SC06_024_jr_801380E0.o,tail3.data.o,ov_SC06_024_jr_8013F350.o,tail4.data.o,ov_SC06_024_jr_8013FFD8.o,tail5.data.o,ov_SC06_024_jr_80140608.o,tail6.data.o,ov_SC06_024_jr_8015444C.o,tail7.data.o,ov_SC06_024_jr_80154C24.o,ov_SC06_024_jr_801588CC.o,tail8.data.o,ov_SC06_024_jr_80159C84.o,tail9.data.o,ov_SC06_024_jr_8015A3C8.o,tail10.data.o,ov_SC06_024_jr_8015AE2C.o,tail11.data.o,ov_SC06_024_jr_8015C32C.o,tail12.data.o,ov_SC06_024_jr_8016AB6C.o,tail13.data.o,ov_SC06_024_jr_801734BC.o,tail14.data.o,ov_SC06_024_jr_80178D40.o,tail15.data.o,ov_SC06_024_jr_8017A4AC.o,tail16.data.o,ov_SC06_024_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_024_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_024_jr_8012ACE0.o,tail2.data.o,ov_SC06_024_jr_801380E0.o,tail3.data.o,ov_SC06_024_jr_8013F350.o,tail4.data.o,ov_SC06_024_jr_8013FFD8.o,tail5.data.o,ov_SC06_024_jr_80140608.o,tail6.data.o,ov_SC06_024_jr_8015444C.o,tail7.data.o,ov_SC06_024_jr_80154C24.o,ov_SC06_024_jr_801588CC.o,tail8.data.o,ov_SC06_024_jr_80159C84.o,tail9.data.o,ov_SC06_024_jr_8015A3C8.o,tail10.data.o,ov_SC06_024_jr_8015AE2C.o,tail11.data.o,ov_SC06_024_jr_8015C32C.o,tail12.data.o,ov_SC06_024_jr_8016AB6C.o,tail13.data.o,ov_SC06_024_jr_801734BC.o,tail14.data.o,ov_SC06_024_jr_80178D40.o,tail15.data.o,ov_SC06_024_jr_8017A4AC.o,tail16.data.o,ov_SC06_024_jr_8017AE2C.o,ov_SC06_024_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_024/ov_SC06_024_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_024/ov_SC06_024_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_024/ov_SC06_024_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3369,7 +3369,7 @@ ov_SC06_025_ELF := $(ov_SC06_025_OUT).elf ov_SC06_025_MAPFILE := $(ov_SC06_025_OUT).map ov_SC06_025_LD_SCRIPT := $(ov_SC06_025_OUT).ld ov_SC06_025_SPLAT_YAML := config/splat.ov_SC06_025.yaml -ov_SC06_025_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_025_jr_8012ACE0.o,tail2.data.o,ov_SC06_025_jr_801380E0.o,tail3.data.o,ov_SC06_025_jr_8013F350.o,tail4.data.o,ov_SC06_025_jr_8013FFD8.o,tail5.data.o,ov_SC06_025_jr_80140608.o,tail6.data.o,ov_SC06_025_jr_8015444C.o,tail7.data.o,ov_SC06_025_jr_80154C24.o,ov_SC06_025_jr_801588CC.o,tail8.data.o,ov_SC06_025_jr_80159C84.o,tail9.data.o,ov_SC06_025_jr_8015A3C8.o,tail10.data.o,ov_SC06_025_jr_8015AE2C.o,tail11.data.o,ov_SC06_025_jr_8015C32C.o,tail12.data.o,ov_SC06_025_jr_8016AB6C.o,tail13.data.o,ov_SC06_025_jr_801734BC.o,tail14.data.o,ov_SC06_025_jr_80178D40.o,tail15.data.o,ov_SC06_025_jr_8017A4AC.o,tail16.data.o,ov_SC06_025_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_025_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_025_jr_8012ACE0.o,tail2.data.o,ov_SC06_025_jr_801380E0.o,tail3.data.o,ov_SC06_025_jr_8013F350.o,tail4.data.o,ov_SC06_025_jr_8013FFD8.o,tail5.data.o,ov_SC06_025_jr_80140608.o,tail6.data.o,ov_SC06_025_jr_8015444C.o,tail7.data.o,ov_SC06_025_jr_80154C24.o,ov_SC06_025_jr_801588CC.o,tail8.data.o,ov_SC06_025_jr_80159C84.o,tail9.data.o,ov_SC06_025_jr_8015A3C8.o,tail10.data.o,ov_SC06_025_jr_8015AE2C.o,tail11.data.o,ov_SC06_025_jr_8015C32C.o,tail12.data.o,ov_SC06_025_jr_8016AB6C.o,tail13.data.o,ov_SC06_025_jr_801734BC.o,tail14.data.o,ov_SC06_025_jr_80178D40.o,tail15.data.o,ov_SC06_025_jr_8017A4AC.o,tail16.data.o,ov_SC06_025_jr_8017AE2C.o,ov_SC06_025_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_025/ov_SC06_025_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_025/ov_SC06_025_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_025/ov_SC06_025_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3396,7 +3396,7 @@ ov_SC06_027_ELF := $(ov_SC06_027_OUT).elf ov_SC06_027_MAPFILE := $(ov_SC06_027_OUT).map ov_SC06_027_LD_SCRIPT := $(ov_SC06_027_OUT).ld ov_SC06_027_SPLAT_YAML := config/splat.ov_SC06_027.yaml -ov_SC06_027_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_027_jr_8012ACE0.o,tail2.data.o,ov_SC06_027_jr_801380E0.o,tail3.data.o,ov_SC06_027_jr_8013F350.o,tail4.data.o,ov_SC06_027_jr_8013FFD8.o,tail5.data.o,ov_SC06_027_jr_80140608.o,tail6.data.o,ov_SC06_027_jr_8015444C.o,tail7.data.o,ov_SC06_027_jr_80154C24.o,ov_SC06_027_jr_801588CC.o,tail8.data.o,ov_SC06_027_jr_80159C84.o,tail9.data.o,ov_SC06_027_jr_8015A3C8.o,tail10.data.o,ov_SC06_027_jr_8015AE2C.o,tail11.data.o,ov_SC06_027_jr_8015C32C.o,tail12.data.o,ov_SC06_027_jr_8016AB6C.o,tail13.data.o,ov_SC06_027_jr_801734BC.o,tail14.data.o,ov_SC06_027_jr_80178D40.o,tail15.data.o,ov_SC06_027_jr_8017A4AC.o,tail16.data.o,ov_SC06_027_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_027_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_027_jr_8012ACE0.o,tail2.data.o,ov_SC06_027_jr_801380E0.o,tail3.data.o,ov_SC06_027_jr_8013F350.o,tail4.data.o,ov_SC06_027_jr_8013FFD8.o,tail5.data.o,ov_SC06_027_jr_80140608.o,tail6.data.o,ov_SC06_027_jr_8015444C.o,tail7.data.o,ov_SC06_027_jr_80154C24.o,ov_SC06_027_jr_801588CC.o,tail8.data.o,ov_SC06_027_jr_80159C84.o,tail9.data.o,ov_SC06_027_jr_8015A3C8.o,tail10.data.o,ov_SC06_027_jr_8015AE2C.o,tail11.data.o,ov_SC06_027_jr_8015C32C.o,tail12.data.o,ov_SC06_027_jr_8016AB6C.o,tail13.data.o,ov_SC06_027_jr_801734BC.o,tail14.data.o,ov_SC06_027_jr_80178D40.o,tail15.data.o,ov_SC06_027_jr_8017A4AC.o,tail16.data.o,ov_SC06_027_jr_8017AE2C.o,ov_SC06_027_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_027/ov_SC06_027_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_027/ov_SC06_027_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_027/ov_SC06_027_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3423,7 +3423,7 @@ ov_SC06_029_ELF := $(ov_SC06_029_OUT).elf ov_SC06_029_MAPFILE := $(ov_SC06_029_OUT).map ov_SC06_029_LD_SCRIPT := $(ov_SC06_029_OUT).ld ov_SC06_029_SPLAT_YAML := config/splat.ov_SC06_029.yaml -ov_SC06_029_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_029_jr_8012ACE0.o,tail2.data.o,ov_SC06_029_jr_801380E0.o,tail3.data.o,ov_SC06_029_jr_8013F350.o,tail4.data.o,ov_SC06_029_jr_8013FFD8.o,tail5.data.o,ov_SC06_029_jr_80140608.o,tail6.data.o,ov_SC06_029_jr_8015444C.o,tail7.data.o,ov_SC06_029_jr_80154C24.o,ov_SC06_029_jr_801588CC.o,tail8.data.o,ov_SC06_029_jr_80159C84.o,tail9.data.o,ov_SC06_029_jr_8015A3C8.o,tail10.data.o,ov_SC06_029_jr_8015AE2C.o,tail11.data.o,ov_SC06_029_jr_8015C32C.o,tail12.data.o,ov_SC06_029_jr_8016AB6C.o,tail13.data.o,ov_SC06_029_jr_801734BC.o,tail14.data.o,ov_SC06_029_jr_80178D40.o,tail15.data.o,ov_SC06_029_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_029_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_029_jr_8012ACE0.o,tail2.data.o,ov_SC06_029_jr_801380E0.o,tail3.data.o,ov_SC06_029_jr_8013F350.o,tail4.data.o,ov_SC06_029_jr_8013FFD8.o,tail5.data.o,ov_SC06_029_jr_80140608.o,tail6.data.o,ov_SC06_029_jr_8015444C.o,tail7.data.o,ov_SC06_029_jr_80154C24.o,ov_SC06_029_jr_801588CC.o,tail8.data.o,ov_SC06_029_jr_80159C84.o,tail9.data.o,ov_SC06_029_jr_8015A3C8.o,tail10.data.o,ov_SC06_029_jr_8015AE2C.o,tail11.data.o,ov_SC06_029_jr_8015C32C.o,tail12.data.o,ov_SC06_029_jr_8016AB6C.o,tail13.data.o,ov_SC06_029_jr_801734BC.o,tail14.data.o,ov_SC06_029_jr_80178D40.o,tail15.data.o,ov_SC06_029_jr_8017A4AC.o,tail16.data.o,ov_SC06_029_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_029/ov_SC06_029_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_029/ov_SC06_029_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_029/ov_SC06_029_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3450,7 +3450,7 @@ ov_SC06_030_ELF := $(ov_SC06_030_OUT).elf ov_SC06_030_MAPFILE := $(ov_SC06_030_OUT).map ov_SC06_030_LD_SCRIPT := $(ov_SC06_030_OUT).ld ov_SC06_030_SPLAT_YAML := config/splat.ov_SC06_030.yaml -ov_SC06_030_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_030_jr_8012ACE0.o,tail2.data.o,ov_SC06_030_jr_801380E0.o,tail3.data.o,ov_SC06_030_jr_8013F350.o,tail4.data.o,ov_SC06_030_jr_8013FFD8.o,tail5.data.o,ov_SC06_030_jr_80140608.o,tail6.data.o,ov_SC06_030_jr_8015444C.o,tail7.data.o,ov_SC06_030_jr_80154C24.o,ov_SC06_030_jr_801588CC.o,tail8.data.o,ov_SC06_030_jr_80159C84.o,tail9.data.o,ov_SC06_030_jr_8015A3C8.o,tail10.data.o,ov_SC06_030_jr_8015AE2C.o,tail11.data.o,ov_SC06_030_jr_8015C32C.o,tail12.data.o,ov_SC06_030_jr_8016AB6C.o,tail13.data.o,ov_SC06_030_jr_801734BC.o,tail14.data.o,ov_SC06_030_jr_80178D40.o,tail15.data.o,ov_SC06_030_jr_8017A4AC.o,tail16.data.o,ov_SC06_030_jr_8017C8D0.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_030_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_030_jr_8012ACE0.o,tail2.data.o,ov_SC06_030_jr_801380E0.o,tail3.data.o,ov_SC06_030_jr_8013F350.o,tail4.data.o,ov_SC06_030_jr_8013FFD8.o,tail5.data.o,ov_SC06_030_jr_80140608.o,tail6.data.o,ov_SC06_030_jr_8015444C.o,tail7.data.o,ov_SC06_030_jr_80154C24.o,ov_SC06_030_jr_801588CC.o,tail8.data.o,ov_SC06_030_jr_80159C84.o,tail9.data.o,ov_SC06_030_jr_8015A3C8.o,tail10.data.o,ov_SC06_030_jr_8015AE2C.o,tail11.data.o,ov_SC06_030_jr_8015C32C.o,tail12.data.o,ov_SC06_030_jr_8016AB6C.o,tail13.data.o,ov_SC06_030_jr_801734BC.o,tail14.data.o,ov_SC06_030_jr_80178D40.o,tail15.data.o,ov_SC06_030_jr_8017A4AC.o,tail16.data.o,ov_SC06_030_jr_8017AE2C.o,tail17.data.o,ov_SC06_030_jr_8017C8D0.o,tail18.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_030/ov_SC06_030_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_030/ov_SC06_030_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_030/ov_SC06_030_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3477,7 +3477,7 @@ ov_SC06_032_ELF := $(ov_SC06_032_OUT).elf ov_SC06_032_MAPFILE := $(ov_SC06_032_OUT).map ov_SC06_032_LD_SCRIPT := $(ov_SC06_032_OUT).ld ov_SC06_032_SPLAT_YAML := config/splat.ov_SC06_032.yaml -ov_SC06_032_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_032_jr_8012ACE0.o,tail2.data.o,ov_SC06_032_jr_801380E0.o,tail3.data.o,ov_SC06_032_jr_8013F350.o,tail4.data.o,ov_SC06_032_jr_8013FFD8.o,tail5.data.o,ov_SC06_032_jr_80140608.o,tail6.data.o,ov_SC06_032_jr_8015444C.o,tail7.data.o,ov_SC06_032_jr_80154C24.o,ov_SC06_032_jr_801588CC.o,tail8.data.o,ov_SC06_032_jr_80159C84.o,tail9.data.o,ov_SC06_032_jr_8015A3C8.o,tail10.data.o,ov_SC06_032_jr_8015AE2C.o,tail11.data.o,ov_SC06_032_jr_8015C32C.o,tail12.data.o,ov_SC06_032_jr_8016AB6C.o,tail13.data.o,ov_SC06_032_jr_801734BC.o,tail14.data.o,ov_SC06_032_jr_80178D40.o,tail15.data.o,ov_SC06_032_jr_8017A4AC.o,tail16.data.o,ov_SC06_032_jr_8017C24C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_032_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_032_jr_8012ACE0.o,tail2.data.o,ov_SC06_032_jr_801380E0.o,tail3.data.o,ov_SC06_032_jr_8013F350.o,tail4.data.o,ov_SC06_032_jr_8013FFD8.o,tail5.data.o,ov_SC06_032_jr_80140608.o,tail6.data.o,ov_SC06_032_jr_8015444C.o,tail7.data.o,ov_SC06_032_jr_80154C24.o,ov_SC06_032_jr_801588CC.o,tail8.data.o,ov_SC06_032_jr_80159C84.o,tail9.data.o,ov_SC06_032_jr_8015A3C8.o,tail10.data.o,ov_SC06_032_jr_8015AE2C.o,tail11.data.o,ov_SC06_032_jr_8015C32C.o,tail12.data.o,ov_SC06_032_jr_8016AB6C.o,tail13.data.o,ov_SC06_032_jr_801734BC.o,tail14.data.o,ov_SC06_032_jr_80178D40.o,tail15.data.o,ov_SC06_032_jr_8017A4AC.o,tail16.data.o,ov_SC06_032_jr_8017AE2C.o,ov_SC06_032_jr_8017C24C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_032/ov_SC06_032_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_032/ov_SC06_032_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_032/ov_SC06_032_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3504,7 +3504,7 @@ ov_SC06_033_ELF := $(ov_SC06_033_OUT).elf ov_SC06_033_MAPFILE := $(ov_SC06_033_OUT).map ov_SC06_033_LD_SCRIPT := $(ov_SC06_033_OUT).ld ov_SC06_033_SPLAT_YAML := config/splat.ov_SC06_033.yaml -ov_SC06_033_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_033_jr_8012ACE0.o,tail2.data.o,ov_SC06_033_jr_801380E0.o,tail3.data.o,ov_SC06_033_jr_8013F350.o,tail4.data.o,ov_SC06_033_jr_8013FFD8.o,tail5.data.o,ov_SC06_033_jr_80140608.o,tail6.data.o,ov_SC06_033_jr_8015444C.o,tail7.data.o,ov_SC06_033_jr_80154C24.o,ov_SC06_033_jr_801588CC.o,tail8.data.o,ov_SC06_033_jr_80159C84.o,tail9.data.o,ov_SC06_033_jr_8015A3C8.o,tail10.data.o,ov_SC06_033_jr_8015AE2C.o,tail11.data.o,ov_SC06_033_jr_8015C32C.o,tail12.data.o,ov_SC06_033_jr_8016AB6C.o,tail13.data.o,ov_SC06_033_jr_801734BC.o,tail14.data.o,ov_SC06_033_jr_80178D40.o,tail15.data.o,ov_SC06_033_jr_8017A4AC.o,tail16.data.o,ov_SC06_033_jr_8017C24C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_033_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_033_jr_8012ACE0.o,tail2.data.o,ov_SC06_033_jr_801380E0.o,tail3.data.o,ov_SC06_033_jr_8013F350.o,tail4.data.o,ov_SC06_033_jr_8013FFD8.o,tail5.data.o,ov_SC06_033_jr_80140608.o,tail6.data.o,ov_SC06_033_jr_8015444C.o,tail7.data.o,ov_SC06_033_jr_80154C24.o,ov_SC06_033_jr_801588CC.o,tail8.data.o,ov_SC06_033_jr_80159C84.o,tail9.data.o,ov_SC06_033_jr_8015A3C8.o,tail10.data.o,ov_SC06_033_jr_8015AE2C.o,tail11.data.o,ov_SC06_033_jr_8015C32C.o,tail12.data.o,ov_SC06_033_jr_8016AB6C.o,tail13.data.o,ov_SC06_033_jr_801734BC.o,tail14.data.o,ov_SC06_033_jr_80178D40.o,tail15.data.o,ov_SC06_033_jr_8017A4AC.o,tail16.data.o,ov_SC06_033_jr_8017AE2C.o,ov_SC06_033_jr_8017C24C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_033/ov_SC06_033_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_033/ov_SC06_033_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_033/ov_SC06_033_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3531,7 +3531,7 @@ ov_SC07_001_ELF := $(ov_SC07_001_OUT).elf ov_SC07_001_MAPFILE := $(ov_SC07_001_OUT).map ov_SC07_001_LD_SCRIPT := $(ov_SC07_001_OUT).ld ov_SC07_001_SPLAT_YAML := config/splat.ov_SC07_001.yaml -ov_SC07_001_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_001_jr_8012ACE0.o,tail2.data.o,ov_SC07_001_jr_801380E0.o,tail3.data.o,ov_SC07_001_jr_8013F350.o,tail4.data.o,ov_SC07_001_jr_8013FFD8.o,tail5.data.o,ov_SC07_001_jr_80140608.o,tail6.data.o,ov_SC07_001_jr_8015444C.o,tail7.data.o,ov_SC07_001_jr_80154C24.o,ov_SC07_001_jr_801588CC.o,tail8.data.o,ov_SC07_001_jr_80159C84.o,tail9.data.o,ov_SC07_001_jr_8015A3C8.o,tail10.data.o,ov_SC07_001_jr_8015AE2C.o,tail11.data.o,ov_SC07_001_jr_8015C32C.o,tail12.data.o,ov_SC07_001_jr_8016AB6C.o,tail13.data.o,ov_SC07_001_jr_801734BC.o,tail14.data.o,ov_SC07_001_jr_80178D40.o,tail15.data.o,ov_SC07_001_jr_8017A4AC.o,tail16.data.o,ov_SC07_001_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC07_001_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_001_jr_8012ACE0.o,tail2.data.o,ov_SC07_001_jr_801380E0.o,tail3.data.o,ov_SC07_001_jr_8013F350.o,tail4.data.o,ov_SC07_001_jr_8013FFD8.o,tail5.data.o,ov_SC07_001_jr_80140608.o,tail6.data.o,ov_SC07_001_jr_8015444C.o,tail7.data.o,ov_SC07_001_jr_80154C24.o,ov_SC07_001_jr_801588CC.o,tail8.data.o,ov_SC07_001_jr_80159C84.o,tail9.data.o,ov_SC07_001_jr_8015A3C8.o,tail10.data.o,ov_SC07_001_jr_8015AE2C.o,tail11.data.o,ov_SC07_001_jr_8015C32C.o,tail12.data.o,ov_SC07_001_jr_8016AB6C.o,tail13.data.o,ov_SC07_001_jr_801734BC.o,tail14.data.o,ov_SC07_001_jr_80178D40.o,tail15.data.o,ov_SC07_001_jr_8017A4AC.o,tail16.data.o,ov_SC07_001_jr_8017AE2C.o,ov_SC07_001_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC07_001/ov_SC07_001_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC07_001/ov_SC07_001_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC07_001/ov_SC07_001_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3558,7 +3558,7 @@ ov_SC07_002_ELF := $(ov_SC07_002_OUT).elf ov_SC07_002_MAPFILE := $(ov_SC07_002_OUT).map ov_SC07_002_LD_SCRIPT := $(ov_SC07_002_OUT).ld ov_SC07_002_SPLAT_YAML := config/splat.ov_SC07_002.yaml -ov_SC07_002_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_002_jr_8012ACE0.o,tail2.data.o,ov_SC07_002_jr_801380E0.o,tail3.data.o,ov_SC07_002_jr_8013F350.o,tail4.data.o,ov_SC07_002_jr_8013FFD8.o,tail5.data.o,ov_SC07_002_jr_80140608.o,tail6.data.o,ov_SC07_002_jr_8015444C.o,tail7.data.o,ov_SC07_002_jr_80154C24.o,ov_SC07_002_jr_801588CC.o,tail8.data.o,ov_SC07_002_jr_80159C84.o,tail9.data.o,ov_SC07_002_jr_8015A3C8.o,tail10.data.o,ov_SC07_002_jr_8015AE2C.o,tail11.data.o,ov_SC07_002_jr_8015C32C.o,tail12.data.o,ov_SC07_002_jr_8016AB6C.o,tail13.data.o,ov_SC07_002_jr_801734BC.o,tail14.data.o,ov_SC07_002_jr_80178D40.o,tail15.data.o,ov_SC07_002_jr_8017A4AC.o,tail16.data.o,ov_SC07_002_jr_8017C8D0.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC07_002_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_002_jr_8012ACE0.o,tail2.data.o,ov_SC07_002_jr_801380E0.o,tail3.data.o,ov_SC07_002_jr_8013F350.o,tail4.data.o,ov_SC07_002_jr_8013FFD8.o,tail5.data.o,ov_SC07_002_jr_80140608.o,tail6.data.o,ov_SC07_002_jr_8015444C.o,tail7.data.o,ov_SC07_002_jr_80154C24.o,ov_SC07_002_jr_801588CC.o,tail8.data.o,ov_SC07_002_jr_80159C84.o,tail9.data.o,ov_SC07_002_jr_8015A3C8.o,tail10.data.o,ov_SC07_002_jr_8015AE2C.o,tail11.data.o,ov_SC07_002_jr_8015C32C.o,tail12.data.o,ov_SC07_002_jr_8016AB6C.o,tail13.data.o,ov_SC07_002_jr_801734BC.o,tail14.data.o,ov_SC07_002_jr_80178D40.o,tail15.data.o,ov_SC07_002_jr_8017A4AC.o,tail16.data.o,ov_SC07_002_jr_8017AE2C.o,tail17.data.o,ov_SC07_002_jr_8017C8D0.o,tail18.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC07_002/ov_SC07_002_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC07_002/ov_SC07_002_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC07_002/ov_SC07_002_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3585,7 +3585,7 @@ ov_SC07_008_ELF := $(ov_SC07_008_OUT).elf ov_SC07_008_MAPFILE := $(ov_SC07_008_OUT).map ov_SC07_008_LD_SCRIPT := $(ov_SC07_008_OUT).ld ov_SC07_008_SPLAT_YAML := config/splat.ov_SC07_008.yaml -ov_SC07_008_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_008_jr_8012ACE0.o,tail2.data.o,ov_SC07_008_jr_801380E0.o,tail3.data.o,ov_SC07_008_jr_8013F350.o,tail4.data.o,ov_SC07_008_jr_8013FFD8.o,tail5.data.o,ov_SC07_008_jr_80140608.o,tail6.data.o,ov_SC07_008_jr_8015444C.o,tail7.data.o,ov_SC07_008_jr_80154C24.o,ov_SC07_008_jr_801588CC.o,tail8.data.o,ov_SC07_008_jr_80159C84.o,tail9.data.o,ov_SC07_008_jr_8015A3C8.o,tail10.data.o,ov_SC07_008_jr_8015AE2C.o,tail11.data.o,ov_SC07_008_jr_8015C32C.o,tail12.data.o,ov_SC07_008_jr_8016AB6C.o,tail13.data.o,ov_SC07_008_jr_801734BC.o,tail14.data.o,ov_SC07_008_jr_80178D40.o,tail15.data.o,ov_SC07_008_jr_8017A4AC.o,tail16.data.o,ov_SC07_008_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC07_008_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_008_jr_8012ACE0.o,tail2.data.o,ov_SC07_008_jr_801380E0.o,tail3.data.o,ov_SC07_008_jr_8013F350.o,tail4.data.o,ov_SC07_008_jr_8013FFD8.o,tail5.data.o,ov_SC07_008_jr_80140608.o,tail6.data.o,ov_SC07_008_jr_8015444C.o,tail7.data.o,ov_SC07_008_jr_80154C24.o,ov_SC07_008_jr_801588CC.o,tail8.data.o,ov_SC07_008_jr_80159C84.o,tail9.data.o,ov_SC07_008_jr_8015A3C8.o,tail10.data.o,ov_SC07_008_jr_8015AE2C.o,tail11.data.o,ov_SC07_008_jr_8015C32C.o,tail12.data.o,ov_SC07_008_jr_8016AB6C.o,tail13.data.o,ov_SC07_008_jr_801734BC.o,tail14.data.o,ov_SC07_008_jr_80178D40.o,tail15.data.o,ov_SC07_008_jr_8017A4AC.o,tail16.data.o,ov_SC07_008_jr_8017AE2C.o,ov_SC07_008_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC07_008/ov_SC07_008_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC07_008/ov_SC07_008_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC07_008/ov_SC07_008_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3612,7 +3612,7 @@ ov_SC07_009_ELF := $(ov_SC07_009_OUT).elf ov_SC07_009_MAPFILE := $(ov_SC07_009_OUT).map ov_SC07_009_LD_SCRIPT := $(ov_SC07_009_OUT).ld ov_SC07_009_SPLAT_YAML := config/splat.ov_SC07_009.yaml -ov_SC07_009_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_009_jr_8012ACE0.o,tail2.data.o,ov_SC07_009_jr_801380E0.o,tail3.data.o,ov_SC07_009_jr_8013F350.o,tail4.data.o,ov_SC07_009_jr_8013FFD8.o,tail5.data.o,ov_SC07_009_jr_80140608.o,tail6.data.o,ov_SC07_009_jr_8015444C.o,tail7.data.o,ov_SC07_009_jr_80154C24.o,ov_SC07_009_jr_801588CC.o,tail8.data.o,ov_SC07_009_jr_80159C84.o,tail9.data.o,ov_SC07_009_jr_8015A3C8.o,tail10.data.o,ov_SC07_009_jr_8015AE2C.o,tail11.data.o,ov_SC07_009_jr_8015C32C.o,tail12.data.o,ov_SC07_009_jr_8016AB6C.o,tail13.data.o,ov_SC07_009_jr_801734BC.o,tail14.data.o,ov_SC07_009_jr_80178D40.o,tail15.data.o,ov_SC07_009_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC07_009_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_009_jr_8012ACE0.o,tail2.data.o,ov_SC07_009_jr_801380E0.o,tail3.data.o,ov_SC07_009_jr_8013F350.o,tail4.data.o,ov_SC07_009_jr_8013FFD8.o,tail5.data.o,ov_SC07_009_jr_80140608.o,tail6.data.o,ov_SC07_009_jr_8015444C.o,tail7.data.o,ov_SC07_009_jr_80154C24.o,ov_SC07_009_jr_801588CC.o,tail8.data.o,ov_SC07_009_jr_80159C84.o,tail9.data.o,ov_SC07_009_jr_8015A3C8.o,tail10.data.o,ov_SC07_009_jr_8015AE2C.o,tail11.data.o,ov_SC07_009_jr_8015C32C.o,tail12.data.o,ov_SC07_009_jr_8016AB6C.o,tail13.data.o,ov_SC07_009_jr_801734BC.o,tail14.data.o,ov_SC07_009_jr_80178D40.o,tail15.data.o,ov_SC07_009_jr_8017A4AC.o,tail16.data.o,ov_SC07_009_jr_8017AE2C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC07_009/ov_SC07_009_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC07_009/ov_SC07_009_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC07_009/ov_SC07_009_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 @@ -3639,7 +3639,7 @@ ov_SC07_006_ELF := $(ov_SC07_006_OUT).elf ov_SC07_006_MAPFILE := $(ov_SC07_006_OUT).map ov_SC07_006_LD_SCRIPT := $(ov_SC07_006_OUT).ld ov_SC07_006_SPLAT_YAML := config/splat.ov_SC07_006.yaml -ov_SC07_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_006_jr_80131340.o,tail2.data.o,ov_SC07_006_jr_8013F350.o,tail3.data.o,ov_SC07_006_jr_80140608.o,tail4.data.o,ov_SC07_006_jr_80154C24.o,ov_SC07_006_jr_801588CC.o,tail5.data.o,ov_SC07_006_jr_8015C32C.o,tail6.data.o,ov_SC07_006_jr_8017BEBC.o,tail7.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC07_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_006_jr_80131340.o,tail2.data.o,ov_SC07_006_jr_8013F350.o,tail3.data.o,ov_SC07_006_jr_80140608.o,tail4.data.o,ov_SC07_006_jr_80154C24.o,ov_SC07_006_jr_801588CC.o,tail5.data.o,ov_SC07_006_jr_8015C32C.o,tail6.data.o,ov_SC07_006_jr_8017AE2C.o,ov_SC07_006_jr_8017BEBC.o,tail7.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC07_006/ov_SC07_006_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC07_006/ov_SC07_006_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 build/src/ov_SC07_006/ov_SC07_006_jr_801588CC.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x28 @@ -3664,7 +3664,7 @@ ov_SC07_007_ELF := $(ov_SC07_007_OUT).elf ov_SC07_007_MAPFILE := $(ov_SC07_007_OUT).map ov_SC07_007_LD_SCRIPT := $(ov_SC07_007_OUT).ld ov_SC07_007_SPLAT_YAML := config/splat.ov_SC07_007.yaml -ov_SC07_007_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_007_jr_80131340.o,tail2.data.o,ov_SC07_007_jr_8013F350.o,tail3.data.o,ov_SC07_007_jr_80140608.o,tail4.data.o,ov_SC07_007_jr_80154C24.o,ov_SC07_007_jr_801588CC.o,tail5.data.o,ov_SC07_007_jr_8015C32C.o,tail6.data.o,ov_SC07_007_jr_8017BEBC.o,tail7.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC07_007_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_007_jr_80131340.o,tail2.data.o,ov_SC07_007_jr_8013F350.o,tail3.data.o,ov_SC07_007_jr_80140608.o,tail4.data.o,ov_SC07_007_jr_80154C24.o,ov_SC07_007_jr_801588CC.o,tail5.data.o,ov_SC07_007_jr_8015C32C.o,tail6.data.o,ov_SC07_007_jr_8017AE2C.o,ov_SC07_007_jr_8017BEBC.o,tail7.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC07_007/ov_SC07_007_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC07_007/ov_SC07_007_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 build/src/ov_SC07_007/ov_SC07_007_jr_801588CC.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x28 @@ -3689,7 +3689,7 @@ ov_SC07_010_ELF := $(ov_SC07_010_OUT).elf ov_SC07_010_MAPFILE := $(ov_SC07_010_OUT).map ov_SC07_010_LD_SCRIPT := $(ov_SC07_010_OUT).ld ov_SC07_010_SPLAT_YAML := config/splat.ov_SC07_010.yaml -ov_SC07_010_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_010.o,tail2.data.o,ov_SC07_010_jr_8013F350.o,tail3.data.o,ov_SC07_010_jr_80140608.o,tail4.data.o,ov_SC07_010_jr_80154C24.o,ov_SC07_010_jr_801588CC.o,tail5.data.o,ov_SC07_010_jr_8015C32C.o,tail6.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC07_010_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_010.o,tail2.data.o,ov_SC07_010_jr_8013F350.o,tail3.data.o,ov_SC07_010_jr_80140608.o,tail4.data.o,ov_SC07_010_jr_80154C24.o,ov_SC07_010_jr_801588CC.o,tail5.data.o,ov_SC07_010_jr_8015C32C.o,tail6.data.o,ov_SC07_010_jr_8017AE2C.o,tail7.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC07_010/ov_SC07_010_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 build/src/ov_SC07_010/ov_SC07_010_jr_801588CC.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x28 ov_SC07_010_CHECK_SHA := config/check.ov_SC07_010.sha @@ -3713,7 +3713,7 @@ ov_SC07_011_ELF := $(ov_SC07_011_OUT).elf ov_SC07_011_MAPFILE := $(ov_SC07_011_OUT).map ov_SC07_011_LD_SCRIPT := $(ov_SC07_011_OUT).ld ov_SC07_011_SPLAT_YAML := config/splat.ov_SC07_011.yaml -ov_SC07_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_011_jr_80131340.o,tail2.data.o,ov_SC07_011_jr_8013F350.o,tail3.data.o,ov_SC07_011_jr_80140608.o,tail4.data.o,ov_SC07_011_jr_80154C24.o,ov_SC07_011_jr_801588CC.o,tail5.data.o,ov_SC07_011_jr_8015C32C.o,tail6.data.o,ov_SC07_011_jr_8017BEBC.o,tail7.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC07_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_011_jr_80131340.o,tail2.data.o,ov_SC07_011_jr_8013F350.o,tail3.data.o,ov_SC07_011_jr_80140608.o,tail4.data.o,ov_SC07_011_jr_80154C24.o,ov_SC07_011_jr_801588CC.o,tail5.data.o,ov_SC07_011_jr_8015C32C.o,tail6.data.o,ov_SC07_011_jr_8017AE2C.o,ov_SC07_011_jr_8017BEBC.o,tail7.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC07_011/ov_SC07_011_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC07_011/ov_SC07_011_jr_80154C24.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x24 build/src/ov_SC07_011/ov_SC07_011_jr_801588CC.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x28 diff --git a/config/splat.ov_SC01_000.yaml b/config/splat.ov_SC01_000.yaml index 1888ea177..be8edbb0b 100644 --- a/config/splat.ov_SC01_000.yaml +++ b/config/splat.ov_SC01_000.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC01_000_jr_801734BC] - [0x50be8, c, ov_SC01_000_jr_80178D40] - [0x52354, c, ov_SC01_000_jr_8017A4AC] + - [0x52cd4, c, ov_SC01_000_jr_8017AE2C] - [0x53d64, c, ov_SC01_000_jr_8017BEBC] - [0x56a64, data, tail] - [0x7b1c4, .rodata, ov_SC01_000_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x7c0e8, data, tail15] - [0x7c178, .rodata, ov_SC01_000_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7c204, data, tail16] + - [0x7c208, .rodata, ov_SC01_000_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7c21c, .rodata, ov_SC01_000_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7c23c, data, tail17] - [0x7D78C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC01_001.yaml b/config/splat.ov_SC01_001.yaml index defe4edf3..442643509 100644 --- a/config/splat.ov_SC01_001.yaml +++ b/config/splat.ov_SC01_001.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC01_001_jr_801734BC] - [0x50be8, c, ov_SC01_001_jr_80178D40] - [0x52354, c, ov_SC01_001_jr_8017A4AC] + - [0x52cd4, c, ov_SC01_001_jr_8017AE2C] - [0x53d64, c, ov_SC01_001_jr_8017BEBC] - [0x5b6b4, data, tail] - [0xc329c, .rodata, ov_SC01_001_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xc41c0, data, tail15] - [0xc4250, .rodata, ov_SC01_001_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc42dc, data, tail16] + - [0xc42e0, .rodata, ov_SC01_001_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc42f4, .rodata, ov_SC01_001_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc4314, data, tail17] - [0xCB06C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC01_004.yaml b/config/splat.ov_SC01_004.yaml index 2d4226051..767554e34 100644 --- a/config/splat.ov_SC01_004.yaml +++ b/config/splat.ov_SC01_004.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC01_004_jr_801734BC] - [0x50be8, c, ov_SC01_004_jr_80178D40] - [0x52354, c, ov_SC01_004_jr_8017A4AC] + - [0x52cd4, c, ov_SC01_004_jr_8017AE2C] - [0x53d44, c, ov_SC01_004_jr_8017BE9C] - [0x57078, data, tail] - [0x6567c, .rodata, ov_SC01_004_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x665a0, data, tail15] - [0x66630, .rodata, ov_SC01_004_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x666bc, data, tail16] + - [0x666c0, .rodata, ov_SC01_004_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x666d4, .rodata, ov_SC01_004_jr_8017BE9C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x666f4, data, tail17] - [0x68274, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC01_005.yaml b/config/splat.ov_SC01_005.yaml index aa196ce3c..36cb6adfe 100644 --- a/config/splat.ov_SC01_005.yaml +++ b/config/splat.ov_SC01_005.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC01_005_jr_801734BC] - [0x50be8, c, ov_SC01_005_jr_80178D40] - [0x52354, c, ov_SC01_005_jr_8017A4AC] + - [0x52cd4, c, ov_SC01_005_jr_8017AE2C] - [0x541e8, c, ov_SC01_005_jr_8017C340] - [0x5a20c, data, tail] - [0xa2ddc, .rodata, ov_SC01_005_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xa3d00, data, tail15] - [0xa3d90, .rodata, ov_SC01_005_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa3e1c, data, tail16] + - [0xa3e20, .rodata, ov_SC01_005_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa3e34, .rodata, ov_SC01_005_jr_8017C340] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa3e54, data, tail17] - [0xA5F08, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC01_006.yaml b/config/splat.ov_SC01_006.yaml index cb8b7c94b..b77afe947 100644 --- a/config/splat.ov_SC01_006.yaml +++ b/config/splat.ov_SC01_006.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC01_006_jr_801734BC] - [0x50be8, c, ov_SC01_006_jr_80178D40] - [0x52354, c, ov_SC01_006_jr_8017A4AC] + - [0x52cd4, c, ov_SC01_006_jr_8017AE2C] - [0x541e8, c, ov_SC01_006_jr_8017C340] - [0x5a20c, data, tail] - [0xa2ddc, .rodata, ov_SC01_006_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xa3d00, data, tail15] - [0xa3d90, .rodata, ov_SC01_006_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa3e1c, data, tail16] + - [0xa3e20, .rodata, ov_SC01_006_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa3e34, .rodata, ov_SC01_006_jr_8017C340] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa3e54, data, tail17] - [0xA5F08, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC01_008.yaml b/config/splat.ov_SC01_008.yaml index 201600a44..3d7194d55 100644 --- a/config/splat.ov_SC01_008.yaml +++ b/config/splat.ov_SC01_008.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC01_008_jr_801734BC] - [0x50be8, c, ov_SC01_008_jr_80178D40] - [0x52354, c, ov_SC01_008_jr_8017A4AC] + - [0x52cd4, c, ov_SC01_008_jr_8017AE2C] - [0x53d44, c, ov_SC01_008_jr_8017BE9C] - [0x575ec, data, tail] - [0x7888c, .rodata, ov_SC01_008_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x797b0, data, tail15] - [0x79840, .rodata, ov_SC01_008_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x798cc, data, tail16] + - [0x798d0, .rodata, ov_SC01_008_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x798e4, .rodata, ov_SC01_008_jr_8017BE9C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x79904, data, tail17] - [0x7B484, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC01_009.yaml b/config/splat.ov_SC01_009.yaml index a2cc2ee29..9ad99793d 100644 --- a/config/splat.ov_SC01_009.yaml +++ b/config/splat.ov_SC01_009.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC01_009_jr_801734BC] - [0x50be8, c, ov_SC01_009_jr_80178D40] - [0x52354, c, ov_SC01_009_jr_8017A4AC] + - [0x52cd4, c, ov_SC01_009_jr_8017AE2C] - [0x53d44, c, ov_SC01_009_jr_8017BE9C] - [0x5a7d4, data, tail] - [0xc8650, .rodata, ov_SC01_009_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xc9574, data, tail15] - [0xc9604, .rodata, ov_SC01_009_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc9690, data, tail16] + - [0xc9694, .rodata, ov_SC01_009_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc96a8, .rodata, ov_SC01_009_jr_8017BE9C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc96c8, data, tail17] - [0xCB304, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC01_074.yaml b/config/splat.ov_SC01_074.yaml index 82ce3df13..60e44ec36 100644 --- a/config/splat.ov_SC01_074.yaml +++ b/config/splat.ov_SC01_074.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC01_074_jr_801734BC] - [0x50be8, c, ov_SC01_074_jr_80178D40] - [0x52354, c, ov_SC01_074_jr_8017A4AC] + - [0x52cd4, c, ov_SC01_074_jr_8017AE2C] - [0x53d44, c, ov_SC01_074_jr_8017BE9C] - [0x56454, data, tail] - [0x716e0, .rodata, ov_SC01_074_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x72604, data, tail15] - [0x72694, .rodata, ov_SC01_074_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x72720, data, tail16] + - [0x72724, .rodata, ov_SC01_074_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x72738, .rodata, ov_SC01_074_jr_8017BE9C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x72758, data, tail17] - [0x73C14, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC01_080.yaml b/config/splat.ov_SC01_080.yaml index 36060f5ba..40de15b54 100644 --- a/config/splat.ov_SC01_080.yaml +++ b/config/splat.ov_SC01_080.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC01_080_jr_801734BC] - [0x50be8, c, ov_SC01_080_jr_80178D40] - [0x52354, c, ov_SC01_080_jr_8017A4AC] + - [0x52cd4, c, ov_SC01_080_jr_8017AE2C] - [0x5b3b4, data, tail] - [0x9b500, .rodata, ov_SC01_080_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9b5e0, data, tail2] @@ -144,6 +145,8 @@ segments: - [0x9c424, data, tail15] - [0x9c4b4, .rodata, ov_SC01_080_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9c540, data, tail16] + - [0x9c544, .rodata, ov_SC01_080_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9c558, data, tail17] - [0x9FDF4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9FDF7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC01_084.yaml b/config/splat.ov_SC01_084.yaml index 3d4b8ba4e..96b17b953 100644 --- a/config/splat.ov_SC01_084.yaml +++ b/config/splat.ov_SC01_084.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC01_084_jr_801734BC] - [0x50be8, c, ov_SC01_084_jr_80178D40] - [0x52354, c, ov_SC01_084_jr_8017A4AC] + - [0x52cd4, c, ov_SC01_084_jr_8017AE2C] - [0x54928, c, ov_SC01_084_jr_8017CA80] - [0x5e6a8, data, tail] - [0x9ced0, .rodata, ov_SC01_084_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x9ddf4, data, tail15] - [0x9de84, .rodata, ov_SC01_084_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9df10, data, tail16] + - [0x9df14, .rodata, ov_SC01_084_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9df28, .rodata, ov_SC01_084_jr_8017CA80] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9df48, data, tail17] - [0x9FA9C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC02_000.yaml b/config/splat.ov_SC02_000.yaml index 410bb76d1..dab1eae61 100644 --- a/config/splat.ov_SC02_000.yaml +++ b/config/splat.ov_SC02_000.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC02_000_jr_801734BC] - [0x50be8, c, ov_SC02_000_jr_80178D40] - [0x52354, c, ov_SC02_000_jr_8017A4AC] + - [0x52cd4, c, ov_SC02_000_jr_8017AE2C] - [0x57b58, c, ov_SC02_000_jr_8017FCB0] - [0x62a58, data, tail] - [0xbd724, .rodata, ov_SC02_000_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,8 +146,10 @@ segments: - [0xbe648, data, tail15] - [0xbe6d8, .rodata, ov_SC02_000_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbe764, data, tail16] + - [0xbe768, .rodata, ov_SC02_000_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xbe77c, data, tail17] - [0xbe944, .rodata, ov_SC02_000_jr_8017FCB0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe964, data, tail17] + - [0xbe964, data, tail18] - [0xC070C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC070F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_003.yaml b/config/splat.ov_SC02_003.yaml index a7d2e29c4..f6fa47e90 100644 --- a/config/splat.ov_SC02_003.yaml +++ b/config/splat.ov_SC02_003.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC02_003_jr_801734BC] - [0x50be8, c, ov_SC02_003_jr_80178D40] - [0x52354, c, ov_SC02_003_jr_8017A4AC] + - [0x52cd4, c, ov_SC02_003_jr_8017AE2C] - [0x57b58, c, ov_SC02_003_jr_8017FCB0] - [0x62a58, data, tail] - [0xbd724, .rodata, ov_SC02_003_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,8 +146,10 @@ segments: - [0xbe648, data, tail15] - [0xbe6d8, .rodata, ov_SC02_003_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbe764, data, tail16] + - [0xbe768, .rodata, ov_SC02_003_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xbe77c, data, tail17] - [0xbe944, .rodata, ov_SC02_003_jr_8017FCB0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe964, data, tail17] + - [0xbe964, data, tail18] - [0xC070C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC070F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_004.yaml b/config/splat.ov_SC02_004.yaml index c2cd1489e..71297701e 100644 --- a/config/splat.ov_SC02_004.yaml +++ b/config/splat.ov_SC02_004.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC02_004_jr_801734BC] - [0x50be8, c, ov_SC02_004_jr_80178D40] - [0x52354, c, ov_SC02_004_jr_8017A4AC] + - [0x52cd4, c, ov_SC02_004_jr_8017AE2C] - [0x55b38, data, tail] - [0x6bd34, .rodata, ov_SC02_004_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6be14, data, tail2] @@ -144,6 +145,8 @@ segments: - [0x6cc58, data, tail15] - [0x6cce8, .rodata, ov_SC02_004_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6cd74, data, tail16] + - [0x6cd78, .rodata, ov_SC02_004_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6cd8c, data, tail17] - [0x6E26C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6E26F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_005.yaml b/config/splat.ov_SC02_005.yaml index 6802c6b7f..438a370e4 100644 --- a/config/splat.ov_SC02_005.yaml +++ b/config/splat.ov_SC02_005.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC02_005_jr_801734BC] - [0x50be8, c, ov_SC02_005_jr_80178D40] - [0x52354, c, ov_SC02_005_jr_8017A4AC] + - [0x52cd4, c, ov_SC02_005_jr_8017AE2C] - [0x6873c, data, tail] - [0xb9a68, .rodata, ov_SC02_005_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb9b48, data, tail2] @@ -144,6 +145,8 @@ segments: - [0xba98c, data, tail15] - [0xbaa1c, .rodata, ov_SC02_005_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbaaa8, data, tail16] + - [0xbaaac, .rodata, ov_SC02_005_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xbaac0, data, tail17] - [0xBCB00, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBCB01] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_011.yaml b/config/splat.ov_SC02_011.yaml index 8b304a298..b4a0afede 100644 --- a/config/splat.ov_SC02_011.yaml +++ b/config/splat.ov_SC02_011.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC02_011_jr_801734BC] - [0x50be8, c, ov_SC02_011_jr_80178D40] - [0x52354, c, ov_SC02_011_jr_8017A4AC] + - [0x52cd4, c, ov_SC02_011_jr_8017AE2C] - [0x68b8c, data, tail] - [0xc0bc4, .rodata, ov_SC02_011_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc0ca4, data, tail2] @@ -144,6 +145,8 @@ segments: - [0xc1ae8, data, tail15] - [0xc1b78, .rodata, ov_SC02_011_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc1c04, data, tail16] + - [0xc1c08, .rodata, ov_SC02_011_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc1c1c, data, tail17] - [0xC3924, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC3927] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_015.yaml b/config/splat.ov_SC02_015.yaml index 0d1ca708e..cbbb4a24c 100644 --- a/config/splat.ov_SC02_015.yaml +++ b/config/splat.ov_SC02_015.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC02_015_jr_801734BC] - [0x50be8, c, ov_SC02_015_jr_80178D40] - [0x52354, c, ov_SC02_015_jr_8017A4AC] + - [0x52cd4, c, ov_SC02_015_jr_8017AE2C] - [0x560a0, data, tail] - [0x65e1c, .rodata, ov_SC02_015_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x65efc, data, tail2] @@ -144,6 +145,8 @@ segments: - [0x66d40, data, tail15] - [0x66dd0, .rodata, ov_SC02_015_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x66e5c, data, tail16] + - [0x66e60, .rodata, ov_SC02_015_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x66e74, data, tail17] - [0x68544, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x68547] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_016.yaml b/config/splat.ov_SC02_016.yaml index f53a81223..f14945297 100644 --- a/config/splat.ov_SC02_016.yaml +++ b/config/splat.ov_SC02_016.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC02_016_jr_801734BC] - [0x50be8, c, ov_SC02_016_jr_80178D40] - [0x52354, c, ov_SC02_016_jr_8017A4AC] + - [0x52cd4, c, ov_SC02_016_jr_8017AE2C] - [0x55b18, c, ov_SC02_016_jr_8017DC70] - [0x5c2d8, data, tail] - [0x899fc, .rodata, ov_SC02_016_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x8a920, data, tail15] - [0x8a9b0, .rodata, ov_SC02_016_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8aa3c, data, tail16] + - [0x8aa40, .rodata, ov_SC02_016_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8aa54, .rodata, ov_SC02_016_jr_8017DC70] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8aa74, data, tail17] - [0x8C97C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC02_017.yaml b/config/splat.ov_SC02_017.yaml index 50f86d59d..845ae73d1 100644 --- a/config/splat.ov_SC02_017.yaml +++ b/config/splat.ov_SC02_017.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC02_017_jr_801734BC] - [0x50be8, c, ov_SC02_017_jr_80178D40] - [0x52354, c, ov_SC02_017_jr_8017A4AC] + - [0x52cd4, c, ov_SC02_017_jr_8017AE2C] - [0x55ddc, c, ov_SC02_017_jr_8017DF34] - [0x62330, data, tail] - [0xc521c, .rodata, ov_SC02_017_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xc6140, data, tail15] - [0xc61d0, .rodata, ov_SC02_017_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc625c, data, tail16] + - [0xc6260, .rodata, ov_SC02_017_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc6274, .rodata, ov_SC02_017_jr_8017DF34] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc6294, data, tail17] - [0xC7BDC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC02_021.yaml b/config/splat.ov_SC02_021.yaml index 6256ca76b..2c0d42d7a 100644 --- a/config/splat.ov_SC02_021.yaml +++ b/config/splat.ov_SC02_021.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC02_021_jr_801734BC] - [0x50be8, c, ov_SC02_021_jr_80178D40] - [0x52354, c, ov_SC02_021_jr_8017A4AC] + - [0x52cd4, c, ov_SC02_021_jr_8017AE2C] - [0x5413c, c, ov_SC02_021_jr_8017C294] - [0x57924, data, tail] - [0x68798, .rodata, ov_SC02_021_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x696bc, data, tail15] - [0x6974c, .rodata, ov_SC02_021_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x697d8, data, tail16] + - [0x697dc, .rodata, ov_SC02_021_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x697f0, .rodata, ov_SC02_021_jr_8017C294] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x69810, data, tail17] - [0x6B744, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC02_026.yaml b/config/splat.ov_SC02_026.yaml index da4a09522..8cd3670bb 100644 --- a/config/splat.ov_SC02_026.yaml +++ b/config/splat.ov_SC02_026.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC02_026_jr_801734BC] - [0x50be8, c, ov_SC02_026_jr_80178D40] - [0x52354, c, ov_SC02_026_jr_8017A4AC] + - [0x52cd4, c, ov_SC02_026_jr_8017AE2C] - [0x54028, c, ov_SC02_026_jr_8017C180] - [0x5df78, data, tail] - [0xa5bcc, .rodata, ov_SC02_026_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xa6af0, data, tail15] - [0xa6b80, .rodata, ov_SC02_026_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa6c0c, data, tail16] + - [0xa6c10, .rodata, ov_SC02_026_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa6c24, .rodata, ov_SC02_026_jr_8017C180] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa6c44, data, tail17] - [0xA8164, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC02_027.yaml b/config/splat.ov_SC02_027.yaml index 98763665f..325ac5719 100644 --- a/config/splat.ov_SC02_027.yaml +++ b/config/splat.ov_SC02_027.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC02_027_jr_801734BC] - [0x50be8, c, ov_SC02_027_jr_80178D40] - [0x52354, c, ov_SC02_027_jr_8017A4AC] + - [0x52cd4, c, ov_SC02_027_jr_8017AE2C] - [0x55740, c, ov_SC02_027_jr_8017D898] - [0x6309c, data, tail] - [0xaf938, .rodata, ov_SC02_027_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xb085c, data, tail15] - [0xb08ec, .rodata, ov_SC02_027_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb0978, data, tail16] + - [0xb097c, .rodata, ov_SC02_027_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb0990, .rodata, ov_SC02_027_jr_8017D898] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb09b0, data, tail17] - [0xB28E4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC02_028.yaml b/config/splat.ov_SC02_028.yaml index 871370794..a0b9a02bf 100644 --- a/config/splat.ov_SC02_028.yaml +++ b/config/splat.ov_SC02_028.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC02_028_jr_801734BC] - [0x50be8, c, ov_SC02_028_jr_80178D40] - [0x52354, c, ov_SC02_028_jr_8017A4AC] + - [0x52cd4, c, ov_SC02_028_jr_8017AE2C] - [0x55740, c, ov_SC02_028_jr_8017D898] - [0x632a0, data, tail] - [0xa88bc, .rodata, ov_SC02_028_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xa97e0, data, tail15] - [0xa9870, .rodata, ov_SC02_028_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa98fc, data, tail16] + - [0xa9900, .rodata, ov_SC02_028_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa9914, .rodata, ov_SC02_028_jr_8017D898] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa9934, data, tail17] - [0xAB4E4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC02_031.yaml b/config/splat.ov_SC02_031.yaml index d6db14fc4..5b1f92257 100644 --- a/config/splat.ov_SC02_031.yaml +++ b/config/splat.ov_SC02_031.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC02_031_jr_801734BC] - [0x50be8, c, ov_SC02_031_jr_80178D40] - [0x52354, c, ov_SC02_031_jr_8017A4AC] + - [0x52cd4, c, ov_SC02_031_jr_8017AE2C] - [0x5cacc, data, tail] - [0x8d0b8, .rodata, ov_SC02_031_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8d198, data, tail2] @@ -144,6 +145,8 @@ segments: - [0x8dfdc, data, tail15] - [0x8e06c, .rodata, ov_SC02_031_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8e0f8, data, tail16] + - [0x8e0fc, .rodata, ov_SC02_031_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8e110, data, tail17] - [0x8F9B4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8F9B7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_035.yaml b/config/splat.ov_SC02_035.yaml index 590348077..d4c894918 100644 --- a/config/splat.ov_SC02_035.yaml +++ b/config/splat.ov_SC02_035.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC02_035_jr_801734BC] - [0x50be8, c, ov_SC02_035_jr_80178D40] - [0x52354, c, ov_SC02_035_jr_8017A4AC] + - [0x52cd4, c, ov_SC02_035_jr_8017AE2C] - [0x53d64, c, ov_SC02_035_jr_8017BEBC] - [0x5c32c, data, tail] - [0x94380, .rodata, ov_SC02_035_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x952a4, data, tail15] - [0x95334, .rodata, ov_SC02_035_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x953c0, data, tail16] + - [0x953c4, .rodata, ov_SC02_035_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x953d8, .rodata, ov_SC02_035_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x953f8, data, tail17] - [0x968EC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC02_039.yaml b/config/splat.ov_SC02_039.yaml index 9e453b473..f1c2914c6 100644 --- a/config/splat.ov_SC02_039.yaml +++ b/config/splat.ov_SC02_039.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC02_039_jr_801734BC] - [0x50be8, c, ov_SC02_039_jr_80178D40] - [0x52354, c, ov_SC02_039_jr_8017A4AC] + - [0x52cd4, c, ov_SC02_039_jr_8017AE2C] - [0x53d64, c, ov_SC02_039_jr_8017BEBC] - [0x56f58, data, tail] - [0x7676c, .rodata, ov_SC02_039_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x77690, data, tail15] - [0x77720, .rodata, ov_SC02_039_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x777ac, data, tail16] + - [0x777b0, .rodata, ov_SC02_039_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x777c4, .rodata, ov_SC02_039_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x777e4, data, tail17] - [0x78CA4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC02_041.yaml b/config/splat.ov_SC02_041.yaml index 7138da031..ee28294ec 100644 --- a/config/splat.ov_SC02_041.yaml +++ b/config/splat.ov_SC02_041.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC02_041_jr_801734BC] - [0x50be8, c, ov_SC02_041_jr_80178D40] - [0x52354, c, ov_SC02_041_jr_8017A4AC] + - [0x52cd4, c, ov_SC02_041_jr_8017AE2C] - [0x53d64, c, ov_SC02_041_jr_8017BEBC] - [0x5cc28, data, tail] - [0x8ead8, .rodata, ov_SC02_041_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x8f9fc, data, tail15] - [0x8fa8c, .rodata, ov_SC02_041_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8fb18, data, tail16] + - [0x8fb1c, .rodata, ov_SC02_041_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8fb30, .rodata, ov_SC02_041_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8fb50, data, tail17] - [0x9157C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_001.yaml b/config/splat.ov_SC03_001.yaml index f8aa36577..6bc20fdf5 100644 --- a/config/splat.ov_SC03_001.yaml +++ b/config/splat.ov_SC03_001.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_001_jr_801734BC] - [0x50be8, c, ov_SC03_001_jr_80178D40] - [0x52354, c, ov_SC03_001_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_001_jr_8017AE2C] - [0x650c8, data, tail] - [0xc3bf8, .rodata, ov_SC03_001_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc3cd8, data, tail2] @@ -144,6 +145,8 @@ segments: - [0xc4b1c, data, tail15] - [0xc4bac, .rodata, ov_SC03_001_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc4c38, data, tail16] + - [0xc4c3c, .rodata, ov_SC03_001_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc4c50, data, tail17] - [0xC730C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC730F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_002.yaml b/config/splat.ov_SC03_002.yaml index 93253e174..2bb0cc718 100644 --- a/config/splat.ov_SC03_002.yaml +++ b/config/splat.ov_SC03_002.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_002_jr_801734BC] - [0x50be8, c, ov_SC03_002_jr_80178D40] - [0x52354, c, ov_SC03_002_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_002_jr_8017AE2C] - [0x554ac, c, ov_SC03_002_jr_8017D604] - [0x5d358, data, tail] - [0xa1154, .rodata, ov_SC03_002_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xa2078, data, tail15] - [0xa2108, .rodata, ov_SC03_002_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa2194, data, tail16] + - [0xa2198, .rodata, ov_SC03_002_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa21ac, .rodata, ov_SC03_002_jr_8017D604] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa21cc, data, tail17] - [0xA39F4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_003.yaml b/config/splat.ov_SC03_003.yaml index 3e1a66045..c6fe9021b 100644 --- a/config/splat.ov_SC03_003.yaml +++ b/config/splat.ov_SC03_003.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_003_jr_801734BC] - [0x50be8, c, ov_SC03_003_jr_80178D40] - [0x52354, c, ov_SC03_003_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_003_jr_8017AE2C] - [0x57120, data, tail] - [0x654d4, .rodata, ov_SC03_003_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x655b4, data, tail2] @@ -144,6 +145,8 @@ segments: - [0x663f8, data, tail15] - [0x66488, .rodata, ov_SC03_003_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x66514, data, tail16] + - [0x66518, .rodata, ov_SC03_003_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6652c, data, tail17] - [0x67A24, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x67A25] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_006.yaml b/config/splat.ov_SC03_006.yaml index 92b3095de..6e1583ef4 100644 --- a/config/splat.ov_SC03_006.yaml +++ b/config/splat.ov_SC03_006.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_006_jr_801734BC] - [0x50be8, c, ov_SC03_006_jr_80178D40] - [0x52354, c, ov_SC03_006_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_006_jr_8017AE2C] - [0x6443c, data, tail] - [0xccd90, .rodata, ov_SC03_006_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xcce70, data, tail2] @@ -144,6 +145,8 @@ segments: - [0xcdcb4, data, tail15] - [0xcdd44, .rodata, ov_SC03_006_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xcddd0, data, tail16] + - [0xcddd4, .rodata, ov_SC03_006_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xcdde8, data, tail17] - [0xCF75C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xCF75F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_007.yaml b/config/splat.ov_SC03_007.yaml index c25597b29..7fd46f963 100644 --- a/config/splat.ov_SC03_007.yaml +++ b/config/splat.ov_SC03_007.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_007_jr_801734BC] - [0x50be8, c, ov_SC03_007_jr_80178D40] - [0x52354, c, ov_SC03_007_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_007_jr_8017AE2C] - [0x5f234, data, tail] - [0xbf718, .rodata, ov_SC03_007_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbf7f8, data, tail2] @@ -144,6 +145,8 @@ segments: - [0xc063c, data, tail15] - [0xc06cc, .rodata, ov_SC03_007_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc0758, data, tail16] + - [0xc075c, .rodata, ov_SC03_007_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc0770, data, tail17] - [0xC316C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC316F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_010.yaml b/config/splat.ov_SC03_010.yaml index 576d7a72d..ab2b009fe 100644 --- a/config/splat.ov_SC03_010.yaml +++ b/config/splat.ov_SC03_010.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_010_jr_801734BC] - [0x50be8, c, ov_SC03_010_jr_80178D40] - [0x52354, c, ov_SC03_010_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_010_jr_8017AE2C] - [0x57d54, data, tail] - [0x759f4, .rodata, ov_SC03_010_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x75ad4, data, tail2] @@ -144,6 +145,8 @@ segments: - [0x76918, data, tail15] - [0x769a8, .rodata, ov_SC03_010_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x76a34, data, tail16] + - [0x76a38, .rodata, ov_SC03_010_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x76a4c, data, tail17] - [0x78074, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x78077] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_011.yaml b/config/splat.ov_SC03_011.yaml index e5f2db469..98eff6ec3 100644 --- a/config/splat.ov_SC03_011.yaml +++ b/config/splat.ov_SC03_011.yaml @@ -111,6 +111,7 @@ segments: - [0x4b364, c, ov_SC03_011_jr_801734BC] - [0x50be8, c, ov_SC03_011_jr_80178D40] - [0x52354, c, ov_SC03_011_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_011_jr_8017AE2C] - [0x545d8, c, ov_SC03_011_jr_8017C730] - [0x590c4, data, tail] - [0x77c64, .rodata, ov_SC03_011_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -142,6 +143,7 @@ segments: - [0x78b88, data, tail14] - [0x78c18, .rodata, ov_SC03_011_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x78ca4, data, tail15] + - [0x78ca8, .rodata, ov_SC03_011_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x78cbc, .rodata, ov_SC03_011_jr_8017C730] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x78cdc, data, tail16] - [0x7A2A8, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_012.yaml b/config/splat.ov_SC03_012.yaml index 581a55869..50ba8bbe8 100644 --- a/config/splat.ov_SC03_012.yaml +++ b/config/splat.ov_SC03_012.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_012_jr_801734BC] - [0x50be8, c, ov_SC03_012_jr_80178D40] - [0x52354, c, ov_SC03_012_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_012_jr_8017AE2C] - [0x55fa4, data, tail] - [0x6aac0, .rodata, ov_SC03_012_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6aba0, data, tail2] @@ -144,6 +145,8 @@ segments: - [0x6b9e4, data, tail15] - [0x6ba74, .rodata, ov_SC03_012_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6bb00, data, tail16] + - [0x6bb04, .rodata, ov_SC03_012_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6bb18, data, tail17] - [0x6D004, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6D007] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_013.yaml b/config/splat.ov_SC03_013.yaml index 85a11f5b7..11c23c8c2 100644 --- a/config/splat.ov_SC03_013.yaml +++ b/config/splat.ov_SC03_013.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_013_jr_801734BC] - [0x50be8, c, ov_SC03_013_jr_80178D40] - [0x52354, c, ov_SC03_013_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_013_jr_8017AE2C] - [0x58d8c, data, tail] - [0x82d58, .rodata, ov_SC03_013_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x82e38, data, tail2] @@ -144,6 +145,8 @@ segments: - [0x83c7c, data, tail15] - [0x83d0c, .rodata, ov_SC03_013_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x83d98, data, tail16] + - [0x83d9c, .rodata, ov_SC03_013_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x83db0, data, tail17] - [0x853FC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x853FF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_014.yaml b/config/splat.ov_SC03_014.yaml index ad4b4b6e6..ca144b058 100644 --- a/config/splat.ov_SC03_014.yaml +++ b/config/splat.ov_SC03_014.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_014_jr_801734BC] - [0x50be8, c, ov_SC03_014_jr_80178D40] - [0x52354, c, ov_SC03_014_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_014_jr_8017AE2C] - [0x56a24, c, ov_SC03_014_jr_8017EB7C] - [0x633c8, data, tail] - [0xc012c, .rodata, ov_SC03_014_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,8 +146,10 @@ segments: - [0xc1050, data, tail15] - [0xc10e0, .rodata, ov_SC03_014_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc116c, data, tail16] + - [0xc1170, .rodata, ov_SC03_014_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc1184, data, tail17] - [0xc11b0, .rodata, ov_SC03_014_jr_8017EB7C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc11d0, data, tail17] + - [0xc11d0, data, tail18] - [0xC2EE4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC2EE7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_015.yaml b/config/splat.ov_SC03_015.yaml index 672ac449d..c04b65dc1 100644 --- a/config/splat.ov_SC03_015.yaml +++ b/config/splat.ov_SC03_015.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_015_jr_801734BC] - [0x50be8, c, ov_SC03_015_jr_80178D40] - [0x52354, c, ov_SC03_015_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_015_jr_8017AE2C] - [0x56a24, c, ov_SC03_015_jr_8017EB7C] - [0x633c8, data, tail] - [0xc012c, .rodata, ov_SC03_015_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,8 +146,10 @@ segments: - [0xc1050, data, tail15] - [0xc10e0, .rodata, ov_SC03_015_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc116c, data, tail16] + - [0xc1170, .rodata, ov_SC03_015_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc1184, data, tail17] - [0xc11b0, .rodata, ov_SC03_015_jr_8017EB7C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc11d0, data, tail17] + - [0xc11d0, data, tail18] - [0xC2EE4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC2EE7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_023.yaml b/config/splat.ov_SC03_023.yaml index b0665f141..97395cee1 100644 --- a/config/splat.ov_SC03_023.yaml +++ b/config/splat.ov_SC03_023.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_023_jr_801734BC] - [0x50be8, c, ov_SC03_023_jr_80178D40] - [0x52354, c, ov_SC03_023_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_023_jr_8017AE2C] - [0x56d44, data, tail] - [0x6e704, .rodata, ov_SC03_023_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6e7e4, data, tail2] @@ -144,6 +145,8 @@ segments: - [0x6f628, data, tail15] - [0x6f6b8, .rodata, ov_SC03_023_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6f744, data, tail16] + - [0x6f748, .rodata, ov_SC03_023_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6f75c, data, tail17] - [0x70C2C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x70C2F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_024.yaml b/config/splat.ov_SC03_024.yaml index 97244b690..60ec72419 100644 --- a/config/splat.ov_SC03_024.yaml +++ b/config/splat.ov_SC03_024.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_024_jr_801734BC] - [0x50be8, c, ov_SC03_024_jr_80178D40] - [0x52354, c, ov_SC03_024_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_024_jr_8017AE2C] - [0x55e2c, c, ov_SC03_024_jr_8017DF84] - [0x5ed68, data, tail] - [0x96b8c, .rodata, ov_SC03_024_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,8 +146,10 @@ segments: - [0x97ab0, data, tail15] - [0x97b40, .rodata, ov_SC03_024_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x97bcc, data, tail16] + - [0x97bd0, .rodata, ov_SC03_024_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x97be4, data, tail17] - [0x97c10, .rodata, ov_SC03_024_jr_8017DF84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x97c30, data, tail17] + - [0x97c30, data, tail18] - [0x996F4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x996F7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_028.yaml b/config/splat.ov_SC03_028.yaml index 8f6663d9a..d7d9a5dd2 100644 --- a/config/splat.ov_SC03_028.yaml +++ b/config/splat.ov_SC03_028.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_028_jr_801734BC] - [0x50be8, c, ov_SC03_028_jr_80178D40] - [0x52354, c, ov_SC03_028_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_028_jr_8017AE2C] - [0x63834, data, tail] - [0xc0d14, .rodata, ov_SC03_028_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc0df4, data, tail2] @@ -144,6 +145,8 @@ segments: - [0xc1c38, data, tail15] - [0xc1cc8, .rodata, ov_SC03_028_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc1d54, data, tail16] + - [0xc1d58, .rodata, ov_SC03_028_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc1d6c, data, tail17] - [0xC44AC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC44AF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_029.yaml b/config/splat.ov_SC03_029.yaml index 88dcfb769..de921554f 100644 --- a/config/splat.ov_SC03_029.yaml +++ b/config/splat.ov_SC03_029.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_029_jr_801734BC] - [0x50be8, c, ov_SC03_029_jr_80178D40] - [0x52354, c, ov_SC03_029_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_029_jr_8017AE2C] - [0x55b18, c, ov_SC03_029_jr_8017DC70] - [0x5f66c, data, tail] - [0xaee48, .rodata, ov_SC03_029_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xafd6c, data, tail15] - [0xafdfc, .rodata, ov_SC03_029_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xafe88, data, tail16] + - [0xafe8c, .rodata, ov_SC03_029_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xafea0, .rodata, ov_SC03_029_jr_8017DC70] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xafec0, data, tail17] - [0xB18EC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_030.yaml b/config/splat.ov_SC03_030.yaml index 773ffb3c6..9f2419e12 100644 --- a/config/splat.ov_SC03_030.yaml +++ b/config/splat.ov_SC03_030.yaml @@ -111,6 +111,7 @@ segments: - [0x4b364, c, ov_SC03_030_jr_801734BC] - [0x50be8, c, ov_SC03_030_jr_80178D40] - [0x52354, c, ov_SC03_030_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_030_jr_8017AE2C] - [0x59ca8, data, tail] - [0xb74ec, .rodata, ov_SC03_030_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb75cc, data, tail2] @@ -141,6 +142,8 @@ segments: - [0xb8410, data, tail14] - [0xb84a0, .rodata, ov_SC03_030_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb852c, data, tail15] + - [0xb8530, .rodata, ov_SC03_030_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xb8544, data, tail16] - [0xB9AF0] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes # ` - [0x, bin, trailing]` (the final 1-3 bytes spimdisasm's data path drops); diff --git a/config/splat.ov_SC03_031.yaml b/config/splat.ov_SC03_031.yaml index 141de6f7a..3443fc5bf 100644 --- a/config/splat.ov_SC03_031.yaml +++ b/config/splat.ov_SC03_031.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_031_jr_801734BC] - [0x50be8, c, ov_SC03_031_jr_80178D40] - [0x52354, c, ov_SC03_031_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_031_jr_8017AE2C] - [0x55a04, c, ov_SC03_031_jr_8017DB5C] - [0x5a1c4, data, tail] - [0x9b990, .rodata, ov_SC03_031_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x9c8b4, data, tail15] - [0x9c944, .rodata, ov_SC03_031_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9c9d0, data, tail16] + - [0x9c9d4, .rodata, ov_SC03_031_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9c9e8, .rodata, ov_SC03_031_jr_8017DB5C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9ca08, data, tail17] - [0x9E14C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_089.yaml b/config/splat.ov_SC03_089.yaml index cab360cdd..eff99df2c 100644 --- a/config/splat.ov_SC03_089.yaml +++ b/config/splat.ov_SC03_089.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_089_jr_801734BC] - [0x50be8, c, ov_SC03_089_jr_80178D40] - [0x52354, c, ov_SC03_089_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_089_jr_8017AE2C] - [0x54928, c, ov_SC03_089_jr_8017CA80] - [0x614c0, data, tail] - [0x9c1fc, .rodata, ov_SC03_089_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x9d120, data, tail15] - [0x9d1b0, .rodata, ov_SC03_089_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9d23c, data, tail16] + - [0x9d240, .rodata, ov_SC03_089_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9d254, .rodata, ov_SC03_089_jr_8017CA80] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9d274, data, tail17] - [0x9E7C4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_090.yaml b/config/splat.ov_SC03_090.yaml index 2e2bf5d37..9c979dcb8 100644 --- a/config/splat.ov_SC03_090.yaml +++ b/config/splat.ov_SC03_090.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_090_jr_801734BC] - [0x50be8, c, ov_SC03_090_jr_80178D40] - [0x52354, c, ov_SC03_090_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_090_jr_8017AE2C] - [0x54928, c, ov_SC03_090_jr_8017CA80] - [0x638e4, data, tail] - [0xa1668, .rodata, ov_SC03_090_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xa258c, data, tail15] - [0xa261c, .rodata, ov_SC03_090_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa26a8, data, tail16] + - [0xa26ac, .rodata, ov_SC03_090_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa26c0, .rodata, ov_SC03_090_jr_8017CA80] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa26e0, data, tail17] - [0xA3C34, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_091.yaml b/config/splat.ov_SC03_091.yaml index cb16285f2..974e3a73e 100644 --- a/config/splat.ov_SC03_091.yaml +++ b/config/splat.ov_SC03_091.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_091_jr_801734BC] - [0x50be8, c, ov_SC03_091_jr_80178D40] - [0x52354, c, ov_SC03_091_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_091_jr_8017AE2C] - [0x55740, c, ov_SC03_091_jr_8017D898] - [0x5a110, c, ov_SC03_091_jr_80182268] - [0x6478c, data, tail] @@ -146,6 +147,7 @@ segments: - [0xa8c58, data, tail15] - [0xa8ce8, .rodata, ov_SC03_091_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa8d74, data, tail16] + - [0xa8d78, .rodata, ov_SC03_091_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa8d8c, .rodata, ov_SC03_091_jr_8017D898] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa8dac, data, tail17] - [0xAA584, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_092.yaml b/config/splat.ov_SC03_092.yaml index 859f440d8..6ed5daced 100644 --- a/config/splat.ov_SC03_092.yaml +++ b/config/splat.ov_SC03_092.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_092_jr_801734BC] - [0x50be8, c, ov_SC03_092_jr_80178D40] - [0x52354, c, ov_SC03_092_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_092_jr_8017AE2C] - [0x5cb5c, data, tail] - [0x8890c, .rodata, ov_SC03_092_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x889ec, data, tail2] @@ -144,6 +145,8 @@ segments: - [0x89830, data, tail15] - [0x898c0, .rodata, ov_SC03_092_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8994c, data, tail16] + - [0x89950, .rodata, ov_SC03_092_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x89964, data, tail17] - [0x8AF2C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8AF2F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_093.yaml b/config/splat.ov_SC03_093.yaml index f31c47703..dc667167e 100644 --- a/config/splat.ov_SC03_093.yaml +++ b/config/splat.ov_SC03_093.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_093_jr_801734BC] - [0x50be8, c, ov_SC03_093_jr_80178D40] - [0x52354, c, ov_SC03_093_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_093_jr_8017AE2C] - [0x55740, c, ov_SC03_093_jr_8017D898] - [0x5dd34, data, tail] - [0xa1d60, .rodata, ov_SC03_093_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xa2c84, data, tail15] - [0xa2d14, .rodata, ov_SC03_093_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa2da0, data, tail16] + - [0xa2da4, .rodata, ov_SC03_093_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa2db8, .rodata, ov_SC03_093_jr_8017D898] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa2dd8, data, tail17] - [0xA4584, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_094.yaml b/config/splat.ov_SC03_094.yaml index 20d5b7dcb..74afabc12 100644 --- a/config/splat.ov_SC03_094.yaml +++ b/config/splat.ov_SC03_094.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_094_jr_801734BC] - [0x50be8, c, ov_SC03_094_jr_80178D40] - [0x52354, c, ov_SC03_094_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_094_jr_8017AE2C] - [0x53d64, c, ov_SC03_094_jr_8017BEBC] - [0x5f730, data, tail] - [0xa8b9c, .rodata, ov_SC03_094_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xa9ac0, data, tail15] - [0xa9b50, .rodata, ov_SC03_094_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa9bdc, data, tail16] + - [0xa9be0, .rodata, ov_SC03_094_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa9bf4, .rodata, ov_SC03_094_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa9c14, data, tail17] - [0xAB13C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_095.yaml b/config/splat.ov_SC03_095.yaml index 9bba21206..7e205c24b 100644 --- a/config/splat.ov_SC03_095.yaml +++ b/config/splat.ov_SC03_095.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_095_jr_801734BC] - [0x50be8, c, ov_SC03_095_jr_80178D40] - [0x52354, c, ov_SC03_095_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_095_jr_8017AE2C] - [0x53d64, c, ov_SC03_095_jr_8017BEBC] - [0x58d90, data, tail] - [0x717c8, .rodata, ov_SC03_095_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x726ec, data, tail15] - [0x7277c, .rodata, ov_SC03_095_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x72808, data, tail16] + - [0x7280c, .rodata, ov_SC03_095_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x72820, .rodata, ov_SC03_095_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x72840, data, tail17] - [0x73D3C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_096.yaml b/config/splat.ov_SC03_096.yaml index f8794dbbd..c2e5a4c27 100644 --- a/config/splat.ov_SC03_096.yaml +++ b/config/splat.ov_SC03_096.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_096_jr_801734BC] - [0x50be8, c, ov_SC03_096_jr_80178D40] - [0x52354, c, ov_SC03_096_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_096_jr_8017AE2C] - [0x53d64, c, ov_SC03_096_jr_8017BEBC] - [0x58910, data, tail] - [0x7027c, .rodata, ov_SC03_096_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x711a0, data, tail15] - [0x71230, .rodata, ov_SC03_096_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x712bc, data, tail16] + - [0x712c0, .rodata, ov_SC03_096_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x712d4, .rodata, ov_SC03_096_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x712f4, data, tail17] - [0x727F4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_097.yaml b/config/splat.ov_SC03_097.yaml index 7d42c61ca..9a94b75da 100644 --- a/config/splat.ov_SC03_097.yaml +++ b/config/splat.ov_SC03_097.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_097_jr_801734BC] - [0x50be8, c, ov_SC03_097_jr_80178D40] - [0x52354, c, ov_SC03_097_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_097_jr_8017AE2C] - [0x55740, c, ov_SC03_097_jr_8017D898] - [0x5dcf0, data, tail] - [0x802ec, .rodata, ov_SC03_097_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x81210, data, tail15] - [0x812a0, .rodata, ov_SC03_097_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8132c, data, tail16] + - [0x81330, .rodata, ov_SC03_097_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x81344, .rodata, ov_SC03_097_jr_8017D898] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x81364, data, tail17] - [0x82D74, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_098.yaml b/config/splat.ov_SC03_098.yaml index e1daeb879..a0c1d13b1 100644 --- a/config/splat.ov_SC03_098.yaml +++ b/config/splat.ov_SC03_098.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_098_jr_801734BC] - [0x50be8, c, ov_SC03_098_jr_80178D40] - [0x52354, c, ov_SC03_098_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_098_jr_8017AE2C] - [0x55740, c, ov_SC03_098_jr_8017D898] - [0x5d17c, data, tail] - [0x9af70, .rodata, ov_SC03_098_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x9be94, data, tail15] - [0x9bf24, .rodata, ov_SC03_098_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9bfb0, data, tail16] + - [0x9bfb4, .rodata, ov_SC03_098_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9bfc8, .rodata, ov_SC03_098_jr_8017D898] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9bfe8, data, tail17] - [0x9D75C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_099.yaml b/config/splat.ov_SC03_099.yaml index 374375008..773e779b5 100644 --- a/config/splat.ov_SC03_099.yaml +++ b/config/splat.ov_SC03_099.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_099_jr_801734BC] - [0x50be8, c, ov_SC03_099_jr_80178D40] - [0x52354, c, ov_SC03_099_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_099_jr_8017AE2C] - [0x53d64, c, ov_SC03_099_jr_8017BEBC] - [0x5b27c, data, tail] - [0x94c44, .rodata, ov_SC03_099_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x95b68, data, tail15] - [0x95bf8, .rodata, ov_SC03_099_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x95c84, data, tail16] + - [0x95c88, .rodata, ov_SC03_099_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x95c9c, .rodata, ov_SC03_099_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x95cbc, data, tail17] - [0x97304, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_100.yaml b/config/splat.ov_SC03_100.yaml index 2de8fdf6c..35cad9fe7 100644 --- a/config/splat.ov_SC03_100.yaml +++ b/config/splat.ov_SC03_100.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_100_jr_801734BC] - [0x50be8, c, ov_SC03_100_jr_80178D40] - [0x52354, c, ov_SC03_100_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_100_jr_8017AE2C] - [0x55740, c, ov_SC03_100_jr_8017D898] - [0x5c748, data, tail] - [0x9dec8, .rodata, ov_SC03_100_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x9edec, data, tail15] - [0x9ee7c, .rodata, ov_SC03_100_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9ef08, data, tail16] + - [0x9ef0c, .rodata, ov_SC03_100_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9ef20, .rodata, ov_SC03_100_jr_8017D898] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9ef40, data, tail17] - [0xA080C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_101.yaml b/config/splat.ov_SC03_101.yaml index af22f0236..0c5b48dd9 100644 --- a/config/splat.ov_SC03_101.yaml +++ b/config/splat.ov_SC03_101.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_101_jr_801734BC] - [0x50be8, c, ov_SC03_101_jr_80178D40] - [0x52354, c, ov_SC03_101_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_101_jr_8017AE2C] - [0x54928, c, ov_SC03_101_jr_8017CA80] - [0x5b724, data, tail] - [0x73790, .rodata, ov_SC03_101_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x746b4, data, tail15] - [0x74744, .rodata, ov_SC03_101_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x747d0, data, tail16] + - [0x747d4, .rodata, ov_SC03_101_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x747e8, .rodata, ov_SC03_101_jr_8017CA80] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x74808, data, tail17] - [0x760CC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_102.yaml b/config/splat.ov_SC03_102.yaml index d014e6202..a663f87ba 100644 --- a/config/splat.ov_SC03_102.yaml +++ b/config/splat.ov_SC03_102.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_102_jr_801734BC] - [0x50be8, c, ov_SC03_102_jr_80178D40] - [0x52354, c, ov_SC03_102_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_102_jr_8017AE2C] - [0x53d64, c, ov_SC03_102_jr_8017BEBC] - [0x5dfdc, data, tail] - [0x8f40c, .rodata, ov_SC03_102_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x90330, data, tail15] - [0x903c0, .rodata, ov_SC03_102_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9044c, data, tail16] + - [0x90450, .rodata, ov_SC03_102_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x90464, .rodata, ov_SC03_102_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x90484, data, tail17] - [0x91ACC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_103.yaml b/config/splat.ov_SC03_103.yaml index f71979d4e..3019cbf05 100644 --- a/config/splat.ov_SC03_103.yaml +++ b/config/splat.ov_SC03_103.yaml @@ -111,6 +111,7 @@ segments: - [0x4b364, c, ov_SC03_103_jr_801734BC] - [0x50be8, c, ov_SC03_103_jr_80178D40] - [0x52354, c, ov_SC03_103_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_103_jr_8017AE2C] - [0x5413c, c, ov_SC03_103_jr_8017C294] - [0x5bf8c, data, tail] - [0x9a5c0, .rodata, ov_SC03_103_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -142,6 +143,7 @@ segments: - [0x9b4e4, data, tail14] - [0x9b574, .rodata, ov_SC03_103_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9b600, data, tail15] + - [0x9b604, .rodata, ov_SC03_103_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9b618, .rodata, ov_SC03_103_jr_8017C294] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9b638, data, tail16] - [0x9CC7C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_104.yaml b/config/splat.ov_SC03_104.yaml index 43d5f5d1b..aa2b5050c 100644 --- a/config/splat.ov_SC03_104.yaml +++ b/config/splat.ov_SC03_104.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_104_jr_801734BC] - [0x50be8, c, ov_SC03_104_jr_80178D40] - [0x52354, c, ov_SC03_104_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_104_jr_8017AE2C] - [0x54928, c, ov_SC03_104_jr_8017CA80] - [0x62b1c, data, tail] - [0x95b20, .rodata, ov_SC03_104_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x96a44, data, tail15] - [0x96ad4, .rodata, ov_SC03_104_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x96b60, data, tail16] + - [0x96b64, .rodata, ov_SC03_104_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x96b78, .rodata, ov_SC03_104_jr_8017CA80] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x96b98, data, tail17] - [0x9833C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_105.yaml b/config/splat.ov_SC03_105.yaml index b39693b53..8549b14c4 100644 --- a/config/splat.ov_SC03_105.yaml +++ b/config/splat.ov_SC03_105.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_105_jr_801734BC] - [0x50be8, c, ov_SC03_105_jr_80178D40] - [0x52354, c, ov_SC03_105_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_105_jr_8017AE2C] - [0x54778, c, ov_SC03_105_jr_8017C8D0] - [0x621a4, data, tail] - [0x8ee18, .rodata, ov_SC03_105_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,8 +146,10 @@ segments: - [0x8fd3c, data, tail15] - [0x8fdcc, .rodata, ov_SC03_105_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8fe58, data, tail16] + - [0x8fe5c, .rodata, ov_SC03_105_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8fe70, data, tail17] - [0x8ffa8, .rodata, ov_SC03_105_jr_8017C8D0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8ffc8, data, tail17] + - [0x8ffc8, data, tail18] - [0x94BC4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x94BC7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_108.yaml b/config/splat.ov_SC03_108.yaml index a7431d3aa..3b1f0ee8e 100644 --- a/config/splat.ov_SC03_108.yaml +++ b/config/splat.ov_SC03_108.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_108_jr_801734BC] - [0x50be8, c, ov_SC03_108_jr_80178D40] - [0x52354, c, ov_SC03_108_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_108_jr_8017AE2C] - [0x53d64, c, ov_SC03_108_jr_8017BEBC] - [0x58afc, data, tail] - [0x77320, .rodata, ov_SC03_108_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x78244, data, tail15] - [0x782d4, .rodata, ov_SC03_108_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x78360, data, tail16] + - [0x78364, .rodata, ov_SC03_108_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x78378, .rodata, ov_SC03_108_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x78398, data, tail17] - [0x7994C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_109.yaml b/config/splat.ov_SC03_109.yaml index fd504a68c..fd6e3a2a0 100644 --- a/config/splat.ov_SC03_109.yaml +++ b/config/splat.ov_SC03_109.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_109_jr_801734BC] - [0x50be8, c, ov_SC03_109_jr_80178D40] - [0x52354, c, ov_SC03_109_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_109_jr_8017AE2C] - [0x54028, c, ov_SC03_109_jr_8017C180] - [0x561a8, data, tail] - [0x6fe30, .rodata, ov_SC03_109_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x70d54, data, tail15] - [0x70de4, .rodata, ov_SC03_109_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x70e70, data, tail16] + - [0x70e74, .rodata, ov_SC03_109_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x70e88, .rodata, ov_SC03_109_jr_8017C180] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x70ea8, data, tail17] - [0x72354, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_110.yaml b/config/splat.ov_SC03_110.yaml index 9d7e01f4d..4c2970cba 100644 --- a/config/splat.ov_SC03_110.yaml +++ b/config/splat.ov_SC03_110.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_110_jr_801734BC] - [0x50be8, c, ov_SC03_110_jr_80178D40] - [0x52354, c, ov_SC03_110_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_110_jr_8017AE2C] - [0x55740, c, ov_SC03_110_jr_8017D898] - [0x59bc8, data, tail] - [0x77acc, .rodata, ov_SC03_110_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x789f0, data, tail15] - [0x78a80, .rodata, ov_SC03_110_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x78b0c, data, tail16] + - [0x78b10, .rodata, ov_SC03_110_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x78b24, .rodata, ov_SC03_110_jr_8017D898] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x78b44, data, tail17] - [0x7A384, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_111.yaml b/config/splat.ov_SC03_111.yaml index 59c183818..e1be1f473 100644 --- a/config/splat.ov_SC03_111.yaml +++ b/config/splat.ov_SC03_111.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_111_jr_801734BC] - [0x50be8, c, ov_SC03_111_jr_80178D40] - [0x52354, c, ov_SC03_111_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_111_jr_8017AE2C] - [0x56b00, c, ov_SC03_111_jr_8017EC58] - [0x5c77c, data, tail] - [0x8f04c, .rodata, ov_SC03_111_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x8ff70, data, tail15] - [0x90000, .rodata, ov_SC03_111_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9008c, data, tail16] + - [0x90090, .rodata, ov_SC03_111_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x900a4, .rodata, ov_SC03_111_jr_8017EC58] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x900c4, data, tail17] - [0x91A2C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_112.yaml b/config/splat.ov_SC03_112.yaml index de6888aad..56bcf887d 100644 --- a/config/splat.ov_SC03_112.yaml +++ b/config/splat.ov_SC03_112.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_112_jr_801734BC] - [0x50be8, c, ov_SC03_112_jr_80178D40] - [0x52354, c, ov_SC03_112_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_112_jr_8017AE2C] - [0x5413c, c, ov_SC03_112_jr_8017C294] - [0x5d584, data, tail] - [0x827b4, .rodata, ov_SC03_112_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x836d8, data, tail15] - [0x83768, .rodata, ov_SC03_112_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x837f4, data, tail16] + - [0x837f8, .rodata, ov_SC03_112_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8380c, .rodata, ov_SC03_112_jr_8017C294] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8382c, data, tail17] - [0x84FF4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_113.yaml b/config/splat.ov_SC03_113.yaml index 1b247d05b..74ab1f767 100644 --- a/config/splat.ov_SC03_113.yaml +++ b/config/splat.ov_SC03_113.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_113_jr_801734BC] - [0x50be8, c, ov_SC03_113_jr_80178D40] - [0x52354, c, ov_SC03_113_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_113_jr_8017AE2C] - [0x5413c, c, ov_SC03_113_jr_8017C294] - [0x5ac34, data, tail] - [0x7b43c, .rodata, ov_SC03_113_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x7c360, data, tail15] - [0x7c3f0, .rodata, ov_SC03_113_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7c47c, data, tail16] + - [0x7c480, .rodata, ov_SC03_113_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7c494, .rodata, ov_SC03_113_jr_8017C294] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7c4b4, data, tail17] - [0x7DB94, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_114.yaml b/config/splat.ov_SC03_114.yaml index 05ad65a8a..047452a9c 100644 --- a/config/splat.ov_SC03_114.yaml +++ b/config/splat.ov_SC03_114.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_114_jr_801734BC] - [0x50be8, c, ov_SC03_114_jr_80178D40] - [0x52354, c, ov_SC03_114_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_114_jr_8017AE2C] - [0x53d64, c, ov_SC03_114_jr_8017BEBC] - [0x5689c, data, tail] - [0x7f148, .rodata, ov_SC03_114_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x8006c, data, tail15] - [0x800fc, .rodata, ov_SC03_114_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x80188, data, tail16] + - [0x8018c, .rodata, ov_SC03_114_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x801a0, .rodata, ov_SC03_114_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x801c0, data, tail17] - [0x8170C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_115.yaml b/config/splat.ov_SC03_115.yaml index 0d81d8194..5dc3a3a63 100644 --- a/config/splat.ov_SC03_115.yaml +++ b/config/splat.ov_SC03_115.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_115_jr_801734BC] - [0x50be8, c, ov_SC03_115_jr_80178D40] - [0x52354, c, ov_SC03_115_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_115_jr_8017AE2C] - [0x53d64, c, ov_SC03_115_jr_8017BEBC] - [0x58308, data, tail] - [0x6aabc, .rodata, ov_SC03_115_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x6b9e0, data, tail15] - [0x6ba70, .rodata, ov_SC03_115_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6bafc, data, tail16] + - [0x6bb00, .rodata, ov_SC03_115_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6bb14, .rodata, ov_SC03_115_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6bb34, data, tail17] - [0x6CFE4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_116.yaml b/config/splat.ov_SC03_116.yaml index 961463a2d..52bb85a03 100644 --- a/config/splat.ov_SC03_116.yaml +++ b/config/splat.ov_SC03_116.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_116_jr_801734BC] - [0x50be8, c, ov_SC03_116_jr_80178D40] - [0x52354, c, ov_SC03_116_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_116_jr_8017AE2C] - [0x5a70c, data, tail] - [0x6d658, .rodata, ov_SC03_116_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6d738, data, tail2] @@ -144,6 +145,8 @@ segments: - [0x6e57c, data, tail15] - [0x6e60c, .rodata, ov_SC03_116_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6e698, data, tail16] + - [0x6e69c, .rodata, ov_SC03_116_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6e6b0, data, tail17] - [0x6FBF4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6FBF7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_117.yaml b/config/splat.ov_SC03_117.yaml index 1b6103e0e..ba6c1b23d 100644 --- a/config/splat.ov_SC03_117.yaml +++ b/config/splat.ov_SC03_117.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_117_jr_801734BC] - [0x50be8, c, ov_SC03_117_jr_80178D40] - [0x52354, c, ov_SC03_117_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_117_jr_8017AE2C] - [0x53d64, c, ov_SC03_117_jr_8017BEBC] - [0x5c718, data, tail] - [0xa3cf8, .rodata, ov_SC03_117_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xa4c1c, data, tail15] - [0xa4cac, .rodata, ov_SC03_117_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa4d38, data, tail16] + - [0xa4d3c, .rodata, ov_SC03_117_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa4d50, .rodata, ov_SC03_117_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa4d70, data, tail17] - [0xA67EC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_118.yaml b/config/splat.ov_SC03_118.yaml index 723c177a8..7e16684e6 100644 --- a/config/splat.ov_SC03_118.yaml +++ b/config/splat.ov_SC03_118.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_118_jr_801734BC] - [0x50be8, c, ov_SC03_118_jr_80178D40] - [0x52354, c, ov_SC03_118_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_118_jr_8017AE2C] - [0x57a2c, c, ov_SC03_118_jr_8017FB84] - [0x617c4, data, tail] - [0xa9c54, .rodata, ov_SC03_118_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,8 +146,10 @@ segments: - [0xaab78, data, tail15] - [0xaac08, .rodata, ov_SC03_118_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xaac94, data, tail16] + - [0xaac98, .rodata, ov_SC03_118_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xaacac, data, tail17] - [0xaacd8, .rodata, ov_SC03_118_jr_8017FB84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaacf8, data, tail17] + - [0xaacf8, data, tail18] - [0xAC6F4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xAC6F7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_119.yaml b/config/splat.ov_SC03_119.yaml index 5f60c5c82..6b4e83213 100644 --- a/config/splat.ov_SC03_119.yaml +++ b/config/splat.ov_SC03_119.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_119_jr_801734BC] - [0x50be8, c, ov_SC03_119_jr_80178D40] - [0x52354, c, ov_SC03_119_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_119_jr_8017AE2C] - [0x57a2c, c, ov_SC03_119_jr_8017FB84] - [0x617c4, data, tail] - [0xa9c54, .rodata, ov_SC03_119_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,8 +146,10 @@ segments: - [0xaab78, data, tail15] - [0xaac08, .rodata, ov_SC03_119_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xaac94, data, tail16] + - [0xaac98, .rodata, ov_SC03_119_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xaacac, data, tail17] - [0xaacd8, .rodata, ov_SC03_119_jr_8017FB84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaacf8, data, tail17] + - [0xaacf8, data, tail18] - [0xAC6F4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xAC6F7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_121.yaml b/config/splat.ov_SC03_121.yaml index 1d25971b9..8fb90eeb3 100644 --- a/config/splat.ov_SC03_121.yaml +++ b/config/splat.ov_SC03_121.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_121_jr_801734BC] - [0x50be8, c, ov_SC03_121_jr_80178D40] - [0x52354, c, ov_SC03_121_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_121_jr_8017AE2C] - [0x53d64, c, ov_SC03_121_jr_8017BEBC] - [0x59fe0, data, tail] - [0x8475c, .rodata, ov_SC03_121_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x85680, data, tail15] - [0x85710, .rodata, ov_SC03_121_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8579c, data, tail16] + - [0x857a0, .rodata, ov_SC03_121_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x857b4, .rodata, ov_SC03_121_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x857d4, data, tail17] - [0x86E54, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_124.yaml b/config/splat.ov_SC03_124.yaml index 80dd58eb8..0e94c9395 100644 --- a/config/splat.ov_SC03_124.yaml +++ b/config/splat.ov_SC03_124.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_124_jr_801734BC] - [0x50be8, c, ov_SC03_124_jr_80178D40] - [0x52354, c, ov_SC03_124_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_124_jr_8017AE2C] - [0x6276c, data, tail] - [0xb6eb0, .rodata, ov_SC03_124_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb6f90, data, tail2] @@ -144,6 +145,8 @@ segments: - [0xb7dd4, data, tail15] - [0xb7e64, .rodata, ov_SC03_124_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb7ef0, data, tail16] + - [0xb7ef4, .rodata, ov_SC03_124_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xb7f08, data, tail17] - [0xBA48C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBA48F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_125.yaml b/config/splat.ov_SC03_125.yaml index bb432513b..cc005e2f5 100644 --- a/config/splat.ov_SC03_125.yaml +++ b/config/splat.ov_SC03_125.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_125_jr_801734BC] - [0x50be8, c, ov_SC03_125_jr_80178D40] - [0x52354, c, ov_SC03_125_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_125_jr_8017AE2C] - [0x554ac, c, ov_SC03_125_jr_8017D604] - [0x5bbdc, data, tail] - [0x99b9c, .rodata, ov_SC03_125_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x9aac0, data, tail15] - [0x9ab50, .rodata, ov_SC03_125_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9abdc, data, tail16] + - [0x9abe0, .rodata, ov_SC03_125_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9abf4, .rodata, ov_SC03_125_jr_8017D604] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9ac14, data, tail17] - [0x9C3E4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC03_126.yaml b/config/splat.ov_SC03_126.yaml index 728cd6a4e..4d384b6dc 100644 --- a/config/splat.ov_SC03_126.yaml +++ b/config/splat.ov_SC03_126.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC03_126_jr_801734BC] - [0x50be8, c, ov_SC03_126_jr_80178D40] - [0x52354, c, ov_SC03_126_jr_8017A4AC] + - [0x52cd4, c, ov_SC03_126_jr_8017AE2C] - [0x55468, c, ov_SC03_126_jr_8017D5C0] - [0x570d4, data, tail] - [0x65488, .rodata, ov_SC03_126_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,8 +146,10 @@ segments: - [0x663ac, data, tail15] - [0x6643c, .rodata, ov_SC03_126_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x664c8, data, tail16] + - [0x664cc, .rodata, ov_SC03_126_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x664e0, data, tail17] - [0x66500, .rodata, ov_SC03_126_jr_8017D5C0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66520, data, tail17] + - [0x66520, data, tail18] - [0x679D4, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x679D5] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_000.yaml b/config/splat.ov_SC04_000.yaml index b02f5e427..d216c01ca 100644 --- a/config/splat.ov_SC04_000.yaml +++ b/config/splat.ov_SC04_000.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC04_000_jr_801734BC] - [0x50be8, c, ov_SC04_000_jr_80178D40] - [0x52354, c, ov_SC04_000_jr_8017A4AC] + - [0x52cd4, c, ov_SC04_000_jr_8017AE2C] - [0x53d64, c, ov_SC04_000_jr_8017BEBC] - [0x5b0e0, data, tail] - [0x7f504, .rodata, ov_SC04_000_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x80428, data, tail15] - [0x804b8, .rodata, ov_SC04_000_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x80544, data, tail16] + - [0x80548, .rodata, ov_SC04_000_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8055c, .rodata, ov_SC04_000_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8057c, data, tail17] - [0x82EFC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC04_002.yaml b/config/splat.ov_SC04_002.yaml index f636efef5..14750300b 100644 --- a/config/splat.ov_SC04_002.yaml +++ b/config/splat.ov_SC04_002.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC04_002_jr_801734BC] - [0x50be8, c, ov_SC04_002_jr_80178D40] - [0x52354, c, ov_SC04_002_jr_8017A4AC] + - [0x52cd4, c, ov_SC04_002_jr_8017AE2C] - [0x53d64, c, ov_SC04_002_jr_8017BEBC] - [0x6024c, data, tail] - [0x96854, .rodata, ov_SC04_002_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x97778, data, tail15] - [0x97808, .rodata, ov_SC04_002_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x97894, data, tail16] + - [0x97898, .rodata, ov_SC04_002_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x978ac, .rodata, ov_SC04_002_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x978cc, data, tail17] - [0x995DC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC04_003.yaml b/config/splat.ov_SC04_003.yaml index beb65a8d3..b4c1070e6 100644 --- a/config/splat.ov_SC04_003.yaml +++ b/config/splat.ov_SC04_003.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC04_003_jr_801734BC] - [0x50be8, c, ov_SC04_003_jr_80178D40] - [0x52354, c, ov_SC04_003_jr_8017A4AC] + - [0x52cd4, c, ov_SC04_003_jr_8017AE2C] - [0x53d64, c, ov_SC04_003_jr_8017BEBC] - [0x59fe8, data, tail] - [0x714d0, .rodata, ov_SC04_003_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x723f4, data, tail15] - [0x72484, .rodata, ov_SC04_003_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x72510, data, tail16] + - [0x72514, .rodata, ov_SC04_003_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x72528, .rodata, ov_SC04_003_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x72548, data, tail17] - [0x73A94, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC04_004.yaml b/config/splat.ov_SC04_004.yaml index 64e4ab260..384907e49 100644 --- a/config/splat.ov_SC04_004.yaml +++ b/config/splat.ov_SC04_004.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC04_004_jr_801734BC] - [0x50be8, c, ov_SC04_004_jr_80178D40] - [0x52354, c, ov_SC04_004_jr_8017A4AC] + - [0x52cd4, c, ov_SC04_004_jr_8017AE2C] - [0x5c51c, data, tail] - [0x892cc, .rodata, ov_SC04_004_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x893ac, data, tail2] @@ -144,6 +145,8 @@ segments: - [0x8a1f0, data, tail15] - [0x8a280, .rodata, ov_SC04_004_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8a30c, data, tail16] + - [0x8a310, .rodata, ov_SC04_004_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8a324, data, tail17] - [0x8BAFC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8BAFF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_005.yaml b/config/splat.ov_SC04_005.yaml index e1dc26405..f35fdce31 100644 --- a/config/splat.ov_SC04_005.yaml +++ b/config/splat.ov_SC04_005.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC04_005_jr_801734BC] - [0x50be8, c, ov_SC04_005_jr_80178D40] - [0x52354, c, ov_SC04_005_jr_8017A4AC] + - [0x52cd4, c, ov_SC04_005_jr_8017AE2C] - [0x53d64, c, ov_SC04_005_jr_8017BEBC] - [0x5f950, data, tail] - [0x97490, .rodata, ov_SC04_005_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x983b4, data, tail15] - [0x98444, .rodata, ov_SC04_005_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x984d0, data, tail16] + - [0x984d4, .rodata, ov_SC04_005_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x984e8, .rodata, ov_SC04_005_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x98508, data, tail17] - [0x9A1D4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC04_006.yaml b/config/splat.ov_SC04_006.yaml index ce85ab4ee..19b2f50fb 100644 --- a/config/splat.ov_SC04_006.yaml +++ b/config/splat.ov_SC04_006.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC04_006_jr_801734BC] - [0x50be8, c, ov_SC04_006_jr_80178D40] - [0x52354, c, ov_SC04_006_jr_8017A4AC] + - [0x52cd4, c, ov_SC04_006_jr_8017AE2C] - [0x53d64, c, ov_SC04_006_jr_8017BEBC] - [0x57a30, data, tail] - [0x73738, .rodata, ov_SC04_006_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x7465c, data, tail15] - [0x746ec, .rodata, ov_SC04_006_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x74778, data, tail16] + - [0x7477c, .rodata, ov_SC04_006_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x74790, .rodata, ov_SC04_006_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x747b0, data, tail17] - [0x75C74, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC04_007.yaml b/config/splat.ov_SC04_007.yaml index 9947f1fda..9d34e61cf 100644 --- a/config/splat.ov_SC04_007.yaml +++ b/config/splat.ov_SC04_007.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC04_007_jr_801734BC] - [0x50be8, c, ov_SC04_007_jr_80178D40] - [0x52354, c, ov_SC04_007_jr_8017A4AC] + - [0x52cd4, c, ov_SC04_007_jr_8017AE2C] - [0x53d64, c, ov_SC04_007_jr_8017BEBC] - [0x5d9e8, data, tail] - [0x8acf4, .rodata, ov_SC04_007_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x8bc18, data, tail15] - [0x8bca8, .rodata, ov_SC04_007_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8bd34, data, tail16] + - [0x8bd38, .rodata, ov_SC04_007_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8bd4c, .rodata, ov_SC04_007_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8bd6c, data, tail17] - [0x8DA34, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC04_008.yaml b/config/splat.ov_SC04_008.yaml index 4aa7e7181..134e10f77 100644 --- a/config/splat.ov_SC04_008.yaml +++ b/config/splat.ov_SC04_008.yaml @@ -111,6 +111,7 @@ segments: - [0x4b364, c, ov_SC04_008_jr_801734BC] - [0x50be8, c, ov_SC04_008_jr_80178D40] - [0x52354, c, ov_SC04_008_jr_8017A4AC] + - [0x52cd4, c, ov_SC04_008_jr_8017AE2C] - [0x56920, data, tail] - [0x679dc, .rodata, ov_SC04_008_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x67abc, data, tail2] @@ -141,6 +142,8 @@ segments: - [0x68900, data, tail14] - [0x68990, .rodata, ov_SC04_008_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x68a1c, data, tail15] + - [0x68a20, .rodata, ov_SC04_008_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x68a34, data, tail16] - [0x6B364, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6B367] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_009.yaml b/config/splat.ov_SC04_009.yaml index a8e059c4d..8ebad6719 100644 --- a/config/splat.ov_SC04_009.yaml +++ b/config/splat.ov_SC04_009.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC04_009_jr_801734BC] - [0x50be8, c, ov_SC04_009_jr_80178D40] - [0x52354, c, ov_SC04_009_jr_8017A4AC] + - [0x52cd4, c, ov_SC04_009_jr_8017AE2C] - [0x53d64, c, ov_SC04_009_jr_8017BEBC] - [0x5694c, data, tail] - [0x6dbf0, .rodata, ov_SC04_009_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x6eb14, data, tail15] - [0x6eba4, .rodata, ov_SC04_009_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6ec30, data, tail16] + - [0x6ec34, .rodata, ov_SC04_009_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6ec48, .rodata, ov_SC04_009_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6ec68, data, tail17] - [0x70114, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC04_010.yaml b/config/splat.ov_SC04_010.yaml index b69865288..e16be34fc 100644 --- a/config/splat.ov_SC04_010.yaml +++ b/config/splat.ov_SC04_010.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC04_010_jr_801734BC] - [0x50be8, c, ov_SC04_010_jr_80178D40] - [0x52354, c, ov_SC04_010_jr_8017A4AC] + - [0x52cd4, c, ov_SC04_010_jr_8017AE2C] - [0x53d64, c, ov_SC04_010_jr_8017BEBC] - [0x55ff8, data, tail] - [0x6507c, .rodata, ov_SC04_010_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x65fa0, data, tail15] - [0x66030, .rodata, ov_SC04_010_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x660bc, data, tail16] + - [0x660c0, .rodata, ov_SC04_010_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x660d4, .rodata, ov_SC04_010_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x660f4, data, tail17] - [0x675EC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC04_011.yaml b/config/splat.ov_SC04_011.yaml index dfe74af20..6c29b7e52 100644 --- a/config/splat.ov_SC04_011.yaml +++ b/config/splat.ov_SC04_011.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC04_011_jr_801734BC] - [0x50be8, c, ov_SC04_011_jr_80178D40] - [0x52354, c, ov_SC04_011_jr_8017A4AC] + - [0x52cd4, c, ov_SC04_011_jr_8017AE2C] - [0x5533c, c, ov_SC04_011_jr_8017D494] - [0x68288, data, tail] - [0xc4618, .rodata, ov_SC04_011_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,8 +146,10 @@ segments: - [0xc553c, data, tail15] - [0xc55cc, .rodata, ov_SC04_011_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc5658, data, tail16] + - [0xc565c, .rodata, ov_SC04_011_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc5670, data, tail17] - [0xc57a8, .rodata, ov_SC04_011_jr_8017D494] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc57c8, data, tail17] + - [0xc57c8, data, tail18] - [0xC9554, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC9557] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_012.yaml b/config/splat.ov_SC04_012.yaml index 218e08902..96a64fe43 100644 --- a/config/splat.ov_SC04_012.yaml +++ b/config/splat.ov_SC04_012.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC04_012_jr_801734BC] - [0x50be8, c, ov_SC04_012_jr_80178D40] - [0x52354, c, ov_SC04_012_jr_8017A4AC] + - [0x52cd4, c, ov_SC04_012_jr_8017AE2C] - [0x5645c, data, tail] - [0x6775c, .rodata, ov_SC04_012_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6783c, data, tail2] @@ -144,6 +145,8 @@ segments: - [0x68680, data, tail15] - [0x68710, .rodata, ov_SC04_012_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6879c, data, tail16] + - [0x687a0, .rodata, ov_SC04_012_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x687b4, data, tail17] - [0x6B0E4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6B0E7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_015.yaml b/config/splat.ov_SC04_015.yaml index 385c3e2a0..397fdfd9b 100644 --- a/config/splat.ov_SC04_015.yaml +++ b/config/splat.ov_SC04_015.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC04_015_jr_801734BC] - [0x50be8, c, ov_SC04_015_jr_80178D40] - [0x52354, c, ov_SC04_015_jr_8017A4AC] + - [0x52cd4, c, ov_SC04_015_jr_8017AE2C] - [0x5c38c, data, tail] - [0x9e3f4, .rodata, ov_SC04_015_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9e4d4, data, tail2] @@ -144,6 +145,8 @@ segments: - [0x9f318, data, tail15] - [0x9f3a8, .rodata, ov_SC04_015_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9f434, data, tail16] + - [0x9f438, .rodata, ov_SC04_015_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9f44c, data, tail17] - [0xA1284, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA1287] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_016.yaml b/config/splat.ov_SC04_016.yaml index df5acd307..09a1fc99a 100644 --- a/config/splat.ov_SC04_016.yaml +++ b/config/splat.ov_SC04_016.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC04_016_jr_801734BC] - [0x50be8, c, ov_SC04_016_jr_80178D40] - [0x52354, c, ov_SC04_016_jr_8017A4AC] + - [0x52cd4, c, ov_SC04_016_jr_8017AE2C] - [0x53d64, c, ov_SC04_016_jr_8017BEBC] - [0x57e58, data, tail] - [0x7c5ac, .rodata, ov_SC04_016_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x7d4d0, data, tail15] - [0x7d560, .rodata, ov_SC04_016_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7d5ec, data, tail16] + - [0x7d5f0, .rodata, ov_SC04_016_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7d604, .rodata, ov_SC04_016_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7d624, data, tail17] - [0x84184, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC04_018.yaml b/config/splat.ov_SC04_018.yaml index 3af18a798..4dc80cfb4 100644 --- a/config/splat.ov_SC04_018.yaml +++ b/config/splat.ov_SC04_018.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC04_018_jr_801734BC] - [0x50be8, c, ov_SC04_018_jr_80178D40] - [0x52354, c, ov_SC04_018_jr_8017A4AC] + - [0x52cd4, c, ov_SC04_018_jr_8017AE2C] - [0x64dd0, data, tail] - [0xbc3c4, .rodata, ov_SC04_018_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbc4a4, data, tail2] @@ -144,6 +145,8 @@ segments: - [0xbd2e8, data, tail15] - [0xbd378, .rodata, ov_SC04_018_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbd404, data, tail16] + - [0xbd408, .rodata, ov_SC04_018_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xbd41c, data, tail17] - [0xBF9CC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBF9CF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_019.yaml b/config/splat.ov_SC04_019.yaml index 907a57e1e..20828e9bd 100644 --- a/config/splat.ov_SC04_019.yaml +++ b/config/splat.ov_SC04_019.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC04_019_jr_801734BC] - [0x50be8, c, ov_SC04_019_jr_80178D40] - [0x52354, c, ov_SC04_019_jr_8017A4AC] + - [0x52cd4, c, ov_SC04_019_jr_8017AE2C] - [0x64dd0, data, tail] - [0xbc3c4, .rodata, ov_SC04_019_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbc4a4, data, tail2] @@ -144,6 +145,8 @@ segments: - [0xbd2e8, data, tail15] - [0xbd378, .rodata, ov_SC04_019_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbd404, data, tail16] + - [0xbd408, .rodata, ov_SC04_019_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xbd41c, data, tail17] - [0xBF9CC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBF9CF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_020.yaml b/config/splat.ov_SC04_020.yaml index 901ac2597..b2881f38b 100644 --- a/config/splat.ov_SC04_020.yaml +++ b/config/splat.ov_SC04_020.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC04_020_jr_801734BC] - [0x50be8, c, ov_SC04_020_jr_80178D40] - [0x52354, c, ov_SC04_020_jr_8017A4AC] + - [0x52cd4, c, ov_SC04_020_jr_8017AE2C] - [0x554ac, c, ov_SC04_020_jr_8017D604] - [0x5b1a8, data, tail] - [0x91dec, .rodata, ov_SC04_020_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x92d10, data, tail15] - [0x92da0, .rodata, ov_SC04_020_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x92e2c, data, tail16] + - [0x92e30, .rodata, ov_SC04_020_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x92e44, .rodata, ov_SC04_020_jr_8017D604] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x92e64, data, tail17] - [0x94654, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC04_021.yaml b/config/splat.ov_SC04_021.yaml index 52ae87cea..61b0a5685 100644 --- a/config/splat.ov_SC04_021.yaml +++ b/config/splat.ov_SC04_021.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC04_021_jr_801734BC] - [0x50be8, c, ov_SC04_021_jr_80178D40] - [0x52354, c, ov_SC04_021_jr_8017A4AC] + - [0x52cd4, c, ov_SC04_021_jr_8017AE2C] - [0x55468, c, ov_SC04_021_jr_8017D5C0] - [0x570d4, data, tail] - [0x65488, .rodata, ov_SC04_021_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,8 +146,10 @@ segments: - [0x663ac, data, tail15] - [0x6643c, .rodata, ov_SC04_021_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x664c8, data, tail16] + - [0x664cc, .rodata, ov_SC04_021_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x664e0, data, tail17] - [0x66500, .rodata, ov_SC04_021_jr_8017D5C0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66520, data, tail17] + - [0x66520, data, tail18] - [0x679D4, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x679D5] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC05_000.yaml b/config/splat.ov_SC05_000.yaml index dab402696..0a70c37e0 100644 --- a/config/splat.ov_SC05_000.yaml +++ b/config/splat.ov_SC05_000.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC05_000_jr_801734BC] - [0x50be8, c, ov_SC05_000_jr_80178D40] - [0x52354, c, ov_SC05_000_jr_8017A4AC] + - [0x52cd4, c, ov_SC05_000_jr_8017AE2C] - [0x53d64, c, ov_SC05_000_jr_8017BEBC] - [0x560e8, data, tail] - [0x705d8, .rodata, ov_SC05_000_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x714fc, data, tail15] - [0x7158c, .rodata, ov_SC05_000_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x71618, data, tail16] + - [0x7161c, .rodata, ov_SC05_000_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x71630, .rodata, ov_SC05_000_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x71650, data, tail17] - [0x72AFC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC05_001.yaml b/config/splat.ov_SC05_001.yaml index c00eca7a7..5ec100af0 100644 --- a/config/splat.ov_SC05_001.yaml +++ b/config/splat.ov_SC05_001.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC05_001_jr_801734BC] - [0x50be8, c, ov_SC05_001_jr_80178D40] - [0x52354, c, ov_SC05_001_jr_8017A4AC] + - [0x52cd4, c, ov_SC05_001_jr_8017AE2C] - [0x53d64, c, ov_SC05_001_jr_8017BEBC] - [0x5d8c4, data, tail] - [0x8b58c, .rodata, ov_SC05_001_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x8c4b0, data, tail15] - [0x8c540, .rodata, ov_SC05_001_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8c5cc, data, tail16] + - [0x8c5d0, .rodata, ov_SC05_001_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8c5e4, .rodata, ov_SC05_001_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8c604, data, tail17] - [0x8DEAC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC05_002.yaml b/config/splat.ov_SC05_002.yaml index 25ddb158e..1a0855be5 100644 --- a/config/splat.ov_SC05_002.yaml +++ b/config/splat.ov_SC05_002.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC05_002_jr_801734BC] - [0x50be8, c, ov_SC05_002_jr_80178D40] - [0x52354, c, ov_SC05_002_jr_8017A4AC] + - [0x52cd4, c, ov_SC05_002_jr_8017AE2C] - [0x53d64, c, ov_SC05_002_jr_8017BEBC] - [0x58084, data, tail] - [0x75938, .rodata, ov_SC05_002_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x7685c, data, tail15] - [0x768ec, .rodata, ov_SC05_002_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x76978, data, tail16] + - [0x7697c, .rodata, ov_SC05_002_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x76990, .rodata, ov_SC05_002_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x769b0, data, tail17] - [0x77E64, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC05_003.yaml b/config/splat.ov_SC05_003.yaml index 2f7278bd9..905cf15b8 100644 --- a/config/splat.ov_SC05_003.yaml +++ b/config/splat.ov_SC05_003.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC05_003_jr_801734BC] - [0x50be8, c, ov_SC05_003_jr_80178D40] - [0x52354, c, ov_SC05_003_jr_8017A4AC] + - [0x52cd4, c, ov_SC05_003_jr_8017AE2C] - [0x53d64, c, ov_SC05_003_jr_8017BEBC] - [0x5a3bc, data, tail] - [0x82434, .rodata, ov_SC05_003_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x83358, data, tail15] - [0x833e8, .rodata, ov_SC05_003_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x83474, data, tail16] + - [0x83478, .rodata, ov_SC05_003_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8348c, .rodata, ov_SC05_003_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x834ac, data, tail17] - [0x84974, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC05_004.yaml b/config/splat.ov_SC05_004.yaml index 3625cc998..7a7a17ce9 100644 --- a/config/splat.ov_SC05_004.yaml +++ b/config/splat.ov_SC05_004.yaml @@ -111,6 +111,7 @@ segments: - [0x4b364, c, ov_SC05_004_jr_801734BC] - [0x50be8, c, ov_SC05_004_jr_80178D40] - [0x52354, c, ov_SC05_004_jr_8017A4AC] + - [0x52cd4, c, ov_SC05_004_jr_8017AE2C] - [0x53d64, c, ov_SC05_004_jr_8017BEBC] - [0x594c8, data, tail] - [0x74a28, .rodata, ov_SC05_004_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -142,6 +143,7 @@ segments: - [0x7594c, data, tail14] - [0x759dc, .rodata, ov_SC05_004_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x75a68, data, tail15] + - [0x75a6c, .rodata, ov_SC05_004_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x75a80, .rodata, ov_SC05_004_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x75aa0, data, tail16] - [0x771CC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC05_005.yaml b/config/splat.ov_SC05_005.yaml index 819c135f6..5aabfd5a3 100644 --- a/config/splat.ov_SC05_005.yaml +++ b/config/splat.ov_SC05_005.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC05_005_jr_801734BC] - [0x50be8, c, ov_SC05_005_jr_80178D40] - [0x52354, c, ov_SC05_005_jr_8017A4AC] + - [0x52cd4, c, ov_SC05_005_jr_8017AE2C] - [0x55740, c, ov_SC05_005_jr_8017D898] - [0x5a29c, data, tail] - [0x87710, .rodata, ov_SC05_005_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x88634, data, tail15] - [0x886c4, .rodata, ov_SC05_005_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x88750, data, tail16] + - [0x88754, .rodata, ov_SC05_005_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x88768, .rodata, ov_SC05_005_jr_8017D898] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x88788, data, tail17] - [0x89ED4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC05_006.yaml b/config/splat.ov_SC05_006.yaml index 8a4ee1957..156e687ac 100644 --- a/config/splat.ov_SC05_006.yaml +++ b/config/splat.ov_SC05_006.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC05_006_jr_801734BC] - [0x50be8, c, ov_SC05_006_jr_80178D40] - [0x52354, c, ov_SC05_006_jr_8017A4AC] + - [0x52cd4, c, ov_SC05_006_jr_8017AE2C] - [0x53d64, c, ov_SC05_006_jr_8017BEBC] - [0x572bc, data, tail] - [0x65860, .rodata, ov_SC05_006_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x66784, data, tail15] - [0x66814, .rodata, ov_SC05_006_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x668a0, data, tail16] + - [0x668a4, .rodata, ov_SC05_006_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x668b8, .rodata, ov_SC05_006_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x668d8, data, tail17] - [0x68004, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC05_007.yaml b/config/splat.ov_SC05_007.yaml index 646344e3e..3a0099770 100644 --- a/config/splat.ov_SC05_007.yaml +++ b/config/splat.ov_SC05_007.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC05_007_jr_801734BC] - [0x50be8, c, ov_SC05_007_jr_80178D40] - [0x52354, c, ov_SC05_007_jr_8017A4AC] + - [0x52cd4, c, ov_SC05_007_jr_8017AE2C] - [0x53d64, c, ov_SC05_007_jr_8017BEBC] - [0x588b8, data, tail] - [0x72838, .rodata, ov_SC05_007_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x7375c, data, tail15] - [0x737ec, .rodata, ov_SC05_007_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x73878, data, tail16] + - [0x7387c, .rodata, ov_SC05_007_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x73890, .rodata, ov_SC05_007_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x738b0, data, tail17] - [0x74DA4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC05_008.yaml b/config/splat.ov_SC05_008.yaml index b49fb0d83..c720f355f 100644 --- a/config/splat.ov_SC05_008.yaml +++ b/config/splat.ov_SC05_008.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC05_008_jr_801734BC] - [0x50be8, c, ov_SC05_008_jr_80178D40] - [0x52354, c, ov_SC05_008_jr_8017A4AC] + - [0x52cd4, c, ov_SC05_008_jr_8017AE2C] - [0x5a810, data, tail] - [0x76b6c, .rodata, ov_SC05_008_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x76c4c, data, tail2] @@ -144,6 +145,8 @@ segments: - [0x77a90, data, tail15] - [0x77b20, .rodata, ov_SC05_008_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x77bac, data, tail16] + - [0x77bb0, .rodata, ov_SC05_008_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x77bc4, data, tail17] - [0x79190, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x79193] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC05_009.yaml b/config/splat.ov_SC05_009.yaml index ce65c9195..5cafde4dc 100644 --- a/config/splat.ov_SC05_009.yaml +++ b/config/splat.ov_SC05_009.yaml @@ -111,6 +111,7 @@ segments: - [0x4b364, c, ov_SC05_009_jr_801734BC] - [0x50be8, c, ov_SC05_009_jr_80178D40] - [0x52354, c, ov_SC05_009_jr_8017A4AC] + - [0x52cd4, c, ov_SC05_009_jr_8017AE2C] - [0x53d64, c, ov_SC05_009_jr_8017BEBC] - [0x56920, data, tail] - [0x6c580, .rodata, ov_SC05_009_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -142,6 +143,7 @@ segments: - [0x6d4a4, data, tail14] - [0x6d534, .rodata, ov_SC05_009_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6d5c0, data, tail15] + - [0x6d5c4, .rodata, ov_SC05_009_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6d5d8, .rodata, ov_SC05_009_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6d5f8, data, tail16] - [0x6EAEC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC05_010.yaml b/config/splat.ov_SC05_010.yaml index bdf5c8a9c..2e982fe32 100644 --- a/config/splat.ov_SC05_010.yaml +++ b/config/splat.ov_SC05_010.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC05_010_jr_801734BC] - [0x50be8, c, ov_SC05_010_jr_80178D40] - [0x52354, c, ov_SC05_010_jr_8017A4AC] + - [0x52cd4, c, ov_SC05_010_jr_8017AE2C] - [0x54778, c, ov_SC05_010_jr_8017C8D0] - [0x607fc, data, tail] - [0x9c7b4, .rodata, ov_SC05_010_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,8 +146,10 @@ segments: - [0x9d6d8, data, tail15] - [0x9d768, .rodata, ov_SC05_010_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9d7f4, data, tail16] + - [0x9d7f8, .rodata, ov_SC05_010_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9d80c, data, tail17] - [0x9d944, .rodata, ov_SC05_010_jr_8017C8D0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9d964, data, tail17] + - [0x9d964, data, tail18] - [0x9FED4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9FED7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC05_011.yaml b/config/splat.ov_SC05_011.yaml index 734993a76..b054930af 100644 --- a/config/splat.ov_SC05_011.yaml +++ b/config/splat.ov_SC05_011.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC05_011_jr_801734BC] - [0x50be8, c, ov_SC05_011_jr_80178D40] - [0x52354, c, ov_SC05_011_jr_8017A4AC] + - [0x52cd4, c, ov_SC05_011_jr_8017AE2C] - [0x53d64, c, ov_SC05_011_jr_8017BEBC] - [0x55b74, data, tail] - [0x72b18, .rodata, ov_SC05_011_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x73a3c, data, tail15] - [0x73acc, .rodata, ov_SC05_011_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x73b58, data, tail16] + - [0x73b5c, .rodata, ov_SC05_011_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x73b70, .rodata, ov_SC05_011_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x73b90, data, tail17] - [0x75084, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC05_017.yaml b/config/splat.ov_SC05_017.yaml index 7bb1ba2cc..70f75975f 100644 --- a/config/splat.ov_SC05_017.yaml +++ b/config/splat.ov_SC05_017.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC05_017_jr_801734BC] - [0x50be8, c, ov_SC05_017_jr_80178D40] - [0x52354, c, ov_SC05_017_jr_8017A4AC] + - [0x52cd4, c, ov_SC05_017_jr_8017AE2C] - [0x64d94, data, tail] - [0xc2200, .rodata, ov_SC05_017_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc22e0, data, tail2] @@ -144,6 +145,8 @@ segments: - [0xc3124, data, tail15] - [0xc31b4, .rodata, ov_SC05_017_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc3240, data, tail16] + - [0xc3244, .rodata, ov_SC05_017_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc3258, data, tail17] - [0xC582C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC582F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC05_018.yaml b/config/splat.ov_SC05_018.yaml index 2f5ff4e31..3c1cd9f70 100644 --- a/config/splat.ov_SC05_018.yaml +++ b/config/splat.ov_SC05_018.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC05_018_jr_801734BC] - [0x50be8, c, ov_SC05_018_jr_80178D40] - [0x52354, c, ov_SC05_018_jr_8017A4AC] + - [0x52cd4, c, ov_SC05_018_jr_8017AE2C] - [0x554ac, c, ov_SC05_018_jr_8017D604] - [0x5e790, data, tail] - [0xbbd74, .rodata, ov_SC05_018_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xbcc98, data, tail15] - [0xbcd28, .rodata, ov_SC05_018_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbcdb4, data, tail16] + - [0xbcdb8, .rodata, ov_SC05_018_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbcdcc, .rodata, ov_SC05_018_jr_8017D604] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbcdec, data, tail17] - [0xBE734, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC05_019.yaml b/config/splat.ov_SC05_019.yaml index 506876965..0b91eb19a 100644 --- a/config/splat.ov_SC05_019.yaml +++ b/config/splat.ov_SC05_019.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC05_019_jr_801734BC] - [0x50be8, c, ov_SC05_019_jr_80178D40] - [0x52354, c, ov_SC05_019_jr_8017A4AC] + - [0x52cd4, c, ov_SC05_019_jr_8017AE2C] - [0x55468, c, ov_SC05_019_jr_8017D5C0] - [0x570d4, data, tail] - [0x65488, .rodata, ov_SC05_019_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,8 +146,10 @@ segments: - [0x663ac, data, tail15] - [0x6643c, .rodata, ov_SC05_019_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x664c8, data, tail16] + - [0x664cc, .rodata, ov_SC05_019_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x664e0, data, tail17] - [0x66500, .rodata, ov_SC05_019_jr_8017D5C0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66520, data, tail17] + - [0x66520, data, tail18] - [0x679D4, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x679D5] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_000.yaml b/config/splat.ov_SC06_000.yaml index fe0b0407c..8ca367758 100644 --- a/config/splat.ov_SC06_000.yaml +++ b/config/splat.ov_SC06_000.yaml @@ -111,6 +111,7 @@ segments: - [0x4b364, c, ov_SC06_000_jr_801734BC] - [0x50be8, c, ov_SC06_000_jr_80178D40] - [0x52354, c, ov_SC06_000_jr_8017A4AC] + - [0x52cd4, c, ov_SC06_000_jr_8017AE2C] - [0x600e4, data, tail] - [0x84100, .rodata, ov_SC06_000_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x841e0, data, tail2] @@ -141,6 +142,8 @@ segments: - [0x85024, data, tail14] - [0x850b4, .rodata, ov_SC06_000_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x85140, data, tail15] + - [0x85144, .rodata, ov_SC06_000_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x85158, data, tail16] - [0x8A02C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8A02F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_006.yaml b/config/splat.ov_SC06_006.yaml index e1e95842f..8a9a93794 100644 --- a/config/splat.ov_SC06_006.yaml +++ b/config/splat.ov_SC06_006.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC06_006_jr_801734BC] - [0x50be8, c, ov_SC06_006_jr_80178D40] - [0x52354, c, ov_SC06_006_jr_8017A4AC] + - [0x52cd4, c, ov_SC06_006_jr_8017AE2C] - [0x53d64, c, ov_SC06_006_jr_8017BEBC] - [0x59c08, data, tail] - [0xcda08, .rodata, ov_SC06_006_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xce92c, data, tail15] - [0xce9bc, .rodata, ov_SC06_006_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xcea48, data, tail16] + - [0xcea4c, .rodata, ov_SC06_006_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xcea60, .rodata, ov_SC06_006_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xcea80, data, tail17] - [0xD0A0C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC06_008.yaml b/config/splat.ov_SC06_008.yaml index 9f54ed609..d3e381600 100644 --- a/config/splat.ov_SC06_008.yaml +++ b/config/splat.ov_SC06_008.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC06_008_jr_801734BC] - [0x50be8, c, ov_SC06_008_jr_80178D40] - [0x52354, c, ov_SC06_008_jr_8017A4AC] + - [0x52cd4, c, ov_SC06_008_jr_8017AE2C] - [0x5413c, c, ov_SC06_008_jr_8017C294] - [0x5d670, data, tail] - [0x7fae0, .rodata, ov_SC06_008_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x80a04, data, tail15] - [0x80a94, .rodata, ov_SC06_008_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x80b20, data, tail16] + - [0x80b24, .rodata, ov_SC06_008_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x80b38, .rodata, ov_SC06_008_jr_8017C294] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x80b58, data, tail17] - [0x826DC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC06_011.yaml b/config/splat.ov_SC06_011.yaml index 16019aded..e15801904 100644 --- a/config/splat.ov_SC06_011.yaml +++ b/config/splat.ov_SC06_011.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC06_011_jr_801734BC] - [0x50be8, c, ov_SC06_011_jr_80178D40] - [0x52354, c, ov_SC06_011_jr_8017A4AC] + - [0x52cd4, c, ov_SC06_011_jr_8017AE2C] - [0x53d64, c, ov_SC06_011_jr_8017BEBC] - [0x582ac, data, tail] - [0x81694, .rodata, ov_SC06_011_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x825b8, data, tail15] - [0x82648, .rodata, ov_SC06_011_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x826d4, data, tail16] + - [0x826d8, .rodata, ov_SC06_011_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x826ec, .rodata, ov_SC06_011_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8270c, data, tail17] - [0x83BFC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC06_013.yaml b/config/splat.ov_SC06_013.yaml index 5a3237f37..67780fb7e 100644 --- a/config/splat.ov_SC06_013.yaml +++ b/config/splat.ov_SC06_013.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC06_013_jr_801734BC] - [0x50be8, c, ov_SC06_013_jr_80178D40] - [0x52354, c, ov_SC06_013_jr_8017A4AC] + - [0x52cd4, c, ov_SC06_013_jr_8017AE2C] - [0x53d64, c, ov_SC06_013_jr_8017BEBC] - [0x56a28, data, tail] - [0x70568, .rodata, ov_SC06_013_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x7148c, data, tail15] - [0x7151c, .rodata, ov_SC06_013_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x715a8, data, tail16] + - [0x715ac, .rodata, ov_SC06_013_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x715c0, .rodata, ov_SC06_013_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x715e0, data, tail17] - [0x72AAC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC06_014.yaml b/config/splat.ov_SC06_014.yaml index 1d83f167e..6d74ce39c 100644 --- a/config/splat.ov_SC06_014.yaml +++ b/config/splat.ov_SC06_014.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC06_014_jr_801734BC] - [0x50be8, c, ov_SC06_014_jr_80178D40] - [0x52354, c, ov_SC06_014_jr_8017A4AC] + - [0x52cd4, c, ov_SC06_014_jr_8017AE2C] - [0x53d64, c, ov_SC06_014_jr_8017BEBC] - [0x57d8c, data, tail] - [0x76f58, .rodata, ov_SC06_014_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x77e7c, data, tail15] - [0x77f0c, .rodata, ov_SC06_014_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x77f98, data, tail16] + - [0x77f9c, .rodata, ov_SC06_014_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x77fb0, .rodata, ov_SC06_014_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x77fd0, data, tail17] - [0x794C4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC06_015.yaml b/config/splat.ov_SC06_015.yaml index ef9f74088..6cabcafb0 100644 --- a/config/splat.ov_SC06_015.yaml +++ b/config/splat.ov_SC06_015.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC06_015_jr_801734BC] - [0x50be8, c, ov_SC06_015_jr_80178D40] - [0x52354, c, ov_SC06_015_jr_8017A4AC] + - [0x52cd4, c, ov_SC06_015_jr_8017AE2C] - [0x53d64, c, ov_SC06_015_jr_8017BEBC] - [0x568e4, data, tail] - [0x6a338, .rodata, ov_SC06_015_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x6b25c, data, tail15] - [0x6b2ec, .rodata, ov_SC06_015_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6b378, data, tail16] + - [0x6b37c, .rodata, ov_SC06_015_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6b390, .rodata, ov_SC06_015_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6b3b0, data, tail17] - [0x6C8A4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC06_016.yaml b/config/splat.ov_SC06_016.yaml index d0531c4d4..b611bc8f2 100644 --- a/config/splat.ov_SC06_016.yaml +++ b/config/splat.ov_SC06_016.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC06_016_jr_801734BC] - [0x50be8, c, ov_SC06_016_jr_80178D40] - [0x52354, c, ov_SC06_016_jr_8017A4AC] + - [0x52cd4, c, ov_SC06_016_jr_8017AE2C] - [0x54778, c, ov_SC06_016_jr_8017C8D0] - [0x5ccf4, data, tail] - [0x74f80, .rodata, ov_SC06_016_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,8 +146,10 @@ segments: - [0x75ea4, data, tail15] - [0x75f34, .rodata, ov_SC06_016_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x75fc0, data, tail16] + - [0x75fc4, .rodata, ov_SC06_016_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x75fd8, data, tail17] - [0x76110, .rodata, ov_SC06_016_jr_8017C8D0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x76130, data, tail17] + - [0x76130, data, tail18] - [0x78114, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x78117] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_018.yaml b/config/splat.ov_SC06_018.yaml index 357cfbdbf..ed0d1eae8 100644 --- a/config/splat.ov_SC06_018.yaml +++ b/config/splat.ov_SC06_018.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC06_018_jr_801734BC] - [0x50be8, c, ov_SC06_018_jr_80178D40] - [0x52354, c, ov_SC06_018_jr_8017A4AC] + - [0x52cd4, c, ov_SC06_018_jr_8017AE2C] - [0x540f4, c, ov_SC06_018_jr_8017C24C] - [0x6b430, data, tail] - [0xaa810, .rodata, ov_SC06_018_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xab734, data, tail15] - [0xab7c4, .rodata, ov_SC06_018_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xab850, data, tail16] + - [0xab854, .rodata, ov_SC06_018_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xab868, .rodata, ov_SC06_018_jr_8017C24C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xab888, data, tail17] - [0xADA44, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC06_020.yaml b/config/splat.ov_SC06_020.yaml index 61d4098de..5f694d15e 100644 --- a/config/splat.ov_SC06_020.yaml +++ b/config/splat.ov_SC06_020.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC06_020_jr_801734BC] - [0x50be8, c, ov_SC06_020_jr_80178D40] - [0x52354, c, ov_SC06_020_jr_8017A4AC] + - [0x52cd4, c, ov_SC06_020_jr_8017AE2C] - [0x540f4, c, ov_SC06_020_jr_8017C24C] - [0x5ceb8, data, tail] - [0x900f8, .rodata, ov_SC06_020_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x9101c, data, tail15] - [0x910ac, .rodata, ov_SC06_020_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x91138, data, tail16] + - [0x9113c, .rodata, ov_SC06_020_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x91150, .rodata, ov_SC06_020_jr_8017C24C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x91170, data, tail17] - [0x92894, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC06_022.yaml b/config/splat.ov_SC06_022.yaml index 8574897da..6529b20e5 100644 --- a/config/splat.ov_SC06_022.yaml +++ b/config/splat.ov_SC06_022.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC06_022_jr_801734BC] - [0x50be8, c, ov_SC06_022_jr_80178D40] - [0x52354, c, ov_SC06_022_jr_8017A4AC] + - [0x52cd4, c, ov_SC06_022_jr_8017AE2C] - [0x53d64, c, ov_SC06_022_jr_8017BEBC] - [0x65174, data, tail] - [0xb7908, .rodata, ov_SC06_022_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xb882c, data, tail15] - [0xb88bc, .rodata, ov_SC06_022_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb8948, data, tail16] + - [0xb894c, .rodata, ov_SC06_022_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb8960, .rodata, ov_SC06_022_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb8980, data, tail17] - [0xBA114, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC06_024.yaml b/config/splat.ov_SC06_024.yaml index 5659957d3..57d5e046c 100644 --- a/config/splat.ov_SC06_024.yaml +++ b/config/splat.ov_SC06_024.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC06_024_jr_801734BC] - [0x50be8, c, ov_SC06_024_jr_80178D40] - [0x52354, c, ov_SC06_024_jr_8017A4AC] + - [0x52cd4, c, ov_SC06_024_jr_8017AE2C] - [0x53d64, c, ov_SC06_024_jr_8017BEBC] - [0x6764c, data, tail] - [0xb6a4c, .rodata, ov_SC06_024_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xb7970, data, tail15] - [0xb7a00, .rodata, ov_SC06_024_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb7a8c, data, tail16] + - [0xb7a90, .rodata, ov_SC06_024_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb7aa4, .rodata, ov_SC06_024_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb7ac4, data, tail17] - [0xB980C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC06_025.yaml b/config/splat.ov_SC06_025.yaml index bda29ddd7..8400d9140 100644 --- a/config/splat.ov_SC06_025.yaml +++ b/config/splat.ov_SC06_025.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC06_025_jr_801734BC] - [0x50be8, c, ov_SC06_025_jr_80178D40] - [0x52354, c, ov_SC06_025_jr_8017A4AC] + - [0x52cd4, c, ov_SC06_025_jr_8017AE2C] - [0x53d64, c, ov_SC06_025_jr_8017BEBC] - [0x5caf0, data, tail] - [0x86d6c, .rodata, ov_SC06_025_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x87c90, data, tail15] - [0x87d20, .rodata, ov_SC06_025_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x87dac, data, tail16] + - [0x87db0, .rodata, ov_SC06_025_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x87dc4, .rodata, ov_SC06_025_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x87de4, data, tail17] - [0x8A12C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC06_027.yaml b/config/splat.ov_SC06_027.yaml index a71fac249..e5ff4c1ee 100644 --- a/config/splat.ov_SC06_027.yaml +++ b/config/splat.ov_SC06_027.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC06_027_jr_801734BC] - [0x50be8, c, ov_SC06_027_jr_80178D40] - [0x52354, c, ov_SC06_027_jr_8017A4AC] + - [0x52cd4, c, ov_SC06_027_jr_8017AE2C] - [0x53d64, c, ov_SC06_027_jr_8017BEBC] - [0x55e30, data, tail] - [0x72da8, .rodata, ov_SC06_027_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x73ccc, data, tail15] - [0x73d5c, .rodata, ov_SC06_027_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x73de8, data, tail16] + - [0x73dec, .rodata, ov_SC06_027_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x73e00, .rodata, ov_SC06_027_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x73e20, data, tail17] - [0x752D4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC06_029.yaml b/config/splat.ov_SC06_029.yaml index 110b1f964..63f608e5b 100644 --- a/config/splat.ov_SC06_029.yaml +++ b/config/splat.ov_SC06_029.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC06_029_jr_801734BC] - [0x50be8, c, ov_SC06_029_jr_80178D40] - [0x52354, c, ov_SC06_029_jr_8017A4AC] + - [0x52cd4, c, ov_SC06_029_jr_8017AE2C] - [0x643c0, data, tail] - [0xb2424, .rodata, ov_SC06_029_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb2504, data, tail2] @@ -144,6 +145,8 @@ segments: - [0xb3348, data, tail15] - [0xb33d8, .rodata, ov_SC06_029_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb3464, data, tail16] + - [0xb3468, .rodata, ov_SC06_029_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xb347c, data, tail17] - [0xBA034, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBA037] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_030.yaml b/config/splat.ov_SC06_030.yaml index eddcf3568..856e570a2 100644 --- a/config/splat.ov_SC06_030.yaml +++ b/config/splat.ov_SC06_030.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC06_030_jr_801734BC] - [0x50be8, c, ov_SC06_030_jr_80178D40] - [0x52354, c, ov_SC06_030_jr_8017A4AC] + - [0x52cd4, c, ov_SC06_030_jr_8017AE2C] - [0x54778, c, ov_SC06_030_jr_8017C8D0] - [0x59cb4, data, tail] - [0x8f788, .rodata, ov_SC06_030_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,8 +146,10 @@ segments: - [0x906ac, data, tail15] - [0x9073c, .rodata, ov_SC06_030_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x907c8, data, tail16] + - [0x907cc, .rodata, ov_SC06_030_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x907e0, data, tail17] - [0x90918, .rodata, ov_SC06_030_jr_8017C8D0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x90938, data, tail17] + - [0x90938, data, tail18] - [0x91F2C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x91F2F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_032.yaml b/config/splat.ov_SC06_032.yaml index 357ad88f3..be30cf3ca 100644 --- a/config/splat.ov_SC06_032.yaml +++ b/config/splat.ov_SC06_032.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC06_032_jr_801734BC] - [0x50be8, c, ov_SC06_032_jr_80178D40] - [0x52354, c, ov_SC06_032_jr_8017A4AC] + - [0x52cd4, c, ov_SC06_032_jr_8017AE2C] - [0x540f4, c, ov_SC06_032_jr_8017C24C] - [0x6b180, data, tail] - [0xa5de4, .rodata, ov_SC06_032_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xa6d08, data, tail15] - [0xa6d98, .rodata, ov_SC06_032_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa6e24, data, tail16] + - [0xa6e28, .rodata, ov_SC06_032_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa6e3c, .rodata, ov_SC06_032_jr_8017C24C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa6e5c, data, tail17] - [0xA9014, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC06_033.yaml b/config/splat.ov_SC06_033.yaml index 90511a359..7a03d7a64 100644 --- a/config/splat.ov_SC06_033.yaml +++ b/config/splat.ov_SC06_033.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC06_033_jr_801734BC] - [0x50be8, c, ov_SC06_033_jr_80178D40] - [0x52354, c, ov_SC06_033_jr_8017A4AC] + - [0x52cd4, c, ov_SC06_033_jr_8017AE2C] - [0x540f4, c, ov_SC06_033_jr_8017C24C] - [0x69690, data, tail] - [0xa5e98, .rodata, ov_SC06_033_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xa6dbc, data, tail15] - [0xa6e4c, .rodata, ov_SC06_033_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa6ed8, data, tail16] + - [0xa6edc, .rodata, ov_SC06_033_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa6ef0, .rodata, ov_SC06_033_jr_8017C24C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa6f10, data, tail17] - [0xA8E94, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC07_000.yaml b/config/splat.ov_SC07_000.yaml index aef4d0166..8c24a6138 100644 --- a/config/splat.ov_SC07_000.yaml +++ b/config/splat.ov_SC07_000.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC07_000_jr_801734BC] - [0x50be8, c, ov_SC07_000_jr_80178D40] - [0x52354, c, ov_SC07_000_jr_8017A4AC] + - [0x52cd4, c, ov_SC07_000_jr_8017AE2C] - [0x53d64, c, ov_SC07_000_jr_8017BEBC] - [0x5a4d8, data, tail] - [0xa54f4, .rodata, ov_SC07_000_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0xa6418, data, tail15] - [0xa64a8, .rodata, ov_SC07_000_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa6534, data, tail16] + - [0xa6538, .rodata, ov_SC07_000_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa654c, .rodata, ov_SC07_000_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa656c, data, tail17] - [0xA8B8C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC07_001.yaml b/config/splat.ov_SC07_001.yaml index ad9b561e8..fe249e7d3 100644 --- a/config/splat.ov_SC07_001.yaml +++ b/config/splat.ov_SC07_001.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC07_001_jr_801734BC] - [0x50be8, c, ov_SC07_001_jr_80178D40] - [0x52354, c, ov_SC07_001_jr_8017A4AC] + - [0x52cd4, c, ov_SC07_001_jr_8017AE2C] - [0x53d64, c, ov_SC07_001_jr_8017BEBC] - [0x59388, data, tail] - [0x80690, .rodata, ov_SC07_001_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x815b4, data, tail15] - [0x81644, .rodata, ov_SC07_001_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x816d0, data, tail16] + - [0x816d4, .rodata, ov_SC07_001_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x816e8, .rodata, ov_SC07_001_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x81708, data, tail17] - [0x82DB4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC07_002.yaml b/config/splat.ov_SC07_002.yaml index 45a829b93..8f4018c96 100644 --- a/config/splat.ov_SC07_002.yaml +++ b/config/splat.ov_SC07_002.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC07_002_jr_801734BC] - [0x50be8, c, ov_SC07_002_jr_80178D40] - [0x52354, c, ov_SC07_002_jr_8017A4AC] + - [0x52cd4, c, ov_SC07_002_jr_8017AE2C] - [0x54778, c, ov_SC07_002_jr_8017C8D0] - [0x5e644, data, tail] - [0x71078, .rodata, ov_SC07_002_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,8 +146,10 @@ segments: - [0x71f9c, data, tail15] - [0x7202c, .rodata, ov_SC07_002_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x720b8, data, tail16] + - [0x720bc, .rodata, ov_SC07_002_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x720d0, data, tail17] - [0x72208, .rodata, ov_SC07_002_jr_8017C8D0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x72228, data, tail17] + - [0x72228, data, tail18] - [0x77F7C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x77F7F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC07_006.yaml b/config/splat.ov_SC07_006.yaml index 72ce6fa92..c89d20ac9 100644 --- a/config/splat.ov_SC07_006.yaml +++ b/config/splat.ov_SC07_006.yaml @@ -100,6 +100,7 @@ segments: - [0x2cacc, c, ov_SC07_006_jr_80154C24] - [0x30774, c, ov_SC07_006_jr_801588CC] - [0x341d4, c, ov_SC07_006_jr_8015C32C] + - [0x52cd4, c, ov_SC07_006_jr_8017AE2C] - [0x53d64, c, ov_SC07_006_jr_8017BEBC] - [0x62268, data, tail] - [0xcbbc8, .rodata, ov_SC07_006_jr_80131340] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -113,6 +114,7 @@ segments: - [0xcc520, data, tail5] - [0xcc618, .rodata, ov_SC07_006_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xcc634, data, tail6] + - [0xccb40, .rodata, ov_SC07_006_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xccb54, .rodata, ov_SC07_006_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xccb74, data, tail7] - [0xCE214, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC07_007.yaml b/config/splat.ov_SC07_007.yaml index 684d1c4f8..de7c4763d 100644 --- a/config/splat.ov_SC07_007.yaml +++ b/config/splat.ov_SC07_007.yaml @@ -100,6 +100,7 @@ segments: - [0x2cacc, c, ov_SC07_007_jr_80154C24] - [0x30774, c, ov_SC07_007_jr_801588CC] - [0x341d4, c, ov_SC07_007_jr_8015C32C] + - [0x52cd4, c, ov_SC07_007_jr_8017AE2C] - [0x53d64, c, ov_SC07_007_jr_8017BEBC] - [0x5ad8c, data, tail] - [0x9d3a4, .rodata, ov_SC07_007_jr_80131340] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -113,6 +114,7 @@ segments: - [0x9dcfc, data, tail5] - [0x9ddf4, .rodata, ov_SC07_007_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9de10, data, tail6] + - [0x9e31c, .rodata, ov_SC07_007_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9e330, .rodata, ov_SC07_007_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9e350, data, tail7] - [0x9F9DC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC07_008.yaml b/config/splat.ov_SC07_008.yaml index 7d94353ab..2bb2c65f1 100644 --- a/config/splat.ov_SC07_008.yaml +++ b/config/splat.ov_SC07_008.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC07_008_jr_801734BC] - [0x50be8, c, ov_SC07_008_jr_80178D40] - [0x52354, c, ov_SC07_008_jr_8017A4AC] + - [0x52cd4, c, ov_SC07_008_jr_8017AE2C] - [0x53d64, c, ov_SC07_008_jr_8017BEBC] - [0x5515c, data, tail] - [0x6c0c8, .rodata, ov_SC07_008_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -145,6 +146,7 @@ segments: - [0x6cfec, data, tail15] - [0x6d07c, .rodata, ov_SC07_008_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6d108, data, tail16] + - [0x6d10c, .rodata, ov_SC07_008_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6d120, .rodata, ov_SC07_008_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6d140, data, tail17] - [0x6E5EC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/config/splat.ov_SC07_009.yaml b/config/splat.ov_SC07_009.yaml index 8b28d2994..8d1860993 100644 --- a/config/splat.ov_SC07_009.yaml +++ b/config/splat.ov_SC07_009.yaml @@ -112,6 +112,7 @@ segments: - [0x4b364, c, ov_SC07_009_jr_801734BC] - [0x50be8, c, ov_SC07_009_jr_80178D40] - [0x52354, c, ov_SC07_009_jr_8017A4AC] + - [0x52cd4, c, ov_SC07_009_jr_8017AE2C] - [0x55c00, data, tail] - [0x79754, .rodata, ov_SC07_009_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x79834, data, tail2] @@ -144,6 +145,8 @@ segments: - [0x7a678, data, tail15] - [0x7a708, .rodata, ov_SC07_009_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7a794, data, tail16] + - [0x7a798, .rodata, ov_SC07_009_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7a7ac, data, tail17] - [0x7BC7C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x7BC7F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC07_010.yaml b/config/splat.ov_SC07_010.yaml index d48eb874d..1d564109f 100644 --- a/config/splat.ov_SC07_010.yaml +++ b/config/splat.ov_SC07_010.yaml @@ -101,6 +101,7 @@ segments: - [0x2cacc, c, ov_SC07_010_jr_80154C24] - [0x30774, c, ov_SC07_010_jr_801588CC] - [0x341d4, c, ov_SC07_010_jr_8015C32C] + - [0x52cd4, c, ov_SC07_010_jr_8017AE2C] - [0x59e1c, data, tail] - [0x7d884, .rodata, ov_SC07_010] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7d898, data, tail2] @@ -113,6 +114,8 @@ segments: - [0x7e1dc, data, tail5] - [0x7e2d4, .rodata, ov_SC07_010_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7e2f0, data, tail6] + - [0x7e7fc, .rodata, ov_SC07_010_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7e810, data, tail7] - [0x813EC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x813EF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC07_011.yaml b/config/splat.ov_SC07_011.yaml index 3ec572e21..d903df2ab 100644 --- a/config/splat.ov_SC07_011.yaml +++ b/config/splat.ov_SC07_011.yaml @@ -100,6 +100,7 @@ segments: - [0x2cacc, c, ov_SC07_011_jr_80154C24] - [0x30774, c, ov_SC07_011_jr_801588CC] - [0x341d4, c, ov_SC07_011_jr_8015C32C] + - [0x52cd4, c, ov_SC07_011_jr_8017AE2C] - [0x53d64, c, ov_SC07_011_jr_8017BEBC] - [0x564dc, data, tail] - [0x65f4c, .rodata, ov_SC07_011_jr_80131340] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -113,6 +114,7 @@ segments: - [0x668a4, data, tail5] - [0x6699c, .rodata, ov_SC07_011_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x669b8, data, tail6] + - [0x66ec4, .rodata, ov_SC07_011_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x66ed8, .rodata, ov_SC07_011_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x66ef8, data, tail7] - [0x683A4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) diff --git a/phase-ends/CURRENT_PHASE.md b/phase-ends/CURRENT_PHASE.md index 1a8580c71..069102ec1 100644 --- a/phase-ends/CURRENT_PHASE.md +++ b/phase-ends/CURRENT_PHASE.md @@ -594,3 +594,15 @@ conditional) · main-EXE/B9 + GLM/B6 + resident's 14 walls (P30) · behemoths B7 extract-all 139/0.** **Fleet 76.3→77.8% instr · 87.47→88.1% fn-count.** New idiom (cookbook-worthy): a jtbl core that isolate-fails early can succeed after sibling jtbl cores bank (the overlay's jr-structure evolves) — func_80140608 went isolate-fail → 138/138. **⚠️ WEEKLY usage limit hit (resets 5am MT 2026-07-20) — session winding down here.** + +- **✅ 2026-07-20 — TASK 8 (2 tooling fixes) DONE + immediate payoff: func_8017AE2C ×137 recovered.** + **(1) `family_sweep --hseq --source` no longer a no-op** (commit): it templated from the manifest exemplar + (pick_exemplar hard-prefers ov077), silently ignoring --source; now overrides to the --source overlay's MATCHED + member per family (self-correcting via the gate; ov077-default path unchanged). **(2) `jtbl_family_bank` + auto-isolates on the span-fit wall too** (commit): was NON-CONTIGUOUS-only; now also fires on "do not fit the + span" (jr_isolate unblocks it — byte-proven). The distinct table-count-drift error ("more rodata .align than pad + specs") stays excluded (not isolate-fixable). **PAYOFF: `func_8017AE2C` (174 ins) recovered ×137** (was + exemplar-only from wave-3's jtbl wall) — the fixed tool banked all 137 members whole-binary; **R22 clean-fleet + 140/140 byte-identical, extract-all 139/0.** **`func_8014032C` STAYS blocked** (its wall IS the excluded + table-count-drift, confirmed rc=1/0-banked — a separate future fix). ~+24k ins. NEXT: Tasks 9 (crack remaining + cached fuel), 10 (permuter backlog), 11 (burn-down tracker). diff --git a/src/ov_SC01_000/ov_SC01_000_jr_8017A4AC.c b/src/ov_SC01_000/ov_SC01_000_jr_8017A4AC.c index 8f4fffc1c..78da3ad03 100644 --- a/src/ov_SC01_000/ov_SC01_000_jr_8017A4AC.c +++ b/src/ov_SC01_000/ov_SC01_000_jr_8017A4AC.c @@ -2969,574 +2969,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC01_000/nonmatchings/ov_SC01_000_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801A56EC; - extern s16 D_801A56EE; - extern s16 D_801A56F0; - extern s16 D_801A56E4; - extern s16 D_801A56E6; - extern s16 D_801A56E8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A56EC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A56EE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A56F0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A56E4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A56E6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A56E8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801A5674; -extern u16 D_801A56F4; -extern u16 D_801A56F6; -extern u16 D_801A56F8; -extern s16 D_801A5870; - -void func_8017B1D8(void) { - func_8012A418(); - D_801A5870 = 0; - D_801A5674 = 0; - D_801A56F4 = D_80126B5E; - D_801A56F6 = D_80126B62; - D_801A56F8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80182548[]; - extern s16 D_801A56EC; - extern s16 D_801A56E4; - 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_80182548[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182548[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A56EC; - s16 *p78C = &D_801A56E4; - *(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_801A5870 = 1; - D_801A5674 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A5694; - extern SV4_8017B368 D_801A569C; - extern s16 D_801A56EC; - extern s16 D_801A56E4; - extern u16 D_80182548; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801A5694; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801A569C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80182548)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80182548)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801A56EC) = loc0; - (*(SV4_8017B368 *)&D_801A56E4) = loc1; - D_801A5870 = 1; - D_801A5674 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC01_000/nonmatchings/ov_SC01_000_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80182548[]; - extern s16 D_801A56EC; - extern s16 D_801A56EE; - extern s16 D_801A56F0; - extern s16 D_801A56E4; - extern s16 D_801A56E6; - extern s16 D_801A56E8; - 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_80182548[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182548[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A56EC; - s16 *p78C = &D_801A56E4; - *(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_801A56EE; - v798 = D_801A56F0; - v78C = *p78C; - v78E = D_801A56E6; - v790 = D_801A56E8; - __asm__ __volatile__(""); - D_801A5870 = 1; - D_801A5674 = 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_801A5674; -extern s16 D_801A56EC; -extern s16 D_801A56EE; -extern s16 D_801A56F0; -extern s16 D_801A56E4; -extern s16 D_801A56E6; -extern s16 D_801A56E8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801A5674 = 0; - D_801A56EC = (s16) D_80114F30; - D_801A56EE = (s16) D_80114F34; - D_801A56F0 = (s16) D_80114F38; - D_801A56E4 = (s16) D_80114F24; - D_801A56E6 = (s16) D_80114F28; - D_801A56E8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801A5704; -extern s16 D_801A5706; -extern s16 D_801A5708; -extern s16 D_801A570C; -extern s16 D_801A570E; -extern s16 D_801A5710; - -void func_8017B824(void) { - D_801A5704 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801A5706 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801A5708 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801A570C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801A570E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801A5710 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801A5704; -extern s16 D_801A5706; -extern s16 D_801A5708; -extern s16 D_801A570C; -extern s16 D_801A570E; -extern s16 D_801A5710; - -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_801A5704; - D_80114F34 = D_801A5706; - D_80114F38 = D_801A5708; - D_80114F24 = D_801A570C; - D_80114F28 = D_801A570E; - D_80114F2C = D_801A5710; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801A56EC), src[8..15] -> (*(S8_8017B8E8 *)&D_801A56E4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801A56EC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801A56E4) = ((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_801A56F4; -extern u16 D_801A56F6; -extern u16 D_801A56F8; - -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_801A5674; -extern short D_801A56FC; -extern short D_801A56FE; -extern short D_801A5700; -extern s16 D_801A56EC; -extern s16 D_801A56EE; -extern s16 D_801A56F0; -extern s16 D_801A56E4; -extern s16 D_801A56E6; -extern s16 D_801A56E8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A56F4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A56F6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A56F8); - (*(s16 *)&D_801A56FC) = buf[0]; - (*(s16 *)&D_801A56FE) = buf[1]; - (*(s16 *)&D_801A5700) = buf[2]; - D_801A56EC = D_80114F30 + buf[0]; - D_801A5674 = 0; - D_801A56EE = D_80114F34 + buf[1]; - D_801A56F0 = D_80114F38 + buf[2]; - D_801A56E4 = D_80114F24 + buf[0]; - D_801A56E6 = D_80114F28 + buf[1]; - D_801A56E8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801A5694; -extern SV4 D_801A569C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A569C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801A5694 = 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_801A569C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A569C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801A5694) = 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_801A569C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801A56BC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801A56BC; - 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_801A5674; -extern s16 D_801A5870; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801A5674 = D_801A5674 + 1; - if (D_801A5674 >= 0x1F) { - D_801A5870 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801A5674; -extern s16 D_801A5870; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801A5674 = D_801A5674 + 1; - if (0x18 < D_801A5674) { - func_8012A4BC(); - D_801A5870 = 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_801A5674; -extern void (*D_801A56B8)(void); -extern short D_801A56FC; -extern short D_801A56FE; -extern short D_801A5700; -extern s16 D_801A5870; - -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_801A5674 = D_801A5674 + 1; - if (D_801A5674 >= 0x19) { - if (D_801A56B8 != 0) { - (*D_801A56B8)(); - } else { - D_80114F30 = D_80114F30 + D_801A56FC; - D_80114F34 = D_80114F34 + D_801A56FE; - D_80114F38 = D_80114F38 + D_801A5700; - D_80114F24 = D_80114F24 + D_801A56FC; - D_80114F28 = D_80114F28 + D_801A56FE; - D_80114F2C = D_80114F2C + D_801A5700; - func_8012A4BC(); - } - D_801A5870 = 0; - } -} - - - -extern void (*D_801825E8[])(void); - -void func_8017BE60(void *a0) { - D_801825E8[*(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) */ - - diff --git a/src/ov_SC01_000/ov_SC01_000_jr_8017AE2C.c b/src/ov_SC01_000/ov_SC01_000_jr_8017AE2C.c new file mode 100644 index 000000000..41ce37484 --- /dev/null +++ b/src/ov_SC01_000/ov_SC01_000_jr_8017AE2C.c @@ -0,0 +1,3474 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80181140; +extern u8 D_801810B0; +extern u8 D_8018108C; +extern u8 D_80181068; +extern u8 D_8018111C; +extern u8 D_801810F8; +extern u8 D_801810D4; +extern u8 D_80181044; +extern void func_80145934(void); +extern u8 D_801811D0; +extern u8 D_801811AC; +extern u8 D_80181188; +extern u8 D_80181164; +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_801805C8[]; +extern unsigned char D_801805F8[]; +extern unsigned char D_80180648[]; +extern unsigned char D_80180678[]; +extern unsigned char D_801806A8[]; +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(void); +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_801806F8[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_801807C0[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80180848[]; +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_80180850; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801A4570; +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_801A4574; +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_80180880; +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 void 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_80180928[])(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_8018094C[])(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_8018093C; +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_80180960[])(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_8018096C[]; +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_8018097C[])(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_80180994[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180984; +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_801809A8[])(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_801809C4[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801809B4; +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_801809D8[])(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_801809EC[])(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_80180A00; +extern void (*D_80180A28[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80180A08; +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_80180A74[])(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_80180A78[])(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(void *a0); +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_80180EDC[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80180EEC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801A45A8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180F14[])(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_80180EF4; +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_80180F04; +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_80180F54[])(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_80180F5C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180F28; +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_80180F68[])(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_80180F38; +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_801A45B0; +extern s32 D_801A45BC; +extern s32 D_801A45C0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180FA4[])(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_80180F78[]; +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_801A45B8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801811F4[])(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_80181014[]; +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_80181298[])(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_801813EC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80181208; +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_801813F4[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80181218; +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_80181238; +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_801813FC[])(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(void); +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_80181424[])(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_80181430[])(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_801812A4[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801814D4; +extern void func_8015D380(s32 a0); +extern unsigned char D_801805B8[]; +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_801814E8[]; +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_80181524[]; +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_8018156C; +extern u16 D_8018156E; +extern u16 D_80181570; +extern s32 D_80181574; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018157C; +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_80181288; +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_80181600[]; +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_801816B0[])(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_801816E0[]; +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_80181744; +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_801A45C8[]; +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_80181768[])(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_801A4620[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_801817B0[])(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_801817A0; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801A3E54[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_801817B8[])(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_8018180C[])(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_801817D4; +extern s16 D_80181808; +extern s16 D_80181806; +extern s16 D_80181804; +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_80181818[])(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_801A4680; +extern u8 D_801A4681; +extern u8 D_801A4682; +extern u8 D_801A4683; +extern u8 D_801A4684; +extern u8 D_801A4685; +extern u8 D_801A4686; +extern u8 D_801A4687; +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_80181828[])(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_801A46C0; +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_8018186C[])(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_801818E8[]; +extern u8 func_80165658(s32 arg0, s32 arg1); +extern s32 D_80181908[]; +extern u8 D_80181984[]; +extern s32 func_801656D0(s32 arg0, s32 arg1); +extern u8 D_801819A4[]; +extern u8 func_801656E8(s32 arg0, s32 arg1); +extern u8 D_801819C4[]; +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_80181A60[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80181ADC[])(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_801A3E64; +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_80181AE8[])(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_80181AF0[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80181BB8[])(void); +extern void func_80166618(void *a0); +extern void (*D_80181BC8[])(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_80181BD8[])(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_80181BE4[])(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_80181B44[]; +extern u8 D_80181B58[]; +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_80181BFC[])(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_80181C04[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80181C0C[])(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_80181C14[])(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_80181C1C[])(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_80181C24[])(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_80181C2C[])(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_80181CE0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80181CE8[])(void); +extern void func_80169F00(void *a0); +extern char D_80181C98[]; +extern char D_80181C58[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80181D20[])(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_80181D2C[])(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_80181D74[])(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_80181DF0[])(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_801A49E0; +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_80181DE4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80181E28[]; +extern unsigned short D_80181E30[]; +extern unsigned short D_80181E38[]; +extern unsigned char D_801A49E8[]; +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_801A49E0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80181E40[])(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_801A4B1C; +extern M2C_UNK D_801A4B20; +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_801A4AA8; +extern void (*D_80181E70[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801A4B24[]; +extern u8 D_801A4B2C[]; +extern u8 D_801A4ADC[]; +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_80181E78[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80181E94[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80181E9C[])(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_80181F04[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80181EA8; +extern u8 D_80181EB4; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80181F38[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80181F40[])(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_80181F94[])(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_80181FC8[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80181FB8[]; +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_80181FE4; +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); +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_8018205C[])(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_80182064[])(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_8018206C[])(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_80182074[])(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_8018207C[])(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_80182084[])(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_80182090[])(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_8018209C[])(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_801820A8[])(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_801820B8[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801820C8[])(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_801820D0[])(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_801820D8[])(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_801820E0[])(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_801820E8[])(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_801820F0[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801820F8[])(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_80182100[])(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_80182108[])(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_80182110[])(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_80182118[])(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_80182120[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80182128[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80182130[])(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_80182138[])(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_80182140[])(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_80182148[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80182150[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80182158[])(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_80182160[])(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_80182168[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80182170[])(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_80182178[])(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_801821BC[])(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_80182180; +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_801821EC[])(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_80182228[])(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(s32); +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_80182280[])(); +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_80182290[])(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_80182298[])(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_80182400[])(); +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_8018240C[])(); +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_801A40AC; +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 int func_801789AC(void); +extern s16 D_801A5870; +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_801A5260; +extern short D_801A58E4; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801A568C; +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_801A56B4; +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_801A5670; +extern s32 func_8017A3B0(void); +extern short D_801A56AC; +extern short D_801A56A8; +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_801A5840; +extern s16 D_801A5842; +extern s16 D_801A584C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801A5840; + + 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_801A584C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801A5840+0xC == &D_801A584C; 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_801A5840 + 0xC)) < 0x101) { + D_801A5840 = 0; + D_801A5842 = 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_801A584C); + 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_801A5840 + 0xC)) < 0x101) { + D_801A5840 = 0; + D_801A5842 = 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_801A56EC; + extern s16 D_801A56EE; + extern s16 D_801A56F0; + extern s16 D_801A56E4; + extern s16 D_801A56E6; + extern s16 D_801A56E8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A56EC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A56EE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A56F0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A56E4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A56E6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A56E8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801A5674; +extern u16 D_801A56F4; +extern u16 D_801A56F6; +extern u16 D_801A56F8; +extern s16 D_801A5870; + +void func_8017B1D8(void) { + func_8012A418(); + D_801A5870 = 0; + D_801A5674 = 0; + D_801A56F4 = D_80126B5E; + D_801A56F6 = D_80126B62; + D_801A56F8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80182548[]; + extern s16 D_801A56EC; + extern s16 D_801A56E4; + 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_80182548[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182548[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A56EC; + s16 *p78C = &D_801A56E4; + *(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_801A5870 = 1; + D_801A5674 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A5694; + extern SV4_8017B368 D_801A569C; + extern s16 D_801A56EC; + extern s16 D_801A56E4; + extern u16 D_80182548; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801A5694; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801A569C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80182548)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80182548)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801A56EC) = loc0; + (*(SV4_8017B368 *)&D_801A56E4) = loc1; + D_801A5870 = 1; + D_801A5674 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC01_000/nonmatchings/ov_SC01_000_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80182548[]; + extern s16 D_801A56EC; + extern s16 D_801A56EE; + extern s16 D_801A56F0; + extern s16 D_801A56E4; + extern s16 D_801A56E6; + extern s16 D_801A56E8; + 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_80182548[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182548[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A56EC; + s16 *p78C = &D_801A56E4; + *(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_801A56EE; + v798 = D_801A56F0; + v78C = *p78C; + v78E = D_801A56E6; + v790 = D_801A56E8; + __asm__ __volatile__(""); + D_801A5870 = 1; + D_801A5674 = 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_801A5674; +extern s16 D_801A56EC; +extern s16 D_801A56EE; +extern s16 D_801A56F0; +extern s16 D_801A56E4; +extern s16 D_801A56E6; +extern s16 D_801A56E8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801A5674 = 0; + D_801A56EC = (s16) D_80114F30; + D_801A56EE = (s16) D_80114F34; + D_801A56F0 = (s16) D_80114F38; + D_801A56E4 = (s16) D_80114F24; + D_801A56E6 = (s16) D_80114F28; + D_801A56E8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801A5704; +extern s16 D_801A5706; +extern s16 D_801A5708; +extern s16 D_801A570C; +extern s16 D_801A570E; +extern s16 D_801A5710; + +void func_8017B824(void) { + D_801A5704 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801A5706 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801A5708 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801A570C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801A570E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801A5710 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801A5704; +extern s16 D_801A5706; +extern s16 D_801A5708; +extern s16 D_801A570C; +extern s16 D_801A570E; +extern s16 D_801A5710; + +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_801A5704; + D_80114F34 = D_801A5706; + D_80114F38 = D_801A5708; + D_80114F24 = D_801A570C; + D_80114F28 = D_801A570E; + D_80114F2C = D_801A5710; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801A56EC), src[8..15] -> (*(S8_8017B8E8 *)&D_801A56E4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801A56EC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801A56E4) = ((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_801A56F4; +extern u16 D_801A56F6; +extern u16 D_801A56F8; + +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_801A5674; +extern short D_801A56FC; +extern short D_801A56FE; +extern short D_801A5700; +extern s16 D_801A56EC; +extern s16 D_801A56EE; +extern s16 D_801A56F0; +extern s16 D_801A56E4; +extern s16 D_801A56E6; +extern s16 D_801A56E8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A56F4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A56F6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A56F8); + (*(s16 *)&D_801A56FC) = buf[0]; + (*(s16 *)&D_801A56FE) = buf[1]; + (*(s16 *)&D_801A5700) = buf[2]; + D_801A56EC = D_80114F30 + buf[0]; + D_801A5674 = 0; + D_801A56EE = D_80114F34 + buf[1]; + D_801A56F0 = D_80114F38 + buf[2]; + D_801A56E4 = D_80114F24 + buf[0]; + D_801A56E6 = D_80114F28 + buf[1]; + D_801A56E8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801A5694; +extern SV4 D_801A569C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A569C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801A5694 = 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_801A569C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A569C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801A5694) = 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_801A569C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801A56BC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801A56BC; + 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_801A5674; +extern s16 D_801A5870; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801A5674 = D_801A5674 + 1; + if (D_801A5674 >= 0x1F) { + D_801A5870 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801A5674; +extern s16 D_801A5870; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801A5674 = D_801A5674 + 1; + if (0x18 < D_801A5674) { + func_8012A4BC(); + D_801A5870 = 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_801A5674; +extern void (*D_801A56B8)(void); +extern short D_801A56FC; +extern short D_801A56FE; +extern short D_801A5700; +extern s16 D_801A5870; + +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_801A5674 = D_801A5674 + 1; + if (D_801A5674 >= 0x19) { + if (D_801A56B8 != 0) { + (*D_801A56B8)(); + } else { + D_80114F30 = D_80114F30 + D_801A56FC; + D_80114F34 = D_80114F34 + D_801A56FE; + D_80114F38 = D_80114F38 + D_801A5700; + D_80114F24 = D_80114F24 + D_801A56FC; + D_80114F28 = D_80114F28 + D_801A56FE; + D_80114F2C = D_80114F2C + D_801A5700; + func_8012A4BC(); + } + D_801A5870 = 0; + } +} + + + +extern void (*D_801825E8[])(void); + +void func_8017BE60(void *a0) { + D_801825E8[*(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) */ + + + diff --git a/src/ov_SC01_001/ov_SC01_001_jr_8017A4AC.c b/src/ov_SC01_001/ov_SC01_001_jr_8017A4AC.c index 43c553d60..b48c384a9 100644 --- a/src/ov_SC01_001/ov_SC01_001_jr_8017A4AC.c +++ b/src/ov_SC01_001/ov_SC01_001_jr_8017A4AC.c @@ -2967,572 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801ED97C; - extern s16 D_801ED97E; - extern s16 D_801ED980; - extern s16 D_801ED974; - extern s16 D_801ED976; - extern s16 D_801ED978; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801ED97C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801ED97E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801ED980, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801ED974, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801ED976, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801ED978, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801ED904; -extern u16 D_801ED984; -extern u16 D_801ED986; -extern u16 D_801ED988; -extern s16 D_801F3150; - -void func_8017B1D8(void) { - func_8012A418(); - D_801F3150 = 0; - D_801ED904 = 0; - D_801ED984 = D_80126B5E; - D_801ED986 = D_80126B62; - D_801ED988 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80187198[]; - extern s16 D_801ED97C; - extern s16 D_801ED974; - 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_80187198[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80187198[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801ED97C; - s16 *p78C = &D_801ED974; - *(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_801F3150 = 1; - D_801ED904 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801ED924; - extern SV4_8017B368 D_801ED92C; - extern s16 D_801ED97C; - extern s16 D_801ED974; - extern u16 D_80187198; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801ED924; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801ED92C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80187198)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80187198)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801ED97C) = loc0; - (*(SV4_8017B368 *)&D_801ED974) = loc1; - D_801F3150 = 1; - D_801ED904 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80187198[]; - extern s16 D_801ED97C; - extern s16 D_801ED97E; - extern s16 D_801ED980; - extern s16 D_801ED974; - extern s16 D_801ED976; - extern s16 D_801ED978; - 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_80187198[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80187198[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801ED97C; - s16 *p78C = &D_801ED974; - *(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_801ED97E; - v798 = D_801ED980; - v78C = *p78C; - v78E = D_801ED976; - v790 = D_801ED978; - __asm__ __volatile__(""); - D_801F3150 = 1; - D_801ED904 = 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_801ED904; -extern s16 D_801ED97C; -extern s16 D_801ED97E; -extern s16 D_801ED980; -extern s16 D_801ED974; -extern s16 D_801ED976; -extern s16 D_801ED978; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801ED904 = 0; - D_801ED97C = (s16) D_80114F30; - D_801ED97E = (s16) D_80114F34; - D_801ED980 = (s16) D_80114F38; - D_801ED974 = (s16) D_80114F24; - D_801ED976 = (s16) D_80114F28; - D_801ED978 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801ED994; -extern s16 D_801ED996; -extern s16 D_801ED998; -extern s16 D_801ED99C; -extern s16 D_801ED99E; -extern s16 D_801ED9A0; - -void func_8017B824(void) { - D_801ED994 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801ED996 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801ED998 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801ED99C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801ED99E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801ED9A0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801ED994; -extern s16 D_801ED996; -extern s16 D_801ED998; -extern s16 D_801ED99C; -extern s16 D_801ED99E; -extern s16 D_801ED9A0; - -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_801ED994; - D_80114F34 = D_801ED996; - D_80114F38 = D_801ED998; - D_80114F24 = D_801ED99C; - D_80114F28 = D_801ED99E; - D_80114F2C = D_801ED9A0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801ED97C), src[8..15] -> (*(S8_8017B8E8 *)&D_801ED974) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801ED97C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801ED974) = ((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_801ED984; -extern u16 D_801ED986; -extern u16 D_801ED988; - -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_801ED904; -extern short D_801ED98C; -extern short D_801ED98E; -extern short D_801ED990; -extern s16 D_801ED97C; -extern s16 D_801ED97E; -extern s16 D_801ED980; -extern s16 D_801ED974; -extern s16 D_801ED976; -extern s16 D_801ED978; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801ED984); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801ED986); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801ED988); - (*(s16 *)&D_801ED98C) = buf[0]; - (*(s16 *)&D_801ED98E) = buf[1]; - (*(s16 *)&D_801ED990) = buf[2]; - D_801ED97C = D_80114F30 + buf[0]; - D_801ED904 = 0; - D_801ED97E = D_80114F34 + buf[1]; - D_801ED980 = D_80114F38 + buf[2]; - D_801ED974 = D_80114F24 + buf[0]; - D_801ED976 = D_80114F28 + buf[1]; - D_801ED978 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801ED924; -extern SV4 D_801ED92C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801ED92C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801ED924 = 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_801ED92C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801ED92C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801ED924) = 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_801ED92C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801ED94C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801ED94C; - 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_801ED904; -extern s16 D_801F3150; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801ED904 = D_801ED904 + 1; - if (D_801ED904 >= 0x1F) { - D_801F3150 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801ED904; -extern s16 D_801F3150; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801ED904 = D_801ED904 + 1; - if (0x18 < D_801ED904) { - func_8012A4BC(); - D_801F3150 = 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_801ED904; -extern void (*D_801ED948)(void); -extern short D_801ED98C; -extern short D_801ED98E; -extern short D_801ED990; -extern s16 D_801F3150; - -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_801ED904 = D_801ED904 + 1; - if (D_801ED904 >= 0x19) { - if (D_801ED948 != 0) { - (*D_801ED948)(); - } else { - D_80114F30 = D_80114F30 + D_801ED98C; - D_80114F34 = D_80114F34 + D_801ED98E; - D_80114F38 = D_80114F38 + D_801ED990; - D_80114F24 = D_80114F24 + D_801ED98C; - D_80114F28 = D_80114F28 + D_801ED98E; - D_80114F2C = D_80114F2C + D_801ED990; - func_8012A4BC(); - } - D_801F3150 = 0; - } -} - - - -extern void (*D_80187238[])(void); - -void func_8017BE60(void *a0) { - D_80187238[*(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) */ diff --git a/src/ov_SC01_001/ov_SC01_001_jr_8017AE2C.c b/src/ov_SC01_001/ov_SC01_001_jr_8017AE2C.c new file mode 100644 index 000000000..2286006ba --- /dev/null +++ b/src/ov_SC01_001/ov_SC01_001_jr_8017AE2C.c @@ -0,0 +1,3470 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80185D90; +extern u8 D_80185D00; +extern u8 D_80185CDC; +extern u8 D_80185CB8; +extern u8 D_80185D6C; +extern u8 D_80185D48; +extern u8 D_80185D24; +extern u8 D_80185C94; +extern void func_80145934(void); +extern u8 D_80185E20; +extern u8 D_80185DFC; +extern u8 D_80185DD8; +extern u8 D_80185DB4; +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_80185218[]; +extern unsigned char D_80185248[]; +extern unsigned char D_80185298[]; +extern unsigned char D_801852C8[]; +extern unsigned char D_801852F8[]; +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(void); +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_80185348[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80185410[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80185498[]; +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_801854A0; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801EC800; +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_801EC804; +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_801854D0; +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 void 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_80185578[])(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_8018559C[])(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_8018558C; +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_801855B0[])(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_801855BC[]; +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_801855CC[])(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_801855E4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801855D4; +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_801855F8[])(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_80185614[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80185604; +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_80185628[])(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_8018563C[])(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_80185650; +extern void (*D_80185678[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80185658; +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_801856C4[])(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_801856C8[])(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(void *a0); +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_80185B2C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80185B3C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801EC838; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80185B64[])(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_80185B44; +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_80185B54; +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_80185BA4[])(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_80185BAC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80185B78; +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_80185BB8[])(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_80185B88; +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_801EC840; +extern s32 D_801EC84C; +extern s32 D_801EC850; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80185BF4[])(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_80185BC8[]; +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_801EC848; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80185E44[])(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_80185C64[]; +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_80185EE8[])(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_8018603C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80185E58; +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_80186044[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80185E68; +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_80185E88; +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_8018604C[])(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(void); +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_80186074[])(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_80186080[])(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_80185EF4[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80186124; +extern void func_8015D380(s32 a0); +extern unsigned char D_80185208[]; +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_80186138[]; +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_80186174[]; +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_801861BC; +extern u16 D_801861BE; +extern u16 D_801861C0; +extern s32 D_801861C4; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_801861CC; +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_80185ED8; +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_80186250[]; +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_80186300[])(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_80186330[]; +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_80186394; +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_801EC858[]; +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_801863B8[])(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_801EC8B0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80186400[])(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_801863F0; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801EBF2C[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_80186408[])(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_8018645C[])(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_80186424; +extern s16 D_80186458; +extern s16 D_80186456; +extern s16 D_80186454; +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_80186468[])(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_801EC910; +extern u8 D_801EC911; +extern u8 D_801EC912; +extern u8 D_801EC913; +extern u8 D_801EC914; +extern u8 D_801EC915; +extern u8 D_801EC916; +extern u8 D_801EC917; +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_80186478[])(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_801EC950; +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_801864BC[])(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_80186538[]; +extern s32 D_80186558[]; +extern u8 D_801865D4[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801865F4[]; +extern u8 D_80186614[]; +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_801866B0[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018672C[])(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_801EBF3C; +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_80186738[])(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_80186740[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80186808[])(void); +extern void func_80166618(void *a0); +extern void (*D_80186818[])(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_80186828[])(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_80186834[])(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_80186794[]; +extern u8 D_801867A8[]; +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_8018684C[])(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_80186854[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018685C[])(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_80186864[])(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_8018686C[])(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_80186874[])(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_8018687C[])(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_80186930[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80186938[])(void); +extern void func_80169F00(void *a0); +extern char D_801868E8[]; +extern char D_801868A8[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80186970[])(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_8018697C[])(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_801869C4[])(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_80186A40[])(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_801ECC70; +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_80186A34[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80186A78[]; +extern unsigned short D_80186A80[]; +extern unsigned short D_80186A88[]; +extern unsigned char D_801ECC78[]; +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_801ECC70; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80186A90[])(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_801ECDAC; +extern M2C_UNK D_801ECDB0; +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_801ECD38; +extern void (*D_80186AC0[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801ECDB4[]; +extern u8 D_801ECDBC[]; +extern u8 D_801ECD6C[]; +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_80186AC8[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80186AE4[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80186AEC[])(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_80186B54[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80186AF8; +extern u8 D_80186B04; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80186B88[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80186B90[])(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_80186BE4[])(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_80186C18[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80186C08[]; +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_80186C34; +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); +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_80186CAC[])(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_80186CB4[])(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_80186CBC[])(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_80186CC4[])(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_80186CCC[])(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_80186CD4[])(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_80186CE0[])(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_80186CEC[])(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_80186CF8[])(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_80186D08[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80186D18[])(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_80186D20[])(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_80186D28[])(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_80186D30[])(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_80186D38[])(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_80186D40[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80186D48[])(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_80186D50[])(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_80186D58[])(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_80186D60[])(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_80186D68[])(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_80186D70[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80186D78[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80186D80[])(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_80186D88[])(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_80186D90[])(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_80186D98[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80186DA0[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80186DA8[])(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_80186DB0[])(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_80186DB8[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80186DC0[])(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_80186DC8[])(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_80186E0C[])(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_80186DD0; +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_80186E3C[])(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_80186E78[])(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(s32); +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_80186ED0[])(); +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_80186EE0[])(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_80186EE8[])(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_80187050[])(); +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_8018705C[])(); +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_801EC184; +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 int func_801789AC(void); +extern s16 D_801F3150; +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_801ED4F0; +extern short D_801F31C4; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801ED91C; +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_801ED944; +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_801ED900; +extern s32 func_8017A3B0(void); +extern short D_801ED93C; +extern short D_801ED938; +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_801F3120; +extern s16 D_801F3122; +extern s16 D_801F312C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801F3120; + + 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_801F312C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801F3120+0xC == &D_801F312C; 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_801F3120 + 0xC)) < 0x101) { + D_801F3120 = 0; + D_801F3122 = 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_801F312C); + 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_801F3120 + 0xC)) < 0x101) { + D_801F3120 = 0; + D_801F3122 = 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_801ED97C; + extern s16 D_801ED97E; + extern s16 D_801ED980; + extern s16 D_801ED974; + extern s16 D_801ED976; + extern s16 D_801ED978; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801ED97C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801ED97E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801ED980, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801ED974, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801ED976, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801ED978, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801ED904; +extern u16 D_801ED984; +extern u16 D_801ED986; +extern u16 D_801ED988; +extern s16 D_801F3150; + +void func_8017B1D8(void) { + func_8012A418(); + D_801F3150 = 0; + D_801ED904 = 0; + D_801ED984 = D_80126B5E; + D_801ED986 = D_80126B62; + D_801ED988 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80187198[]; + extern s16 D_801ED97C; + extern s16 D_801ED974; + 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_80187198[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80187198[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801ED97C; + s16 *p78C = &D_801ED974; + *(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_801F3150 = 1; + D_801ED904 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801ED924; + extern SV4_8017B368 D_801ED92C; + extern s16 D_801ED97C; + extern s16 D_801ED974; + extern u16 D_80187198; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801ED924; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801ED92C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80187198)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80187198)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801ED97C) = loc0; + (*(SV4_8017B368 *)&D_801ED974) = loc1; + D_801F3150 = 1; + D_801ED904 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80187198[]; + extern s16 D_801ED97C; + extern s16 D_801ED97E; + extern s16 D_801ED980; + extern s16 D_801ED974; + extern s16 D_801ED976; + extern s16 D_801ED978; + 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_80187198[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80187198[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801ED97C; + s16 *p78C = &D_801ED974; + *(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_801ED97E; + v798 = D_801ED980; + v78C = *p78C; + v78E = D_801ED976; + v790 = D_801ED978; + __asm__ __volatile__(""); + D_801F3150 = 1; + D_801ED904 = 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_801ED904; +extern s16 D_801ED97C; +extern s16 D_801ED97E; +extern s16 D_801ED980; +extern s16 D_801ED974; +extern s16 D_801ED976; +extern s16 D_801ED978; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801ED904 = 0; + D_801ED97C = (s16) D_80114F30; + D_801ED97E = (s16) D_80114F34; + D_801ED980 = (s16) D_80114F38; + D_801ED974 = (s16) D_80114F24; + D_801ED976 = (s16) D_80114F28; + D_801ED978 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801ED994; +extern s16 D_801ED996; +extern s16 D_801ED998; +extern s16 D_801ED99C; +extern s16 D_801ED99E; +extern s16 D_801ED9A0; + +void func_8017B824(void) { + D_801ED994 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801ED996 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801ED998 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801ED99C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801ED99E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801ED9A0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801ED994; +extern s16 D_801ED996; +extern s16 D_801ED998; +extern s16 D_801ED99C; +extern s16 D_801ED99E; +extern s16 D_801ED9A0; + +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_801ED994; + D_80114F34 = D_801ED996; + D_80114F38 = D_801ED998; + D_80114F24 = D_801ED99C; + D_80114F28 = D_801ED99E; + D_80114F2C = D_801ED9A0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801ED97C), src[8..15] -> (*(S8_8017B8E8 *)&D_801ED974) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801ED97C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801ED974) = ((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_801ED984; +extern u16 D_801ED986; +extern u16 D_801ED988; + +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_801ED904; +extern short D_801ED98C; +extern short D_801ED98E; +extern short D_801ED990; +extern s16 D_801ED97C; +extern s16 D_801ED97E; +extern s16 D_801ED980; +extern s16 D_801ED974; +extern s16 D_801ED976; +extern s16 D_801ED978; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801ED984); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801ED986); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801ED988); + (*(s16 *)&D_801ED98C) = buf[0]; + (*(s16 *)&D_801ED98E) = buf[1]; + (*(s16 *)&D_801ED990) = buf[2]; + D_801ED97C = D_80114F30 + buf[0]; + D_801ED904 = 0; + D_801ED97E = D_80114F34 + buf[1]; + D_801ED980 = D_80114F38 + buf[2]; + D_801ED974 = D_80114F24 + buf[0]; + D_801ED976 = D_80114F28 + buf[1]; + D_801ED978 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801ED924; +extern SV4 D_801ED92C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801ED92C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801ED924 = 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_801ED92C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801ED92C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801ED924) = 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_801ED92C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801ED94C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801ED94C; + 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_801ED904; +extern s16 D_801F3150; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801ED904 = D_801ED904 + 1; + if (D_801ED904 >= 0x1F) { + D_801F3150 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801ED904; +extern s16 D_801F3150; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801ED904 = D_801ED904 + 1; + if (0x18 < D_801ED904) { + func_8012A4BC(); + D_801F3150 = 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_801ED904; +extern void (*D_801ED948)(void); +extern short D_801ED98C; +extern short D_801ED98E; +extern short D_801ED990; +extern s16 D_801F3150; + +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_801ED904 = D_801ED904 + 1; + if (D_801ED904 >= 0x19) { + if (D_801ED948 != 0) { + (*D_801ED948)(); + } else { + D_80114F30 = D_80114F30 + D_801ED98C; + D_80114F34 = D_80114F34 + D_801ED98E; + D_80114F38 = D_80114F38 + D_801ED990; + D_80114F24 = D_80114F24 + D_801ED98C; + D_80114F28 = D_80114F28 + D_801ED98E; + D_80114F2C = D_80114F2C + D_801ED990; + func_8012A4BC(); + } + D_801F3150 = 0; + } +} + + + +extern void (*D_80187238[])(void); + +void func_8017BE60(void *a0) { + D_80187238[*(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) */ + diff --git a/src/ov_SC01_004/ov_SC01_004_jr_8017A4AC.c b/src/ov_SC01_004/ov_SC01_004_jr_8017A4AC.c index c0c9e4e4b..b61ee4cc2 100644 --- a/src/ov_SC01_004/ov_SC01_004_jr_8017A4AC.c +++ b/src/ov_SC01_004/ov_SC01_004_jr_8017A4AC.c @@ -2967,563 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801900E4; - extern s16 D_801900E6; - extern s16 D_801900E8; - extern s16 D_801900DC; - extern s16 D_801900DE; - extern s16 D_801900E0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801900E4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801900E6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801900E8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801900DC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801900DE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801900E0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8019006C; -extern u16 D_801900EC; -extern u16 D_801900EE; -extern u16 D_801900F0; -extern s16 D_80190358; - -void func_8017B1D8(void) { - func_8012A418(); - D_80190358 = 0; - D_8019006C = 0; - D_801900EC = D_80126B5E; - D_801900EE = D_80126B62; - D_801900F0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80182B5C[]; - extern s16 D_801900E4; - extern s16 D_801900DC; - 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_80182B5C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182B5C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801900E4; - s16 *p78C = &D_801900DC; - *(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_80190358 = 1; - D_8019006C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019008C; - extern SV4_8017B368 D_80190094; - extern s16 D_801900E4; - extern s16 D_801900DC; - extern u16 D_80182B5C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8019008C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_80190094; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80182B5C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80182B5C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801900E4) = loc0; - (*(SV4_8017B368 *)&D_801900DC) = loc1; - D_80190358 = 1; - D_8019006C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80182B5C[]; - extern s16 D_801900E4; - extern s16 D_801900E6; - extern s16 D_801900E8; - extern s16 D_801900DC; - extern s16 D_801900DE; - extern s16 D_801900E0; - 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_80182B5C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182B5C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801900E4; - s16 *p78C = &D_801900DC; - *(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_801900E6; - v798 = D_801900E8; - v78C = *p78C; - v78E = D_801900DE; - v790 = D_801900E0; - __asm__ __volatile__(""); - D_80190358 = 1; - D_8019006C = 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_8019006C; -extern s16 D_801900E4; -extern s16 D_801900E6; -extern s16 D_801900E8; -extern s16 D_801900DC; -extern s16 D_801900DE; -extern s16 D_801900E0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8019006C = 0; - D_801900E4 = (s16) D_80114F30; - D_801900E6 = (s16) D_80114F34; - D_801900E8 = (s16) D_80114F38; - D_801900DC = (s16) D_80114F24; - D_801900DE = (s16) D_80114F28; - D_801900E0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801900FC; -extern s16 D_801900FE; -extern s16 D_80190100; -extern s16 D_80190104; -extern s16 D_80190106; -extern s16 D_80190108; - -void func_8017B824(void) { - D_801900FC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801900FE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_80190100 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_80190104 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_80190106 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_80190108 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801900FC; -extern s16 D_801900FE; -extern s16 D_80190100; -extern s16 D_80190104; -extern s16 D_80190106; -extern s16 D_80190108; - -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_801900FC; - D_80114F34 = D_801900FE; - D_80114F38 = D_80190100; - D_80114F24 = D_80190104; - D_80114F28 = D_80190106; - D_80114F2C = D_80190108; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801900E4), src[8..15] -> (*(S8_8017B8E8 *)&D_801900DC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801900E4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801900DC) = ((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_801900EC; -extern u16 D_801900EE; -extern u16 D_801900F0; - -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_8019006C; -extern short D_801900F4; -extern short D_801900F6; -extern short D_801900F8; -extern s16 D_801900E4; -extern s16 D_801900E6; -extern s16 D_801900E8; -extern s16 D_801900DC; -extern s16 D_801900DE; -extern s16 D_801900E0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801900EC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801900EE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801900F0); - (*(s16 *)&D_801900F4) = buf[0]; - (*(s16 *)&D_801900F6) = buf[1]; - (*(s16 *)&D_801900F8) = buf[2]; - D_801900E4 = D_80114F30 + buf[0]; - D_8019006C = 0; - D_801900E6 = D_80114F34 + buf[1]; - D_801900E8 = D_80114F38 + buf[2]; - D_801900DC = D_80114F24 + buf[0]; - D_801900DE = D_80114F28 + buf[1]; - D_801900E0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8019008C; -extern SV4 D_80190094; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_80190094) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8019008C = 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_80190094 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80190094)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8019008C) = 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_80190094) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801900B4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801900B4; - 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_8019006C; -extern s16 D_80190358; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8019006C = D_8019006C + 1; - if (D_8019006C >= 0x1F) { - D_80190358 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8019006C; -extern s16 D_80190358; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8019006C = D_8019006C + 1; - if (0x18 < D_8019006C) { - func_8012A4BC(); - D_80190358 = 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_8019006C; -extern void (*D_801900B0)(void); -extern short D_801900F4; -extern short D_801900F6; -extern short D_801900F8; -extern s16 D_80190358; - -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_8019006C = D_8019006C + 1; - if (D_8019006C >= 0x19) { - if (D_801900B0 != 0) { - (*D_801900B0)(); - } else { - D_80114F30 = D_80114F30 + D_801900F4; - D_80114F34 = D_80114F34 + D_801900F6; - D_80114F38 = D_80114F38 + D_801900F8; - D_80114F24 = D_80114F24 + D_801900F4; - D_80114F28 = D_80114F28 + D_801900F6; - D_80114F2C = D_80114F2C + D_801900F8; - func_8012A4BC(); - } - D_80190358 = 0; - } -} - - - -extern void (*D_80182BFC[])(void); - -void func_8017BE60(void *a0) { - D_80182BFC[*(u8 *)((s32)a0 + 0x4)](); -} diff --git a/src/ov_SC01_004/ov_SC01_004_jr_8017AE2C.c b/src/ov_SC01_004/ov_SC01_004_jr_8017AE2C.c new file mode 100644 index 000000000..a2bcce4f4 --- /dev/null +++ b/src/ov_SC01_004/ov_SC01_004_jr_8017AE2C.c @@ -0,0 +1,3461 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80181754; +extern u8 D_801816C4; +extern u8 D_801816A0; +extern u8 D_8018167C; +extern u8 D_80181730; +extern u8 D_8018170C; +extern u8 D_801816E8; +extern u8 D_80181658; +extern void func_80145934(void); +extern u8 D_801817E4; +extern u8 D_801817C0; +extern u8 D_8018179C; +extern u8 D_80181778; +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_80180BDC[]; +extern unsigned char D_80180C0C[]; +extern unsigned char D_80180C5C[]; +extern unsigned char D_80180C8C[]; +extern unsigned char D_80180CBC[]; +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(void); +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_80180D0C[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80180DD4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80180E5C[]; +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_80180E64; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8018EF68; +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_8018EF6C; +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_80180E94; +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 void 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_80180F3C[])(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_80180F60[])(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_80180F50; +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_80180F74[])(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_80180F80[]; +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_80180F90[])(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_80180FA8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180F98; +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_80180FBC[])(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_80180FD8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80180FC8; +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_80180FEC[])(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_80181000[])(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_80181014; +extern void (*D_8018103C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018101C; +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_80181088[])(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_8018108C[])(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(void *a0); +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_801814F0[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80181500[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8018EFA0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80181528[])(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_80181508; +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_80181518; +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_80181568[])(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_80181570[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018153C; +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_8018157C[])(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_8018154C; +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_8018EFA8; +extern s32 D_8018EFB4; +extern s32 D_8018EFB8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801815B8[])(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_8018158C[]; +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_8018EFB0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80181808[])(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_80181628[]; +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_801818AC[])(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_80181A00[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018181C; +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_80181A08[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018182C; +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_8018184C; +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_80181A10[])(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(void); +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_80181A38[])(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_80181A44[])(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_801818B8[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80181AE8; +extern void func_8015D380(s32 a0); +extern unsigned char D_80180BCC[]; +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_80181AFC[]; +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_80181B38[]; +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_80181B80; +extern u16 D_80181B82; +extern u16 D_80181B84; +extern s32 D_80181B88; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80181B90; +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_8018189C; +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_80181C14[]; +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_80181CC4[])(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_80181CF4[]; +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_80181D58; +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_8018EFC0[]; +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_80181D7C[])(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_8018F018[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80181DC4[])(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_80181DB4; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8018E30C[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_80181DCC[])(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_80181E20[])(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_80181DE8; +extern s16 D_80181E1C; +extern s16 D_80181E1A; +extern s16 D_80181E18; +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_80181E2C[])(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_8018F078; +extern u8 D_8018F079; +extern u8 D_8018F07A; +extern u8 D_8018F07B; +extern u8 D_8018F07C; +extern u8 D_8018F07D; +extern u8 D_8018F07E; +extern u8 D_8018F07F; +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_80181E3C[])(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_8018F0B8; +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_80181E80[])(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_80181EFC[]; +extern s32 D_80181F1C[]; +extern u8 D_80181F98[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80181FB8[]; +extern u8 D_80181FD8[]; +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_80182074[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801820F0[])(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_8018E31C; +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_801820FC[])(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_80182104[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801821CC[])(void); +extern void func_80166618(void *a0); +extern void (*D_801821DC[])(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_801821EC[])(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_801821F8[])(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_80182158[]; +extern u8 D_8018216C[]; +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_80182210[])(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_80182218[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80182220[])(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_80182228[])(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_80182230[])(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_80182238[])(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_80182240[])(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_801822F4[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801822FC[])(void); +extern void func_80169F00(void *a0); +extern char D_801822AC[]; +extern char D_8018226C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80182334[])(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_80182340[])(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_80182388[])(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_80182404[])(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_8018F3D8; +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_801823F8[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018243C[]; +extern unsigned short D_80182444[]; +extern unsigned short D_8018244C[]; +extern unsigned char D_8018F3E0[]; +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_8018F3D8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80182454[])(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_8018F514; +extern M2C_UNK D_8018F518; +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_8018F4A0; +extern void (*D_80182484[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018F51C[]; +extern u8 D_8018F524[]; +extern u8 D_8018F4D4[]; +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_8018248C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801824A8[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801824B0[])(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_80182518[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801824BC; +extern u8 D_801824C8; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018254C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80182554[])(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_801825A8[])(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_801825DC[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801825CC[]; +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_801825F8; +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); +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_80182670[])(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_80182678[])(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_80182680[])(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_80182688[])(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_80182690[])(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_80182698[])(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_801826A4[])(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_801826B0[])(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_801826BC[])(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_801826CC[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801826DC[])(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_801826E4[])(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_801826EC[])(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_801826F4[])(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_801826FC[])(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_80182704[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018270C[])(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_80182714[])(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_8018271C[])(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_80182724[])(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_8018272C[])(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_80182734[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018273C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80182744[])(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_8018274C[])(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_80182754[])(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_8018275C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80182764[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018276C[])(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_80182774[])(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_8018277C[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80182784[])(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_8018278C[])(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_801827D0[])(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_80182794; +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_80182800[])(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_8018283C[])(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(s32); +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_80182894[])(); +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_801828A4[])(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_801828AC[])(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_80182A14[])(); +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_80182A20[])(); +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_8018E564; +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 int func_801789AC(void); +extern s16 D_80190358; +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_8018FC58; +extern short D_801903CC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_80190084; +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_801900AC; +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_80190068; +extern s32 func_8017A3B0(void); +extern short D_801900A4; +extern short D_801900A0; +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_80190328; +extern s16 D_8019032A; +extern s16 D_80190334; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_80190328; + + 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_80190334); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_80190328+0xC == &D_80190334; 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_80190328 + 0xC)) < 0x101) { + D_80190328 = 0; + D_8019032A = 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_80190334); + 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_80190328 + 0xC)) < 0x101) { + D_80190328 = 0; + D_8019032A = 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_801900E4; + extern s16 D_801900E6; + extern s16 D_801900E8; + extern s16 D_801900DC; + extern s16 D_801900DE; + extern s16 D_801900E0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801900E4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801900E6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801900E8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801900DC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801900DE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801900E0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8019006C; +extern u16 D_801900EC; +extern u16 D_801900EE; +extern u16 D_801900F0; +extern s16 D_80190358; + +void func_8017B1D8(void) { + func_8012A418(); + D_80190358 = 0; + D_8019006C = 0; + D_801900EC = D_80126B5E; + D_801900EE = D_80126B62; + D_801900F0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80182B5C[]; + extern s16 D_801900E4; + extern s16 D_801900DC; + 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_80182B5C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182B5C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801900E4; + s16 *p78C = &D_801900DC; + *(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_80190358 = 1; + D_8019006C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019008C; + extern SV4_8017B368 D_80190094; + extern s16 D_801900E4; + extern s16 D_801900DC; + extern u16 D_80182B5C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8019008C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_80190094; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80182B5C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80182B5C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801900E4) = loc0; + (*(SV4_8017B368 *)&D_801900DC) = loc1; + D_80190358 = 1; + D_8019006C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80182B5C[]; + extern s16 D_801900E4; + extern s16 D_801900E6; + extern s16 D_801900E8; + extern s16 D_801900DC; + extern s16 D_801900DE; + extern s16 D_801900E0; + 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_80182B5C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182B5C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801900E4; + s16 *p78C = &D_801900DC; + *(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_801900E6; + v798 = D_801900E8; + v78C = *p78C; + v78E = D_801900DE; + v790 = D_801900E0; + __asm__ __volatile__(""); + D_80190358 = 1; + D_8019006C = 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_8019006C; +extern s16 D_801900E4; +extern s16 D_801900E6; +extern s16 D_801900E8; +extern s16 D_801900DC; +extern s16 D_801900DE; +extern s16 D_801900E0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8019006C = 0; + D_801900E4 = (s16) D_80114F30; + D_801900E6 = (s16) D_80114F34; + D_801900E8 = (s16) D_80114F38; + D_801900DC = (s16) D_80114F24; + D_801900DE = (s16) D_80114F28; + D_801900E0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801900FC; +extern s16 D_801900FE; +extern s16 D_80190100; +extern s16 D_80190104; +extern s16 D_80190106; +extern s16 D_80190108; + +void func_8017B824(void) { + D_801900FC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801900FE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_80190100 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_80190104 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_80190106 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_80190108 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801900FC; +extern s16 D_801900FE; +extern s16 D_80190100; +extern s16 D_80190104; +extern s16 D_80190106; +extern s16 D_80190108; + +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_801900FC; + D_80114F34 = D_801900FE; + D_80114F38 = D_80190100; + D_80114F24 = D_80190104; + D_80114F28 = D_80190106; + D_80114F2C = D_80190108; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801900E4), src[8..15] -> (*(S8_8017B8E8 *)&D_801900DC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801900E4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801900DC) = ((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_801900EC; +extern u16 D_801900EE; +extern u16 D_801900F0; + +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_8019006C; +extern short D_801900F4; +extern short D_801900F6; +extern short D_801900F8; +extern s16 D_801900E4; +extern s16 D_801900E6; +extern s16 D_801900E8; +extern s16 D_801900DC; +extern s16 D_801900DE; +extern s16 D_801900E0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801900EC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801900EE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801900F0); + (*(s16 *)&D_801900F4) = buf[0]; + (*(s16 *)&D_801900F6) = buf[1]; + (*(s16 *)&D_801900F8) = buf[2]; + D_801900E4 = D_80114F30 + buf[0]; + D_8019006C = 0; + D_801900E6 = D_80114F34 + buf[1]; + D_801900E8 = D_80114F38 + buf[2]; + D_801900DC = D_80114F24 + buf[0]; + D_801900DE = D_80114F28 + buf[1]; + D_801900E0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8019008C; +extern SV4 D_80190094; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_80190094) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8019008C = 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_80190094 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80190094)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8019008C) = 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_80190094) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801900B4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801900B4; + 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_8019006C; +extern s16 D_80190358; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8019006C = D_8019006C + 1; + if (D_8019006C >= 0x1F) { + D_80190358 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8019006C; +extern s16 D_80190358; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8019006C = D_8019006C + 1; + if (0x18 < D_8019006C) { + func_8012A4BC(); + D_80190358 = 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_8019006C; +extern void (*D_801900B0)(void); +extern short D_801900F4; +extern short D_801900F6; +extern short D_801900F8; +extern s16 D_80190358; + +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_8019006C = D_8019006C + 1; + if (D_8019006C >= 0x19) { + if (D_801900B0 != 0) { + (*D_801900B0)(); + } else { + D_80114F30 = D_80114F30 + D_801900F4; + D_80114F34 = D_80114F34 + D_801900F6; + D_80114F38 = D_80114F38 + D_801900F8; + D_80114F24 = D_80114F24 + D_801900F4; + D_80114F28 = D_80114F28 + D_801900F6; + D_80114F2C = D_80114F2C + D_801900F8; + func_8012A4BC(); + } + D_80190358 = 0; + } +} + + + +extern void (*D_80182BFC[])(void); + +void func_8017BE60(void *a0) { + D_80182BFC[*(u8 *)((s32)a0 + 0x4)](); +} + diff --git a/src/ov_SC01_005/ov_SC01_005_jr_8017A4AC.c b/src/ov_SC01_005/ov_SC01_005_jr_8017A4AC.c index 2c6db93df..889fda0c1 100644 --- a/src/ov_SC01_005/ov_SC01_005_jr_8017A4AC.c +++ b/src/ov_SC01_005/ov_SC01_005_jr_8017A4AC.c @@ -2968,625 +2968,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801CD844; - extern s16 D_801CD846; - extern s16 D_801CD848; - extern s16 D_801CD83C; - extern s16 D_801CD83E; - extern s16 D_801CD840; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801CD844, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801CD846, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801CD848, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801CD83C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801CD83E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801CD840, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801CD7CC; -extern u16 D_801CD84C; -extern u16 D_801CD84E; -extern u16 D_801CD850; -extern s16 D_801CDFB8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801CDFB8 = 0; - D_801CD7CC = 0; - D_801CD84C = D_80126B5E; - D_801CD84E = D_80126B62; - D_801CD850 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80185CF0[]; - extern s16 D_801CD844; - extern s16 D_801CD83C; - 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_80185CF0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80185CF0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801CD844; - s16 *p78C = &D_801CD83C; - *(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_801CDFB8 = 1; - D_801CD7CC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801CD7EC; - extern SV4_8017B368 D_801CD7F4; - extern s16 D_801CD844; - extern s16 D_801CD83C; - extern u16 D_80185CF0; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801CD7EC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801CD7F4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80185CF0)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80185CF0)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801CD844) = loc0; - (*(SV4_8017B368 *)&D_801CD83C) = loc1; - D_801CDFB8 = 1; - D_801CD7CC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80185CF0[]; - extern s16 D_801CD844; - extern s16 D_801CD846; - extern s16 D_801CD848; - extern s16 D_801CD83C; - extern s16 D_801CD83E; - extern s16 D_801CD840; - 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_80185CF0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80185CF0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801CD844; - s16 *p78C = &D_801CD83C; - *(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_801CD846; - v798 = D_801CD848; - v78C = *p78C; - v78E = D_801CD83E; - v790 = D_801CD840; - __asm__ __volatile__(""); - D_801CDFB8 = 1; - D_801CD7CC = 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_801CD7CC; -extern s16 D_801CD844; -extern s16 D_801CD846; -extern s16 D_801CD848; -extern s16 D_801CD83C; -extern s16 D_801CD83E; -extern s16 D_801CD840; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801CD7CC = 0; - D_801CD844 = (s16) D_80114F30; - D_801CD846 = (s16) D_80114F34; - D_801CD848 = (s16) D_80114F38; - D_801CD83C = (s16) D_80114F24; - D_801CD83E = (s16) D_80114F28; - D_801CD840 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801CD85C; -extern s16 D_801CD85E; -extern s16 D_801CD860; -extern s16 D_801CD864; -extern s16 D_801CD866; -extern s16 D_801CD868; - -void func_8017B824(void) { - D_801CD85C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801CD85E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801CD860 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801CD864 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801CD866 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801CD868 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801CD85C; -extern s16 D_801CD85E; -extern s16 D_801CD860; -extern s16 D_801CD864; -extern s16 D_801CD866; -extern s16 D_801CD868; - -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_801CD85C; - D_80114F34 = D_801CD85E; - D_80114F38 = D_801CD860; - D_80114F24 = D_801CD864; - D_80114F28 = D_801CD866; - D_80114F2C = D_801CD868; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801CD844), src[8..15] -> (*(S8_8017B8E8 *)&D_801CD83C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801CD844) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801CD83C) = ((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_801CD84C; -extern u16 D_801CD84E; -extern u16 D_801CD850; - -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_801CD7CC; -extern short D_801CD854; -extern short D_801CD856; -extern short D_801CD858; -extern s16 D_801CD844; -extern s16 D_801CD846; -extern s16 D_801CD848; -extern s16 D_801CD83C; -extern s16 D_801CD83E; -extern s16 D_801CD840; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801CD84C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801CD84E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801CD850); - (*(s16 *)&D_801CD854) = buf[0]; - (*(s16 *)&D_801CD856) = buf[1]; - (*(s16 *)&D_801CD858) = buf[2]; - D_801CD844 = D_80114F30 + buf[0]; - D_801CD7CC = 0; - D_801CD846 = D_80114F34 + buf[1]; - D_801CD848 = D_80114F38 + buf[2]; - D_801CD83C = D_80114F24 + buf[0]; - D_801CD83E = D_80114F28 + buf[1]; - D_801CD840 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801CD7EC; -extern SV4 D_801CD7F4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801CD7F4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801CD7EC = 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_801CD7F4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801CD7F4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801CD7EC) = 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_801CD7F4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801CD814[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801CD814; - 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_801CD7CC; -extern s16 D_801CDFB8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801CD7CC = D_801CD7CC + 1; - if (D_801CD7CC >= 0x1F) { - D_801CDFB8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801CD7CC; -extern s16 D_801CDFB8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801CD7CC = D_801CD7CC + 1; - if (0x18 < D_801CD7CC) { - func_8012A4BC(); - D_801CDFB8 = 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_801CD7CC; -extern void (*D_801CD810)(void); -extern short D_801CD854; -extern short D_801CD856; -extern short D_801CD858; -extern s16 D_801CDFB8; - -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_801CD7CC = D_801CD7CC + 1; - if (D_801CD7CC >= 0x19) { - if (D_801CD810 != 0) { - (*D_801CD810)(); - } else { - D_80114F30 = D_80114F30 + D_801CD854; - D_80114F34 = D_80114F34 + D_801CD856; - D_80114F38 = D_80114F38 + D_801CD858; - D_80114F24 = D_80114F24 + D_801CD854; - D_80114F28 = D_80114F28 + D_801CD856; - D_80114F2C = D_80114F2C + D_801CD858; - func_8012A4BC(); - } - D_801CDFB8 = 0; - } -} - - - -extern void (*D_80185D90[])(void); - -void func_8017BE60(void *a0) { - D_80185D90[*(u8 *)((s32)a0 + 0x4)](); -} - - -extern void func_80174684(void *a0); -extern s32 func_8017BEC4(void); - -void func_8017BE9C(void) { - func_80174684(&func_8017BEC4); -} - - -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017A4AC", func_8017BEC4); - -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017A4AC", func_8017BF00); - -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017A4AC", func_8017BF70); - -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017A4AC", func_8017BFEC); - -DEFINE_func_8017C048() /* dedup: shared engine-core @0x8017C048 (src/shared) */ - -extern void func_80174684(void *); - extern s32 func_8017C078; - void func_8017C050(void) { - func_80174684(&func_8017C078); - } - - -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017A4AC", func_8017C078); - -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017A4AC", func_8017C0B4); - -DEFINE_func_8017C120() /* dedup: shared engine-core @0x8017C120 (src/shared) */ - -extern void func_80174684(void *); - extern s32 func_8017C150; - void func_8017C128(void) { - func_80174684(&func_8017C150); - } - - -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017A4AC", func_8017C150); - -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017A4AC", func_8017C18C); - -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017A4AC", func_8017C1E8); - -DEFINE_func_8017C238() /* dedup: shared engine-core @0x8017C238 (src/shared) */ - -extern void func_80174684(void *); - extern s32 func_8017C268(s32); - void func_8017C240(void) { - func_80174684((void *)func_8017C268); - } - - -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017A4AC", func_8017C268); - -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017A4AC", func_8017C2A4); - -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017A4AC", func_8017C2F4); - -DEFINE_func_8017C338() /* dedup: shared engine-core @0x8017C338 (src/shared) */ diff --git a/src/ov_SC01_005/ov_SC01_005_jr_8017AE2C.c b/src/ov_SC01_005/ov_SC01_005_jr_8017AE2C.c new file mode 100644 index 000000000..764cdc604 --- /dev/null +++ b/src/ov_SC01_005/ov_SC01_005_jr_8017AE2C.c @@ -0,0 +1,3524 @@ +#include "common.h" +#include "../shared/engine_core.h" +#include "../shared/ov_setters.h" /* dedup share across the SC01/005 ≡ 006 pair (cookbook §11) */ + + +/* ==== 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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801848E8; +extern u8 D_80184858; +extern u8 D_80184834; +extern u8 D_80184810; +extern u8 D_801848C4; +extern u8 D_801848A0; +extern u8 D_8018487C; +extern u8 D_801847EC; +extern void func_80145934(void); +extern u8 D_80184978; +extern u8 D_80184954; +extern u8 D_80184930; +extern u8 D_8018490C; +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_80183D70[]; +extern unsigned char D_80183DA0[]; +extern unsigned char D_80183DF0[]; +extern unsigned char D_80183E20[]; +extern unsigned char D_80183E50[]; +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(void); +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_80183EA0[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80183F68[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80183FF0[]; +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_80183FF8; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801CC6C8; +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_801CC6CC; +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_80184028; +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 void 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_801840D0[])(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_801840F4[])(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_801840E4; +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_80184108[])(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_80184114[]; +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_80184124[])(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_8018413C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018412C; +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_80184150[])(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_8018416C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018415C; +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_80184180[])(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_80184194[])(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_801841A8; +extern void (*D_801841D0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801841B0; +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_8018421C[])(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_80184220[])(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(void *a0); +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_80184684[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80184694[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801CC700; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801846BC[])(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_8018469C; +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_801846AC; +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_801846FC[])(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_80184704[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801846D0; +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_80184710[])(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_801846E0; +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_801CC708; +extern s32 D_801CC714; +extern s32 D_801CC718; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018474C[])(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_80184720[]; +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_801CC710; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018499C[])(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_801847BC[]; +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_80184A40[])(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_80184B94[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801849B0; +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_80184B9C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801849C0; +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_801849E0; +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_80184BA4[])(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(void); +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_80184BCC[])(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_80184BD8[])(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_80184A4C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80184C7C; +extern void func_8015D380(s32 a0); +extern unsigned char D_80183D60[]; +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_80184C90[]; +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_80184CCC[]; +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_80184D14; +extern u16 D_80184D16; +extern u16 D_80184D18; +extern s32 D_80184D1C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80184D24; +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_80184A30; +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_80184DA8[]; +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_80184E58[])(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_80184E88[]; +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_80184EEC; +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_801CC720[]; +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_80184F10[])(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_801CC778[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80184F58[])(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_80184F48; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801CBA6C[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_80184F60[])(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_80184FB4[])(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_80184F7C; +extern s16 D_80184FB0; +extern s16 D_80184FAE; +extern s16 D_80184FAC; +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_80184FC0[])(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_801CC7D8; +extern u8 D_801CC7D9; +extern u8 D_801CC7DA; +extern u8 D_801CC7DB; +extern u8 D_801CC7DC; +extern u8 D_801CC7DD; +extern u8 D_801CC7DE; +extern u8 D_801CC7DF; +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_80184FD0[])(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_801CC818; +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_80185014[])(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_80185090[]; +extern s32 D_801850B0[]; +extern u8 D_8018512C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018514C[]; +extern u8 D_8018516C[]; +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_80185208[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80185284[])(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_801CBA7C; +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_80185290[])(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_80185298[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80185360[])(void); +extern void func_80166618(void *a0); +extern void (*D_80185370[])(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_80185380[])(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_8018538C[])(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_801852EC[]; +extern u8 D_80185300[]; +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_801853A4[])(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_801853AC[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_801853B4[])(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_801853BC[])(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_801853C4[])(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_801853CC[])(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_801853D4[])(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_80185488[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80185490[])(void); +extern void func_80169F00(void *a0); +extern char D_80185440[]; +extern char D_80185400[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_801854C8[])(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_801854D4[])(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_8018551C[])(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_80185598[])(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_801CCB38; +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_8018558C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_801855D0[]; +extern unsigned short D_801855D8[]; +extern unsigned short D_801855E0[]; +extern unsigned char D_801CCB40[]; +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_801CCB38; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801855E8[])(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_801CCC74; +extern M2C_UNK D_801CCC78; +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_801CCC00; +extern void (*D_80185618[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801CCC7C[]; +extern u8 D_801CCC84[]; +extern u8 D_801CCC34[]; +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_80185620[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018563C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80185644[])(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_801856AC[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80185650; +extern u8 D_8018565C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801856E0[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801856E8[])(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_8018573C[])(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_80185770[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80185760[]; +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_8018578C; +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); +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_80185804[])(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_8018580C[])(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_80185814[])(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_8018581C[])(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_80185824[])(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_8018582C[])(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_80185838[])(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_80185844[])(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_80185850[])(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_80185860[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80185870[])(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_80185878[])(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_80185880[])(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_80185888[])(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_80185890[])(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_80185898[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801858A0[])(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_801858A8[])(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_801858B0[])(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_801858B8[])(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_801858C0[])(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_801858C8[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801858D0[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801858D8[])(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_801858E0[])(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_801858E8[])(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_801858F0[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801858F8[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80185900[])(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_80185908[])(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_80185910[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80185918[])(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_80185920[])(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_80185964[])(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_80185928; +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_80185994[])(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_801859D0[])(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(s32); +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_80185A28[])(); +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_80185A38[])(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_80185A40[])(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_80185BA8[])(); +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_80185BB4[])(); +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_801CBCC4; +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 int func_801789AC(void); +extern s16 D_801CDFB8; +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_801CD3B8; +extern short D_801CE02C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801CD7E4; +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_801CD80C; +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_801CD7C8; +extern s32 func_8017A3B0(void); +extern short D_801CD804; +extern short D_801CD800; +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_801CDF88; +extern s16 D_801CDF8A; +extern s16 D_801CDF94; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801CDF88; + + 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_801CDF94); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801CDF88+0xC == &D_801CDF94; 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_801CDF88 + 0xC)) < 0x101) { + D_801CDF88 = 0; + D_801CDF8A = 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_801CDF94); + 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_801CDF88 + 0xC)) < 0x101) { + D_801CDF88 = 0; + D_801CDF8A = 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_801CD844; + extern s16 D_801CD846; + extern s16 D_801CD848; + extern s16 D_801CD83C; + extern s16 D_801CD83E; + extern s16 D_801CD840; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801CD844, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801CD846, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801CD848, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801CD83C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801CD83E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801CD840, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801CD7CC; +extern u16 D_801CD84C; +extern u16 D_801CD84E; +extern u16 D_801CD850; +extern s16 D_801CDFB8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801CDFB8 = 0; + D_801CD7CC = 0; + D_801CD84C = D_80126B5E; + D_801CD84E = D_80126B62; + D_801CD850 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80185CF0[]; + extern s16 D_801CD844; + extern s16 D_801CD83C; + 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_80185CF0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80185CF0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801CD844; + s16 *p78C = &D_801CD83C; + *(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_801CDFB8 = 1; + D_801CD7CC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801CD7EC; + extern SV4_8017B368 D_801CD7F4; + extern s16 D_801CD844; + extern s16 D_801CD83C; + extern u16 D_80185CF0; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801CD7EC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801CD7F4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80185CF0)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80185CF0)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801CD844) = loc0; + (*(SV4_8017B368 *)&D_801CD83C) = loc1; + D_801CDFB8 = 1; + D_801CD7CC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80185CF0[]; + extern s16 D_801CD844; + extern s16 D_801CD846; + extern s16 D_801CD848; + extern s16 D_801CD83C; + extern s16 D_801CD83E; + extern s16 D_801CD840; + 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_80185CF0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80185CF0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801CD844; + s16 *p78C = &D_801CD83C; + *(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_801CD846; + v798 = D_801CD848; + v78C = *p78C; + v78E = D_801CD83E; + v790 = D_801CD840; + __asm__ __volatile__(""); + D_801CDFB8 = 1; + D_801CD7CC = 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_801CD7CC; +extern s16 D_801CD844; +extern s16 D_801CD846; +extern s16 D_801CD848; +extern s16 D_801CD83C; +extern s16 D_801CD83E; +extern s16 D_801CD840; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801CD7CC = 0; + D_801CD844 = (s16) D_80114F30; + D_801CD846 = (s16) D_80114F34; + D_801CD848 = (s16) D_80114F38; + D_801CD83C = (s16) D_80114F24; + D_801CD83E = (s16) D_80114F28; + D_801CD840 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801CD85C; +extern s16 D_801CD85E; +extern s16 D_801CD860; +extern s16 D_801CD864; +extern s16 D_801CD866; +extern s16 D_801CD868; + +void func_8017B824(void) { + D_801CD85C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801CD85E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801CD860 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801CD864 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801CD866 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801CD868 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801CD85C; +extern s16 D_801CD85E; +extern s16 D_801CD860; +extern s16 D_801CD864; +extern s16 D_801CD866; +extern s16 D_801CD868; + +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_801CD85C; + D_80114F34 = D_801CD85E; + D_80114F38 = D_801CD860; + D_80114F24 = D_801CD864; + D_80114F28 = D_801CD866; + D_80114F2C = D_801CD868; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801CD844), src[8..15] -> (*(S8_8017B8E8 *)&D_801CD83C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801CD844) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801CD83C) = ((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_801CD84C; +extern u16 D_801CD84E; +extern u16 D_801CD850; + +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_801CD7CC; +extern short D_801CD854; +extern short D_801CD856; +extern short D_801CD858; +extern s16 D_801CD844; +extern s16 D_801CD846; +extern s16 D_801CD848; +extern s16 D_801CD83C; +extern s16 D_801CD83E; +extern s16 D_801CD840; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801CD84C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801CD84E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801CD850); + (*(s16 *)&D_801CD854) = buf[0]; + (*(s16 *)&D_801CD856) = buf[1]; + (*(s16 *)&D_801CD858) = buf[2]; + D_801CD844 = D_80114F30 + buf[0]; + D_801CD7CC = 0; + D_801CD846 = D_80114F34 + buf[1]; + D_801CD848 = D_80114F38 + buf[2]; + D_801CD83C = D_80114F24 + buf[0]; + D_801CD83E = D_80114F28 + buf[1]; + D_801CD840 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801CD7EC; +extern SV4 D_801CD7F4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801CD7F4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801CD7EC = 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_801CD7F4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801CD7F4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801CD7EC) = 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_801CD7F4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801CD814[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801CD814; + 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_801CD7CC; +extern s16 D_801CDFB8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801CD7CC = D_801CD7CC + 1; + if (D_801CD7CC >= 0x1F) { + D_801CDFB8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801CD7CC; +extern s16 D_801CDFB8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801CD7CC = D_801CD7CC + 1; + if (0x18 < D_801CD7CC) { + func_8012A4BC(); + D_801CDFB8 = 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_801CD7CC; +extern void (*D_801CD810)(void); +extern short D_801CD854; +extern short D_801CD856; +extern short D_801CD858; +extern s16 D_801CDFB8; + +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_801CD7CC = D_801CD7CC + 1; + if (D_801CD7CC >= 0x19) { + if (D_801CD810 != 0) { + (*D_801CD810)(); + } else { + D_80114F30 = D_80114F30 + D_801CD854; + D_80114F34 = D_80114F34 + D_801CD856; + D_80114F38 = D_80114F38 + D_801CD858; + D_80114F24 = D_80114F24 + D_801CD854; + D_80114F28 = D_80114F28 + D_801CD856; + D_80114F2C = D_80114F2C + D_801CD858; + func_8012A4BC(); + } + D_801CDFB8 = 0; + } +} + + + +extern void (*D_80185D90[])(void); + +void func_8017BE60(void *a0) { + D_80185D90[*(u8 *)((s32)a0 + 0x4)](); +} + + +extern void func_80174684(void *a0); +extern s32 func_8017BEC4(void); + +void func_8017BE9C(void) { + func_80174684(&func_8017BEC4); +} + + +INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017AE2C", func_8017BEC4); + +INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017AE2C", func_8017BF00); + +INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017AE2C", func_8017BF70); + +INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017AE2C", func_8017BFEC); + +DEFINE_func_8017C048() /* dedup: shared engine-core @0x8017C048 (src/shared) */ + +extern void func_80174684(void *); + extern s32 func_8017C078; + void func_8017C050(void) { + func_80174684(&func_8017C078); + } + + +INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017AE2C", func_8017C078); + +INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017AE2C", func_8017C0B4); + +DEFINE_func_8017C120() /* dedup: shared engine-core @0x8017C120 (src/shared) */ + +extern void func_80174684(void *); + extern s32 func_8017C150; + void func_8017C128(void) { + func_80174684(&func_8017C150); + } + + +INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017AE2C", func_8017C150); + +INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017AE2C", func_8017C18C); + +INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017AE2C", func_8017C1E8); + +DEFINE_func_8017C238() /* dedup: shared engine-core @0x8017C238 (src/shared) */ + +extern void func_80174684(void *); + extern s32 func_8017C268(s32); + void func_8017C240(void) { + func_80174684((void *)func_8017C268); + } + + +INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017AE2C", func_8017C268); + +INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017AE2C", func_8017C2A4); + +INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017AE2C", func_8017C2F4); + +DEFINE_func_8017C338() /* dedup: shared engine-core @0x8017C338 (src/shared) */ + diff --git a/src/ov_SC01_006/ov_SC01_006_jr_8017A4AC.c b/src/ov_SC01_006/ov_SC01_006_jr_8017A4AC.c index c98446fe2..889fda0c1 100644 --- a/src/ov_SC01_006/ov_SC01_006_jr_8017A4AC.c +++ b/src/ov_SC01_006/ov_SC01_006_jr_8017A4AC.c @@ -2968,624 +2968,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801CD844; - extern s16 D_801CD846; - extern s16 D_801CD848; - extern s16 D_801CD83C; - extern s16 D_801CD83E; - extern s16 D_801CD840; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801CD844, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801CD846, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801CD848, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801CD83C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801CD83E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801CD840, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801CD7CC; -extern u16 D_801CD84C; -extern u16 D_801CD84E; -extern u16 D_801CD850; -extern s16 D_801CDFB8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801CDFB8 = 0; - D_801CD7CC = 0; - D_801CD84C = D_80126B5E; - D_801CD84E = D_80126B62; - D_801CD850 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80185CF0[]; - extern s16 D_801CD844; - extern s16 D_801CD83C; - 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_80185CF0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80185CF0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801CD844; - s16 *p78C = &D_801CD83C; - *(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_801CDFB8 = 1; - D_801CD7CC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801CD7EC; - extern SV4_8017B368 D_801CD7F4; - extern s16 D_801CD844; - extern s16 D_801CD83C; - extern u16 D_80185CF0; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801CD7EC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801CD7F4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80185CF0)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80185CF0)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801CD844) = loc0; - (*(SV4_8017B368 *)&D_801CD83C) = loc1; - D_801CDFB8 = 1; - D_801CD7CC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80185CF0[]; - extern s16 D_801CD844; - extern s16 D_801CD846; - extern s16 D_801CD848; - extern s16 D_801CD83C; - extern s16 D_801CD83E; - extern s16 D_801CD840; - 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_80185CF0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80185CF0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801CD844; - s16 *p78C = &D_801CD83C; - *(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_801CD846; - v798 = D_801CD848; - v78C = *p78C; - v78E = D_801CD83E; - v790 = D_801CD840; - __asm__ __volatile__(""); - D_801CDFB8 = 1; - D_801CD7CC = 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_801CD7CC; -extern s16 D_801CD844; -extern s16 D_801CD846; -extern s16 D_801CD848; -extern s16 D_801CD83C; -extern s16 D_801CD83E; -extern s16 D_801CD840; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801CD7CC = 0; - D_801CD844 = (s16) D_80114F30; - D_801CD846 = (s16) D_80114F34; - D_801CD848 = (s16) D_80114F38; - D_801CD83C = (s16) D_80114F24; - D_801CD83E = (s16) D_80114F28; - D_801CD840 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801CD85C; -extern s16 D_801CD85E; -extern s16 D_801CD860; -extern s16 D_801CD864; -extern s16 D_801CD866; -extern s16 D_801CD868; - -void func_8017B824(void) { - D_801CD85C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801CD85E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801CD860 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801CD864 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801CD866 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801CD868 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801CD85C; -extern s16 D_801CD85E; -extern s16 D_801CD860; -extern s16 D_801CD864; -extern s16 D_801CD866; -extern s16 D_801CD868; - -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_801CD85C; - D_80114F34 = D_801CD85E; - D_80114F38 = D_801CD860; - D_80114F24 = D_801CD864; - D_80114F28 = D_801CD866; - D_80114F2C = D_801CD868; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801CD844), src[8..15] -> (*(S8_8017B8E8 *)&D_801CD83C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801CD844) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801CD83C) = ((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_801CD84C; -extern u16 D_801CD84E; -extern u16 D_801CD850; - -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_801CD7CC; -extern short D_801CD854; -extern short D_801CD856; -extern short D_801CD858; -extern s16 D_801CD844; -extern s16 D_801CD846; -extern s16 D_801CD848; -extern s16 D_801CD83C; -extern s16 D_801CD83E; -extern s16 D_801CD840; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801CD84C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801CD84E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801CD850); - (*(s16 *)&D_801CD854) = buf[0]; - (*(s16 *)&D_801CD856) = buf[1]; - (*(s16 *)&D_801CD858) = buf[2]; - D_801CD844 = D_80114F30 + buf[0]; - D_801CD7CC = 0; - D_801CD846 = D_80114F34 + buf[1]; - D_801CD848 = D_80114F38 + buf[2]; - D_801CD83C = D_80114F24 + buf[0]; - D_801CD83E = D_80114F28 + buf[1]; - D_801CD840 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801CD7EC; -extern SV4 D_801CD7F4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801CD7F4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801CD7EC = 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_801CD7F4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801CD7F4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801CD7EC) = 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_801CD7F4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801CD814[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801CD814; - 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_801CD7CC; -extern s16 D_801CDFB8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801CD7CC = D_801CD7CC + 1; - if (D_801CD7CC >= 0x1F) { - D_801CDFB8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801CD7CC; -extern s16 D_801CDFB8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801CD7CC = D_801CD7CC + 1; - if (0x18 < D_801CD7CC) { - func_8012A4BC(); - D_801CDFB8 = 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_801CD7CC; -extern void (*D_801CD810)(void); -extern short D_801CD854; -extern short D_801CD856; -extern short D_801CD858; -extern s16 D_801CDFB8; - -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_801CD7CC = D_801CD7CC + 1; - if (D_801CD7CC >= 0x19) { - if (D_801CD810 != 0) { - (*D_801CD810)(); - } else { - D_80114F30 = D_80114F30 + D_801CD854; - D_80114F34 = D_80114F34 + D_801CD856; - D_80114F38 = D_80114F38 + D_801CD858; - D_80114F24 = D_80114F24 + D_801CD854; - D_80114F28 = D_80114F28 + D_801CD856; - D_80114F2C = D_80114F2C + D_801CD858; - func_8012A4BC(); - } - D_801CDFB8 = 0; - } -} - - - -extern void (*D_80185D90[])(void); - -void func_8017BE60(void *a0) { - D_80185D90[*(u8 *)((s32)a0 + 0x4)](); -} - - -extern void func_80174684(void *); - extern s32 func_8017BEC4(s32); - void func_8017BE9C(void) { - func_80174684((void *)func_8017BEC4); - } - - -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017A4AC", func_8017BEC4); - -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017A4AC", func_8017BF00); - -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017A4AC", func_8017BF70); - -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017A4AC", func_8017BFEC); - -DEFINE_func_8017C048() /* dedup: shared engine-core @0x8017C048 (src/shared) */ - -extern void func_80174684(void *); - extern s32 func_8017C078; - void func_8017C050(void) { - func_80174684(&func_8017C078); - } - - -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017A4AC", func_8017C078); - -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017A4AC", func_8017C0B4); - -DEFINE_func_8017C120() /* dedup: shared engine-core @0x8017C120 (src/shared) */ - -extern void func_80174684(void *); - extern s32 func_8017C150; - void func_8017C128(void) { - func_80174684(&func_8017C150); - } - - -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017A4AC", func_8017C150); - -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017A4AC", func_8017C18C); - -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017A4AC", func_8017C1E8); - -DEFINE_func_8017C238() /* dedup: shared engine-core @0x8017C238 (src/shared) */ - -extern void func_80174684(void *); - extern s32 func_8017C268(s32); - void func_8017C240(void) { - func_80174684((void *)func_8017C268); - } - - -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017A4AC", func_8017C268); - -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017A4AC", func_8017C2A4); - -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017A4AC", func_8017C2F4); - -DEFINE_func_8017C338() /* dedup: shared engine-core @0x8017C338 (src/shared) */ diff --git a/src/ov_SC01_006/ov_SC01_006_jr_8017AE2C.c b/src/ov_SC01_006/ov_SC01_006_jr_8017AE2C.c new file mode 100644 index 000000000..0ce20fefa --- /dev/null +++ b/src/ov_SC01_006/ov_SC01_006_jr_8017AE2C.c @@ -0,0 +1,3523 @@ +#include "common.h" +#include "../shared/engine_core.h" +#include "../shared/ov_setters.h" /* dedup share across the SC01/005 ≡ 006 pair (cookbook §11) */ + + +/* ==== 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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801848E8; +extern u8 D_80184858; +extern u8 D_80184834; +extern u8 D_80184810; +extern u8 D_801848C4; +extern u8 D_801848A0; +extern u8 D_8018487C; +extern u8 D_801847EC; +extern void func_80145934(void); +extern u8 D_80184978; +extern u8 D_80184954; +extern u8 D_80184930; +extern u8 D_8018490C; +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_80183D70[]; +extern unsigned char D_80183DA0[]; +extern unsigned char D_80183DF0[]; +extern unsigned char D_80183E20[]; +extern unsigned char D_80183E50[]; +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(void); +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_80183EA0[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80183F68[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80183FF0[]; +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_80183FF8; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801CC6C8; +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_801CC6CC; +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_80184028; +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 void 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_801840D0[])(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_801840F4[])(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_801840E4; +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_80184108[])(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_80184114[]; +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_80184124[])(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_8018413C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018412C; +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_80184150[])(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_8018416C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018415C; +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_80184180[])(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_80184194[])(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_801841A8; +extern void (*D_801841D0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801841B0; +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_8018421C[])(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_80184220[])(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(void *a0); +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_80184684[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80184694[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801CC700; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801846BC[])(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_8018469C; +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_801846AC; +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_801846FC[])(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_80184704[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801846D0; +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_80184710[])(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_801846E0; +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_801CC708; +extern s32 D_801CC714; +extern s32 D_801CC718; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018474C[])(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_80184720[]; +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_801CC710; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018499C[])(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_801847BC[]; +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_80184A40[])(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_80184B94[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801849B0; +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_80184B9C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801849C0; +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_801849E0; +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_80184BA4[])(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(void); +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_80184BCC[])(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_80184BD8[])(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_80184A4C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80184C7C; +extern void func_8015D380(s32 a0); +extern unsigned char D_80183D60[]; +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_80184C90[]; +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_80184CCC[]; +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_80184D14; +extern u16 D_80184D16; +extern u16 D_80184D18; +extern s32 D_80184D1C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80184D24; +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_80184A30; +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_80184DA8[]; +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_80184E58[])(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_80184E88[]; +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_80184EEC; +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_801CC720[]; +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_80184F10[])(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_801CC778[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80184F58[])(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_80184F48; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801CBA6C[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_80184F60[])(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_80184FB4[])(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_80184F7C; +extern s16 D_80184FB0; +extern s16 D_80184FAE; +extern s16 D_80184FAC; +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_80184FC0[])(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_801CC7D8; +extern u8 D_801CC7D9; +extern u8 D_801CC7DA; +extern u8 D_801CC7DB; +extern u8 D_801CC7DC; +extern u8 D_801CC7DD; +extern u8 D_801CC7DE; +extern u8 D_801CC7DF; +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_80184FD0[])(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_801CC818; +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_80185014[])(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_80185090[]; +extern s32 D_801850B0[]; +extern u8 D_8018512C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018514C[]; +extern u8 D_8018516C[]; +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_80185208[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80185284[])(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_801CBA7C; +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_80185290[])(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_80185298[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80185360[])(void); +extern void func_80166618(void *a0); +extern void (*D_80185370[])(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_80185380[])(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_8018538C[])(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_801852EC[]; +extern u8 D_80185300[]; +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_801853A4[])(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_801853AC[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_801853B4[])(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_801853BC[])(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_801853C4[])(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_801853CC[])(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_801853D4[])(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_80185488[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80185490[])(void); +extern void func_80169F00(void *a0); +extern char D_80185440[]; +extern char D_80185400[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_801854C8[])(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_801854D4[])(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_8018551C[])(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_80185598[])(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_801CCB38; +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_8018558C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_801855D0[]; +extern unsigned short D_801855D8[]; +extern unsigned short D_801855E0[]; +extern unsigned char D_801CCB40[]; +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_801CCB38; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801855E8[])(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_801CCC74; +extern M2C_UNK D_801CCC78; +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_801CCC00; +extern void (*D_80185618[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801CCC7C[]; +extern u8 D_801CCC84[]; +extern u8 D_801CCC34[]; +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_80185620[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018563C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80185644[])(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_801856AC[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80185650; +extern u8 D_8018565C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801856E0[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801856E8[])(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_8018573C[])(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_80185770[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80185760[]; +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_8018578C; +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); +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_80185804[])(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_8018580C[])(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_80185814[])(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_8018581C[])(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_80185824[])(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_8018582C[])(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_80185838[])(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_80185844[])(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_80185850[])(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_80185860[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80185870[])(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_80185878[])(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_80185880[])(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_80185888[])(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_80185890[])(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_80185898[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801858A0[])(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_801858A8[])(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_801858B0[])(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_801858B8[])(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_801858C0[])(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_801858C8[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801858D0[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801858D8[])(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_801858E0[])(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_801858E8[])(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_801858F0[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801858F8[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80185900[])(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_80185908[])(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_80185910[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80185918[])(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_80185920[])(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_80185964[])(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_80185928; +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_80185994[])(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_801859D0[])(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(s32); +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_80185A28[])(); +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_80185A38[])(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_80185A40[])(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_80185BA8[])(); +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_80185BB4[])(); +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_801CBCC4; +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 int func_801789AC(void); +extern s16 D_801CDFB8; +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_801CD3B8; +extern short D_801CE02C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801CD7E4; +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_801CD80C; +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_801CD7C8; +extern s32 func_8017A3B0(void); +extern short D_801CD804; +extern short D_801CD800; +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_801CDF88; +extern s16 D_801CDF8A; +extern s16 D_801CDF94; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801CDF88; + + 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_801CDF94); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801CDF88+0xC == &D_801CDF94; 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_801CDF88 + 0xC)) < 0x101) { + D_801CDF88 = 0; + D_801CDF8A = 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_801CDF94); + 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_801CDF88 + 0xC)) < 0x101) { + D_801CDF88 = 0; + D_801CDF8A = 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_801CD844; + extern s16 D_801CD846; + extern s16 D_801CD848; + extern s16 D_801CD83C; + extern s16 D_801CD83E; + extern s16 D_801CD840; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801CD844, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801CD846, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801CD848, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801CD83C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801CD83E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801CD840, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801CD7CC; +extern u16 D_801CD84C; +extern u16 D_801CD84E; +extern u16 D_801CD850; +extern s16 D_801CDFB8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801CDFB8 = 0; + D_801CD7CC = 0; + D_801CD84C = D_80126B5E; + D_801CD84E = D_80126B62; + D_801CD850 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80185CF0[]; + extern s16 D_801CD844; + extern s16 D_801CD83C; + 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_80185CF0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80185CF0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801CD844; + s16 *p78C = &D_801CD83C; + *(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_801CDFB8 = 1; + D_801CD7CC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801CD7EC; + extern SV4_8017B368 D_801CD7F4; + extern s16 D_801CD844; + extern s16 D_801CD83C; + extern u16 D_80185CF0; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801CD7EC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801CD7F4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80185CF0)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80185CF0)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801CD844) = loc0; + (*(SV4_8017B368 *)&D_801CD83C) = loc1; + D_801CDFB8 = 1; + D_801CD7CC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80185CF0[]; + extern s16 D_801CD844; + extern s16 D_801CD846; + extern s16 D_801CD848; + extern s16 D_801CD83C; + extern s16 D_801CD83E; + extern s16 D_801CD840; + 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_80185CF0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80185CF0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801CD844; + s16 *p78C = &D_801CD83C; + *(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_801CD846; + v798 = D_801CD848; + v78C = *p78C; + v78E = D_801CD83E; + v790 = D_801CD840; + __asm__ __volatile__(""); + D_801CDFB8 = 1; + D_801CD7CC = 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_801CD7CC; +extern s16 D_801CD844; +extern s16 D_801CD846; +extern s16 D_801CD848; +extern s16 D_801CD83C; +extern s16 D_801CD83E; +extern s16 D_801CD840; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801CD7CC = 0; + D_801CD844 = (s16) D_80114F30; + D_801CD846 = (s16) D_80114F34; + D_801CD848 = (s16) D_80114F38; + D_801CD83C = (s16) D_80114F24; + D_801CD83E = (s16) D_80114F28; + D_801CD840 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801CD85C; +extern s16 D_801CD85E; +extern s16 D_801CD860; +extern s16 D_801CD864; +extern s16 D_801CD866; +extern s16 D_801CD868; + +void func_8017B824(void) { + D_801CD85C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801CD85E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801CD860 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801CD864 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801CD866 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801CD868 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801CD85C; +extern s16 D_801CD85E; +extern s16 D_801CD860; +extern s16 D_801CD864; +extern s16 D_801CD866; +extern s16 D_801CD868; + +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_801CD85C; + D_80114F34 = D_801CD85E; + D_80114F38 = D_801CD860; + D_80114F24 = D_801CD864; + D_80114F28 = D_801CD866; + D_80114F2C = D_801CD868; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801CD844), src[8..15] -> (*(S8_8017B8E8 *)&D_801CD83C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801CD844) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801CD83C) = ((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_801CD84C; +extern u16 D_801CD84E; +extern u16 D_801CD850; + +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_801CD7CC; +extern short D_801CD854; +extern short D_801CD856; +extern short D_801CD858; +extern s16 D_801CD844; +extern s16 D_801CD846; +extern s16 D_801CD848; +extern s16 D_801CD83C; +extern s16 D_801CD83E; +extern s16 D_801CD840; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801CD84C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801CD84E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801CD850); + (*(s16 *)&D_801CD854) = buf[0]; + (*(s16 *)&D_801CD856) = buf[1]; + (*(s16 *)&D_801CD858) = buf[2]; + D_801CD844 = D_80114F30 + buf[0]; + D_801CD7CC = 0; + D_801CD846 = D_80114F34 + buf[1]; + D_801CD848 = D_80114F38 + buf[2]; + D_801CD83C = D_80114F24 + buf[0]; + D_801CD83E = D_80114F28 + buf[1]; + D_801CD840 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801CD7EC; +extern SV4 D_801CD7F4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801CD7F4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801CD7EC = 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_801CD7F4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801CD7F4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801CD7EC) = 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_801CD7F4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801CD814[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801CD814; + 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_801CD7CC; +extern s16 D_801CDFB8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801CD7CC = D_801CD7CC + 1; + if (D_801CD7CC >= 0x1F) { + D_801CDFB8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801CD7CC; +extern s16 D_801CDFB8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801CD7CC = D_801CD7CC + 1; + if (0x18 < D_801CD7CC) { + func_8012A4BC(); + D_801CDFB8 = 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_801CD7CC; +extern void (*D_801CD810)(void); +extern short D_801CD854; +extern short D_801CD856; +extern short D_801CD858; +extern s16 D_801CDFB8; + +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_801CD7CC = D_801CD7CC + 1; + if (D_801CD7CC >= 0x19) { + if (D_801CD810 != 0) { + (*D_801CD810)(); + } else { + D_80114F30 = D_80114F30 + D_801CD854; + D_80114F34 = D_80114F34 + D_801CD856; + D_80114F38 = D_80114F38 + D_801CD858; + D_80114F24 = D_80114F24 + D_801CD854; + D_80114F28 = D_80114F28 + D_801CD856; + D_80114F2C = D_80114F2C + D_801CD858; + func_8012A4BC(); + } + D_801CDFB8 = 0; + } +} + + + +extern void (*D_80185D90[])(void); + +void func_8017BE60(void *a0) { + D_80185D90[*(u8 *)((s32)a0 + 0x4)](); +} + + +extern void func_80174684(void *); + extern s32 func_8017BEC4(s32); + void func_8017BE9C(void) { + func_80174684((void *)func_8017BEC4); + } + + +INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017AE2C", func_8017BEC4); + +INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017AE2C", func_8017BF00); + +INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017AE2C", func_8017BF70); + +INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017AE2C", func_8017BFEC); + +DEFINE_func_8017C048() /* dedup: shared engine-core @0x8017C048 (src/shared) */ + +extern void func_80174684(void *); + extern s32 func_8017C078; + void func_8017C050(void) { + func_80174684(&func_8017C078); + } + + +INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017AE2C", func_8017C078); + +INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017AE2C", func_8017C0B4); + +DEFINE_func_8017C120() /* dedup: shared engine-core @0x8017C120 (src/shared) */ + +extern void func_80174684(void *); + extern s32 func_8017C150; + void func_8017C128(void) { + func_80174684(&func_8017C150); + } + + +INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017AE2C", func_8017C150); + +INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017AE2C", func_8017C18C); + +INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017AE2C", func_8017C1E8); + +DEFINE_func_8017C238() /* dedup: shared engine-core @0x8017C238 (src/shared) */ + +extern void func_80174684(void *); + extern s32 func_8017C268(s32); + void func_8017C240(void) { + func_80174684((void *)func_8017C268); + } + + +INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017AE2C", func_8017C268); + +INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017AE2C", func_8017C2A4); + +INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017AE2C", func_8017C2F4); + +DEFINE_func_8017C338() /* dedup: shared engine-core @0x8017C338 (src/shared) */ + diff --git a/src/ov_SC01_008/ov_SC01_008_jr_8017A4AC.c b/src/ov_SC01_008/ov_SC01_008_jr_8017A4AC.c index c6c0e6e46..adaaf7c70 100644 --- a/src/ov_SC01_008/ov_SC01_008_jr_8017A4AC.c +++ b/src/ov_SC01_008/ov_SC01_008_jr_8017A4AC.c @@ -2967,563 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801A32F4; - extern s16 D_801A32F6; - extern s16 D_801A32F8; - extern s16 D_801A32EC; - extern s16 D_801A32EE; - extern s16 D_801A32F0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A32F4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A32F6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A32F8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A32EC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A32EE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A32F0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801A327C; -extern u16 D_801A32FC; -extern u16 D_801A32FE; -extern u16 D_801A3300; -extern s16 D_801A3568; - -void func_8017B1D8(void) { - func_8012A418(); - D_801A3568 = 0; - D_801A327C = 0; - D_801A32FC = D_80126B5E; - D_801A32FE = D_80126B62; - D_801A3300 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_801830D0[]; - extern s16 D_801A32F4; - extern s16 D_801A32EC; - 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_801830D0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801830D0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A32F4; - s16 *p78C = &D_801A32EC; - *(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_801A3568 = 1; - D_801A327C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A329C; - extern SV4_8017B368 D_801A32A4; - extern s16 D_801A32F4; - extern s16 D_801A32EC; - extern u16 D_801830D0; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801A329C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801A32A4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_801830D0)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_801830D0)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801A32F4) = loc0; - (*(SV4_8017B368 *)&D_801A32EC) = loc1; - D_801A3568 = 1; - D_801A327C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_801830D0[]; - extern s16 D_801A32F4; - extern s16 D_801A32F6; - extern s16 D_801A32F8; - extern s16 D_801A32EC; - extern s16 D_801A32EE; - extern s16 D_801A32F0; - 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_801830D0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801830D0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A32F4; - s16 *p78C = &D_801A32EC; - *(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_801A32F6; - v798 = D_801A32F8; - v78C = *p78C; - v78E = D_801A32EE; - v790 = D_801A32F0; - __asm__ __volatile__(""); - D_801A3568 = 1; - D_801A327C = 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_801A327C; -extern s16 D_801A32F4; -extern s16 D_801A32F6; -extern s16 D_801A32F8; -extern s16 D_801A32EC; -extern s16 D_801A32EE; -extern s16 D_801A32F0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801A327C = 0; - D_801A32F4 = (s16) D_80114F30; - D_801A32F6 = (s16) D_80114F34; - D_801A32F8 = (s16) D_80114F38; - D_801A32EC = (s16) D_80114F24; - D_801A32EE = (s16) D_80114F28; - D_801A32F0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801A330C; -extern s16 D_801A330E; -extern s16 D_801A3310; -extern s16 D_801A3314; -extern s16 D_801A3316; -extern s16 D_801A3318; - -void func_8017B824(void) { - D_801A330C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801A330E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801A3310 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801A3314 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801A3316 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801A3318 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801A330C; -extern s16 D_801A330E; -extern s16 D_801A3310; -extern s16 D_801A3314; -extern s16 D_801A3316; -extern s16 D_801A3318; - -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_801A330C; - D_80114F34 = D_801A330E; - D_80114F38 = D_801A3310; - D_80114F24 = D_801A3314; - D_80114F28 = D_801A3316; - D_80114F2C = D_801A3318; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801A32F4), src[8..15] -> (*(S8_8017B8E8 *)&D_801A32EC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801A32F4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801A32EC) = ((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_801A32FC; -extern u16 D_801A32FE; -extern u16 D_801A3300; - -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_801A327C; -extern short D_801A3304; -extern short D_801A3306; -extern short D_801A3308; -extern s16 D_801A32F4; -extern s16 D_801A32F6; -extern s16 D_801A32F8; -extern s16 D_801A32EC; -extern s16 D_801A32EE; -extern s16 D_801A32F0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A32FC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A32FE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A3300); - (*(s16 *)&D_801A3304) = buf[0]; - (*(s16 *)&D_801A3306) = buf[1]; - (*(s16 *)&D_801A3308) = buf[2]; - D_801A32F4 = D_80114F30 + buf[0]; - D_801A327C = 0; - D_801A32F6 = D_80114F34 + buf[1]; - D_801A32F8 = D_80114F38 + buf[2]; - D_801A32EC = D_80114F24 + buf[0]; - D_801A32EE = D_80114F28 + buf[1]; - D_801A32F0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801A329C; -extern SV4 D_801A32A4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A32A4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801A329C = 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_801A32A4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A32A4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801A329C) = 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_801A32A4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801A32C4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801A32C4; - 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_801A327C; -extern s16 D_801A3568; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801A327C = D_801A327C + 1; - if (D_801A327C >= 0x1F) { - D_801A3568 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801A327C; -extern s16 D_801A3568; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801A327C = D_801A327C + 1; - if (0x18 < D_801A327C) { - func_8012A4BC(); - D_801A3568 = 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_801A327C; -extern void (*D_801A32C0)(void); -extern short D_801A3304; -extern short D_801A3306; -extern short D_801A3308; -extern s16 D_801A3568; - -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_801A327C = D_801A327C + 1; - if (D_801A327C >= 0x19) { - if (D_801A32C0 != 0) { - (*D_801A32C0)(); - } else { - D_80114F30 = D_80114F30 + D_801A3304; - D_80114F34 = D_80114F34 + D_801A3306; - D_80114F38 = D_80114F38 + D_801A3308; - D_80114F24 = D_80114F24 + D_801A3304; - D_80114F28 = D_80114F28 + D_801A3306; - D_80114F2C = D_80114F2C + D_801A3308; - func_8012A4BC(); - } - D_801A3568 = 0; - } -} - - - -extern void (*D_80183170[])(void); - -void func_8017BE60(void *a0) { - D_80183170[*(u8 *)((s32)a0 + 0x4)](); -} diff --git a/src/ov_SC01_008/ov_SC01_008_jr_8017AE2C.c b/src/ov_SC01_008/ov_SC01_008_jr_8017AE2C.c new file mode 100644 index 000000000..d1f05327e --- /dev/null +++ b/src/ov_SC01_008/ov_SC01_008_jr_8017AE2C.c @@ -0,0 +1,3461 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80181CC8; +extern u8 D_80181C38; +extern u8 D_80181C14; +extern u8 D_80181BF0; +extern u8 D_80181CA4; +extern u8 D_80181C80; +extern u8 D_80181C5C; +extern u8 D_80181BCC; +extern void func_80145934(void); +extern u8 D_80181D58; +extern u8 D_80181D34; +extern u8 D_80181D10; +extern u8 D_80181CEC; +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_80181150[]; +extern unsigned char D_80181180[]; +extern unsigned char D_801811D0[]; +extern unsigned char D_80181200[]; +extern unsigned char D_80181230[]; +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(void); +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_80181280[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80181348[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801813D0[]; +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_801813D8; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801A2178; +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_801A217C; +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_80181408; +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 void 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_801814B0[])(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_801814D4[])(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_801814C4; +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_801814E8[])(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_801814F4[]; +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_80181504[])(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_8018151C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018150C; +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_80181530[])(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_8018154C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018153C; +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_80181560[])(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_80181574[])(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_80181588; +extern void (*D_801815B0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80181590; +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_801815FC[])(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_80181600[])(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(void *a0); +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_80181A64[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80181A74[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801A21B0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80181A9C[])(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_80181A7C; +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_80181A8C; +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_80181ADC[])(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_80181AE4[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80181AB0; +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_80181AF0[])(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_80181AC0; +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_801A21B8; +extern s32 D_801A21C4; +extern s32 D_801A21C8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80181B2C[])(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_80181B00[]; +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_801A21C0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80181D7C[])(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_80181B9C[]; +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_80181E20[])(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_80181F74[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80181D90; +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_80181F7C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80181DA0; +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_80181DC0; +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_80181F84[])(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(void); +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_80181FAC[])(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_80181FB8[])(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_80181E2C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018205C; +extern void func_8015D380(s32 a0); +extern unsigned char D_80181140[]; +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_80182070[]; +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_801820AC[]; +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_801820F4; +extern u16 D_801820F6; +extern u16 D_801820F8; +extern s32 D_801820FC; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80182104; +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_80181E10; +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_80182188[]; +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_80182238[])(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_80182268[]; +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_801822CC; +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_801A21D0[]; +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_801822F0[])(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_801A2228[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80182338[])(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_80182328; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801A151C[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_80182340[])(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_80182394[])(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_8018235C; +extern s16 D_80182390; +extern s16 D_8018238E; +extern s16 D_8018238C; +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_801823A0[])(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_801A2288; +extern u8 D_801A2289; +extern u8 D_801A228A; +extern u8 D_801A228B; +extern u8 D_801A228C; +extern u8 D_801A228D; +extern u8 D_801A228E; +extern u8 D_801A228F; +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_801823B0[])(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_801A22C8; +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_801823F4[])(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_80182470[]; +extern s32 D_80182490[]; +extern u8 D_8018250C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018252C[]; +extern u8 D_8018254C[]; +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_801825E8[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80182664[])(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_801A152C; +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_80182670[])(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_80182678[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80182740[])(void); +extern void func_80166618(void *a0); +extern void (*D_80182750[])(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_80182760[])(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_8018276C[])(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_801826CC[]; +extern u8 D_801826E0[]; +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_80182784[])(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_8018278C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80182794[])(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_8018279C[])(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_801827A4[])(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_801827AC[])(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_801827B4[])(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_80182868[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80182870[])(void); +extern void func_80169F00(void *a0); +extern char D_80182820[]; +extern char D_801827E0[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_801828A8[])(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_801828B4[])(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_801828FC[])(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_80182978[])(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_801A25E8; +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_8018296C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_801829B0[]; +extern unsigned short D_801829B8[]; +extern unsigned short D_801829C0[]; +extern unsigned char D_801A25F0[]; +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_801A25E8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801829C8[])(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_801A2724; +extern M2C_UNK D_801A2728; +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_801A26B0; +extern void (*D_801829F8[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801A272C[]; +extern u8 D_801A2734[]; +extern u8 D_801A26E4[]; +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_80182A00[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80182A1C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80182A24[])(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_80182A8C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80182A30; +extern u8 D_80182A3C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80182AC0[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80182AC8[])(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_80182B1C[])(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_80182B50[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80182B40[]; +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_80182B6C; +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); +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_80182BE4[])(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_80182BEC[])(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_80182BF4[])(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_80182BFC[])(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_80182C04[])(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_80182C0C[])(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_80182C18[])(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_80182C24[])(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_80182C30[])(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_80182C40[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80182C50[])(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_80182C58[])(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_80182C60[])(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_80182C68[])(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_80182C70[])(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_80182C78[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80182C80[])(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_80182C88[])(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_80182C90[])(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_80182C98[])(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_80182CA0[])(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_80182CA8[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80182CB0[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80182CB8[])(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_80182CC0[])(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_80182CC8[])(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_80182CD0[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80182CD8[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80182CE0[])(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_80182CE8[])(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_80182CF0[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80182CF8[])(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_80182D00[])(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_80182D44[])(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_80182D08; +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_80182D74[])(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_80182DB0[])(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(s32); +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_80182E08[])(); +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_80182E18[])(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_80182E20[])(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_80182F88[])(); +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_80182F94[])(); +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_801A1774; +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 int func_801789AC(void); +extern s16 D_801A3568; +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_801A2E68; +extern short D_801A35DC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801A3294; +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_801A32BC; +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_801A3278; +extern s32 func_8017A3B0(void); +extern short D_801A32B4; +extern short D_801A32B0; +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_801A3538; +extern s16 D_801A353A; +extern s16 D_801A3544; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801A3538; + + 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_801A3544); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801A3538+0xC == &D_801A3544; 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_801A3538 + 0xC)) < 0x101) { + D_801A3538 = 0; + D_801A353A = 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_801A3544); + 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_801A3538 + 0xC)) < 0x101) { + D_801A3538 = 0; + D_801A353A = 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_801A32F4; + extern s16 D_801A32F6; + extern s16 D_801A32F8; + extern s16 D_801A32EC; + extern s16 D_801A32EE; + extern s16 D_801A32F0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A32F4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A32F6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A32F8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A32EC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A32EE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A32F0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801A327C; +extern u16 D_801A32FC; +extern u16 D_801A32FE; +extern u16 D_801A3300; +extern s16 D_801A3568; + +void func_8017B1D8(void) { + func_8012A418(); + D_801A3568 = 0; + D_801A327C = 0; + D_801A32FC = D_80126B5E; + D_801A32FE = D_80126B62; + D_801A3300 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_801830D0[]; + extern s16 D_801A32F4; + extern s16 D_801A32EC; + 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_801830D0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801830D0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A32F4; + s16 *p78C = &D_801A32EC; + *(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_801A3568 = 1; + D_801A327C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A329C; + extern SV4_8017B368 D_801A32A4; + extern s16 D_801A32F4; + extern s16 D_801A32EC; + extern u16 D_801830D0; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801A329C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801A32A4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_801830D0)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_801830D0)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801A32F4) = loc0; + (*(SV4_8017B368 *)&D_801A32EC) = loc1; + D_801A3568 = 1; + D_801A327C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_801830D0[]; + extern s16 D_801A32F4; + extern s16 D_801A32F6; + extern s16 D_801A32F8; + extern s16 D_801A32EC; + extern s16 D_801A32EE; + extern s16 D_801A32F0; + 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_801830D0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801830D0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A32F4; + s16 *p78C = &D_801A32EC; + *(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_801A32F6; + v798 = D_801A32F8; + v78C = *p78C; + v78E = D_801A32EE; + v790 = D_801A32F0; + __asm__ __volatile__(""); + D_801A3568 = 1; + D_801A327C = 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_801A327C; +extern s16 D_801A32F4; +extern s16 D_801A32F6; +extern s16 D_801A32F8; +extern s16 D_801A32EC; +extern s16 D_801A32EE; +extern s16 D_801A32F0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801A327C = 0; + D_801A32F4 = (s16) D_80114F30; + D_801A32F6 = (s16) D_80114F34; + D_801A32F8 = (s16) D_80114F38; + D_801A32EC = (s16) D_80114F24; + D_801A32EE = (s16) D_80114F28; + D_801A32F0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801A330C; +extern s16 D_801A330E; +extern s16 D_801A3310; +extern s16 D_801A3314; +extern s16 D_801A3316; +extern s16 D_801A3318; + +void func_8017B824(void) { + D_801A330C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801A330E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801A3310 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801A3314 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801A3316 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801A3318 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801A330C; +extern s16 D_801A330E; +extern s16 D_801A3310; +extern s16 D_801A3314; +extern s16 D_801A3316; +extern s16 D_801A3318; + +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_801A330C; + D_80114F34 = D_801A330E; + D_80114F38 = D_801A3310; + D_80114F24 = D_801A3314; + D_80114F28 = D_801A3316; + D_80114F2C = D_801A3318; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801A32F4), src[8..15] -> (*(S8_8017B8E8 *)&D_801A32EC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801A32F4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801A32EC) = ((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_801A32FC; +extern u16 D_801A32FE; +extern u16 D_801A3300; + +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_801A327C; +extern short D_801A3304; +extern short D_801A3306; +extern short D_801A3308; +extern s16 D_801A32F4; +extern s16 D_801A32F6; +extern s16 D_801A32F8; +extern s16 D_801A32EC; +extern s16 D_801A32EE; +extern s16 D_801A32F0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A32FC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A32FE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A3300); + (*(s16 *)&D_801A3304) = buf[0]; + (*(s16 *)&D_801A3306) = buf[1]; + (*(s16 *)&D_801A3308) = buf[2]; + D_801A32F4 = D_80114F30 + buf[0]; + D_801A327C = 0; + D_801A32F6 = D_80114F34 + buf[1]; + D_801A32F8 = D_80114F38 + buf[2]; + D_801A32EC = D_80114F24 + buf[0]; + D_801A32EE = D_80114F28 + buf[1]; + D_801A32F0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801A329C; +extern SV4 D_801A32A4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A32A4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801A329C = 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_801A32A4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A32A4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801A329C) = 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_801A32A4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801A32C4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801A32C4; + 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_801A327C; +extern s16 D_801A3568; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801A327C = D_801A327C + 1; + if (D_801A327C >= 0x1F) { + D_801A3568 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801A327C; +extern s16 D_801A3568; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801A327C = D_801A327C + 1; + if (0x18 < D_801A327C) { + func_8012A4BC(); + D_801A3568 = 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_801A327C; +extern void (*D_801A32C0)(void); +extern short D_801A3304; +extern short D_801A3306; +extern short D_801A3308; +extern s16 D_801A3568; + +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_801A327C = D_801A327C + 1; + if (D_801A327C >= 0x19) { + if (D_801A32C0 != 0) { + (*D_801A32C0)(); + } else { + D_80114F30 = D_80114F30 + D_801A3304; + D_80114F34 = D_80114F34 + D_801A3306; + D_80114F38 = D_80114F38 + D_801A3308; + D_80114F24 = D_80114F24 + D_801A3304; + D_80114F28 = D_80114F28 + D_801A3306; + D_80114F2C = D_80114F2C + D_801A3308; + func_8012A4BC(); + } + D_801A3568 = 0; + } +} + + + +extern void (*D_80183170[])(void); + +void func_8017BE60(void *a0) { + D_80183170[*(u8 *)((s32)a0 + 0x4)](); +} + diff --git a/src/ov_SC01_009/ov_SC01_009_jr_8017A4AC.c b/src/ov_SC01_009/ov_SC01_009_jr_8017A4AC.c index 8d93f2f75..feb4c13f9 100644 --- a/src/ov_SC01_009/ov_SC01_009_jr_8017A4AC.c +++ b/src/ov_SC01_009/ov_SC01_009_jr_8017A4AC.c @@ -2960,563 +2960,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801F3154; - extern s16 D_801F3156; - extern s16 D_801F3158; - extern s16 D_801F314C; - extern s16 D_801F314E; - extern s16 D_801F3150; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801F3154, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801F3156, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801F3158, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801F314C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801F314E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801F3150, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801F30DC; -extern u16 D_801F315C; -extern u16 D_801F315E; -extern u16 D_801F3160; -extern s16 D_801F33E8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801F33E8 = 0; - D_801F30DC = 0; - D_801F315C = D_80126B5E; - D_801F315E = D_80126B62; - D_801F3160 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_801862B8[]; - extern s16 D_801F3154; - extern s16 D_801F314C; - 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_801862B8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801862B8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801F3154; - s16 *p78C = &D_801F314C; - *(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_801F33E8 = 1; - D_801F30DC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801F30FC; - extern SV4_8017B368 D_801F3104; - extern s16 D_801F3154; - extern s16 D_801F314C; - extern u16 D_801862B8; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801F30FC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801F3104; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_801862B8)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_801862B8)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801F3154) = loc0; - (*(SV4_8017B368 *)&D_801F314C) = loc1; - D_801F33E8 = 1; - D_801F30DC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_801862B8[]; - extern s16 D_801F3154; - extern s16 D_801F3156; - extern s16 D_801F3158; - extern s16 D_801F314C; - extern s16 D_801F314E; - extern s16 D_801F3150; - 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_801862B8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801862B8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801F3154; - s16 *p78C = &D_801F314C; - *(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_801F3156; - v798 = D_801F3158; - v78C = *p78C; - v78E = D_801F314E; - v790 = D_801F3150; - __asm__ __volatile__(""); - D_801F33E8 = 1; - D_801F30DC = 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_801F30DC; -extern s16 D_801F3154; -extern s16 D_801F3156; -extern s16 D_801F3158; -extern s16 D_801F314C; -extern s16 D_801F314E; -extern s16 D_801F3150; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801F30DC = 0; - D_801F3154 = (s16) D_80114F30; - D_801F3156 = (s16) D_80114F34; - D_801F3158 = (s16) D_80114F38; - D_801F314C = (s16) D_80114F24; - D_801F314E = (s16) D_80114F28; - D_801F3150 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801F316C; -extern s16 D_801F316E; -extern s16 D_801F3170; -extern s16 D_801F3174; -extern s16 D_801F3176; -extern s16 D_801F3178; - -void func_8017B824(void) { - D_801F316C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801F316E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801F3170 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801F3174 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801F3176 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801F3178 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801F316C; -extern s16 D_801F316E; -extern s16 D_801F3170; -extern s16 D_801F3174; -extern s16 D_801F3176; -extern s16 D_801F3178; - -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_801F316C; - D_80114F34 = D_801F316E; - D_80114F38 = D_801F3170; - D_80114F24 = D_801F3174; - D_80114F28 = D_801F3176; - D_80114F2C = D_801F3178; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801F3154), src[8..15] -> (*(S8_8017B8E8 *)&D_801F314C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801F3154) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801F314C) = ((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_801F315C; -extern u16 D_801F315E; -extern u16 D_801F3160; - -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_801F30DC; -extern short D_801F3164; -extern short D_801F3166; -extern short D_801F3168; -extern s16 D_801F3154; -extern s16 D_801F3156; -extern s16 D_801F3158; -extern s16 D_801F314C; -extern s16 D_801F314E; -extern s16 D_801F3150; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801F315C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801F315E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801F3160); - (*(s16 *)&D_801F3164) = buf[0]; - (*(s16 *)&D_801F3166) = buf[1]; - (*(s16 *)&D_801F3168) = buf[2]; - D_801F3154 = D_80114F30 + buf[0]; - D_801F30DC = 0; - D_801F3156 = D_80114F34 + buf[1]; - D_801F3158 = D_80114F38 + buf[2]; - D_801F314C = D_80114F24 + buf[0]; - D_801F314E = D_80114F28 + buf[1]; - D_801F3150 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801F30FC; -extern SV4 D_801F3104; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801F3104) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801F30FC = 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_801F3104 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801F3104)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801F30FC) = 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_801F3104) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801F3124[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801F3124; - 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_801F30DC; -extern s16 D_801F33E8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801F30DC = D_801F30DC + 1; - if (D_801F30DC >= 0x1F) { - D_801F33E8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801F30DC; -extern s16 D_801F33E8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801F30DC = D_801F30DC + 1; - if (0x18 < D_801F30DC) { - func_8012A4BC(); - D_801F33E8 = 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_801F30DC; -extern void (*D_801F3120)(void); -extern short D_801F3164; -extern short D_801F3166; -extern short D_801F3168; -extern s16 D_801F33E8; - -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_801F30DC = D_801F30DC + 1; - if (D_801F30DC >= 0x19) { - if (D_801F3120 != 0) { - (*D_801F3120)(); - } else { - D_80114F30 = D_80114F30 + D_801F3164; - D_80114F34 = D_80114F34 + D_801F3166; - D_80114F38 = D_80114F38 + D_801F3168; - D_80114F24 = D_80114F24 + D_801F3164; - D_80114F28 = D_80114F28 + D_801F3166; - D_80114F2C = D_80114F2C + D_801F3168; - func_8012A4BC(); - } - D_801F33E8 = 0; - } -} - - - -extern void (*D_80186358[])(void); - -void func_8017BE60(void *a0) { - D_80186358[*(u8 *)((s32)a0 + 0x4)](); -} diff --git a/src/ov_SC01_009/ov_SC01_009_jr_8017AE2C.c b/src/ov_SC01_009/ov_SC01_009_jr_8017AE2C.c new file mode 100644 index 000000000..536d6feea --- /dev/null +++ b/src/ov_SC01_009/ov_SC01_009_jr_8017AE2C.c @@ -0,0 +1,3455 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80184EB0; +extern u8 D_80184E20; +extern u8 D_80184DFC; +extern u8 D_80184DD8; +extern u8 D_80184E8C; +extern u8 D_80184E68; +extern u8 D_80184E44; +extern u8 D_80184DB4; +extern void func_80145934(void); +extern u8 D_80184F40; +extern u8 D_80184F1C; +extern u8 D_80184EF8; +extern u8 D_80184ED4; +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_80184338[]; +extern unsigned char D_80184368[]; +extern unsigned char D_801843B8[]; +extern unsigned char D_801843E8[]; +extern unsigned char D_80184418[]; +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(void); +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_80184468[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80184530[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801845B8[]; +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_801845C0; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801F1FD8; +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_801F1FDC; +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_801845F0; +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 void 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_80184698[])(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_801846BC[])(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_801846AC; +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_801846D0[])(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_801846DC[]; +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_801846EC[])(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_80184704[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801846F4; +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_80184718[])(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_80184734[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80184724; +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_80184748[])(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_8018475C[])(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_80184770; +extern void (*D_80184798[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80184778; +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_801847E4[])(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_801847E8[])(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(void *a0); +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_80184C4C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80184C5C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801F2010; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184C84[])(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_80184C64; +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_80184C74; +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_80184CC4[])(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_80184CCC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80184C98; +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_80184CD8[])(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_80184CA8; +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_801F2018; +extern s32 D_801F2024; +extern s32 D_801F2028; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80184D14[])(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_80184CE8[]; +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_801F2020; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80184F64[])(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_80184D84[]; +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_80185008[])(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_8018515C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80184F78; +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_80185164[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80184F88; +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_80184FA8; +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_8018516C[])(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(void); +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_80185194[])(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_801851A0[])(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_80185014[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80185244; +extern void func_8015D380(s32 a0); +extern unsigned char D_80184328[]; +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_80185258[]; +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_80185294[]; +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_801852DC; +extern u16 D_801852DE; +extern u16 D_801852E0; +extern s32 D_801852E4; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_801852EC; +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_80184FF8; +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_80185370[]; +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_80185420[])(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_80185450[]; +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_801854B4; +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_801F2030[]; +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_801854D8[])(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_801F2088[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80185520[])(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_80185510; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801F12E0[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_80185528[])(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_8018557C[])(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_80185544; +extern s16 D_80185578; +extern s16 D_80185576; +extern s16 D_80185574; +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_80185588[])(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_801F20E8; +extern u8 D_801F20E9; +extern u8 D_801F20EA; +extern u8 D_801F20EB; +extern u8 D_801F20EC; +extern u8 D_801F20ED; +extern u8 D_801F20EE; +extern u8 D_801F20EF; +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_80185598[])(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_801F2128; +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_801855DC[])(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_80185658[]; +extern s32 D_80185678[]; +extern u8 D_801856F4[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80185714[]; +extern u8 D_80185734[]; +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_801857D0[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018584C[])(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_801F12F0; +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_80185858[])(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_80185860[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80185928[])(void); +extern void func_80166618(void *a0); +extern void (*D_80185938[])(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_80185948[])(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_80185954[])(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_801858B4[]; +extern u8 D_801858C8[]; +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_8018596C[])(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_80185974[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018597C[])(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_80185984[])(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_8018598C[])(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_80185994[])(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_8018599C[])(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_80185A50[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80185A58[])(void); +extern void func_80169F00(void *a0); +extern char D_80185A08[]; +extern char D_801859C8[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80185A90[])(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_80185A9C[])(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_80185AE4[])(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_80185B60[])(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_801F2448; +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_80185B54[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80185B98[]; +extern unsigned short D_80185BA0[]; +extern unsigned short D_80185BA8[]; +extern unsigned char D_801F2450[]; +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_801F2448; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80185BB0[])(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_801F2584; +extern M2C_UNK D_801F2588; +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_801F2510; +extern void (*D_80185BE0[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801F258C[]; +extern u8 D_801F2594[]; +extern u8 D_801F2544[]; +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_80185BE8[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80185C04[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80185C0C[])(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_80185C74[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80185C18; +extern u8 D_80185C24; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80185CA8[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80185CB0[])(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_80185D04[])(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_80185D38[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80185D28[]; +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_80185D54; +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); +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_80185DCC[])(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_80185DD4[])(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_80185DDC[])(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_80185DE4[])(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_80185DEC[])(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_80185DF4[])(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_80185E00[])(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_80185E0C[])(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_80185E18[])(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_80185E28[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80185E38[])(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_80185E40[])(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_80185E48[])(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_80185E50[])(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_80185E58[])(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_80185E60[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80185E68[])(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_80185E70[])(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_80185E78[])(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_80185E80[])(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_80185E88[])(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_80185E90[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80185E98[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80185EA0[])(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_80185EA8[])(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_80185EB0[])(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_80185EB8[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80185EC0[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80185EC8[])(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_80185ED0[])(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_80185ED8[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80185EE0[])(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_80185EE8[])(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_80185F2C[])(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_80185EF0; +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_80185F5C[])(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_80185F98[])(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(s32); +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_80185FF0[])(); +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_80186000[])(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_80186008[])(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_80186170[])(); +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_8018617C[])(); +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_801F1538; +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 int func_801789AC(void); +extern s16 D_801F33E8; +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_801F2CC8; +extern short D_801F345C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801F30F4; +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_801F311C; +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_801F30D8; +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_801F33B8; +extern s16 D_801F33BA; +extern s16 D_801F33C4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801F33B8; + + 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_801F33C4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801F33B8+0xC == &D_801F33C4; 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_801F33B8 + 0xC)) < 0x101) { + D_801F33B8 = 0; + D_801F33BA = 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_801F33C4); + 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_801F33B8 + 0xC)) < 0x101) { + D_801F33B8 = 0; + D_801F33BA = 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_801F3154; + extern s16 D_801F3156; + extern s16 D_801F3158; + extern s16 D_801F314C; + extern s16 D_801F314E; + extern s16 D_801F3150; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801F3154, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801F3156, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801F3158, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801F314C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801F314E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801F3150, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801F30DC; +extern u16 D_801F315C; +extern u16 D_801F315E; +extern u16 D_801F3160; +extern s16 D_801F33E8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801F33E8 = 0; + D_801F30DC = 0; + D_801F315C = D_80126B5E; + D_801F315E = D_80126B62; + D_801F3160 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_801862B8[]; + extern s16 D_801F3154; + extern s16 D_801F314C; + 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_801862B8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801862B8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801F3154; + s16 *p78C = &D_801F314C; + *(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_801F33E8 = 1; + D_801F30DC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801F30FC; + extern SV4_8017B368 D_801F3104; + extern s16 D_801F3154; + extern s16 D_801F314C; + extern u16 D_801862B8; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801F30FC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801F3104; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_801862B8)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_801862B8)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801F3154) = loc0; + (*(SV4_8017B368 *)&D_801F314C) = loc1; + D_801F33E8 = 1; + D_801F30DC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_801862B8[]; + extern s16 D_801F3154; + extern s16 D_801F3156; + extern s16 D_801F3158; + extern s16 D_801F314C; + extern s16 D_801F314E; + extern s16 D_801F3150; + 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_801862B8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801862B8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801F3154; + s16 *p78C = &D_801F314C; + *(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_801F3156; + v798 = D_801F3158; + v78C = *p78C; + v78E = D_801F314E; + v790 = D_801F3150; + __asm__ __volatile__(""); + D_801F33E8 = 1; + D_801F30DC = 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_801F30DC; +extern s16 D_801F3154; +extern s16 D_801F3156; +extern s16 D_801F3158; +extern s16 D_801F314C; +extern s16 D_801F314E; +extern s16 D_801F3150; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801F30DC = 0; + D_801F3154 = (s16) D_80114F30; + D_801F3156 = (s16) D_80114F34; + D_801F3158 = (s16) D_80114F38; + D_801F314C = (s16) D_80114F24; + D_801F314E = (s16) D_80114F28; + D_801F3150 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801F316C; +extern s16 D_801F316E; +extern s16 D_801F3170; +extern s16 D_801F3174; +extern s16 D_801F3176; +extern s16 D_801F3178; + +void func_8017B824(void) { + D_801F316C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801F316E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801F3170 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801F3174 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801F3176 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801F3178 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801F316C; +extern s16 D_801F316E; +extern s16 D_801F3170; +extern s16 D_801F3174; +extern s16 D_801F3176; +extern s16 D_801F3178; + +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_801F316C; + D_80114F34 = D_801F316E; + D_80114F38 = D_801F3170; + D_80114F24 = D_801F3174; + D_80114F28 = D_801F3176; + D_80114F2C = D_801F3178; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801F3154), src[8..15] -> (*(S8_8017B8E8 *)&D_801F314C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801F3154) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801F314C) = ((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_801F315C; +extern u16 D_801F315E; +extern u16 D_801F3160; + +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_801F30DC; +extern short D_801F3164; +extern short D_801F3166; +extern short D_801F3168; +extern s16 D_801F3154; +extern s16 D_801F3156; +extern s16 D_801F3158; +extern s16 D_801F314C; +extern s16 D_801F314E; +extern s16 D_801F3150; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801F315C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801F315E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801F3160); + (*(s16 *)&D_801F3164) = buf[0]; + (*(s16 *)&D_801F3166) = buf[1]; + (*(s16 *)&D_801F3168) = buf[2]; + D_801F3154 = D_80114F30 + buf[0]; + D_801F30DC = 0; + D_801F3156 = D_80114F34 + buf[1]; + D_801F3158 = D_80114F38 + buf[2]; + D_801F314C = D_80114F24 + buf[0]; + D_801F314E = D_80114F28 + buf[1]; + D_801F3150 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801F30FC; +extern SV4 D_801F3104; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801F3104) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801F30FC = 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_801F3104 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801F3104)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801F30FC) = 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_801F3104) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801F3124[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801F3124; + 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_801F30DC; +extern s16 D_801F33E8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801F30DC = D_801F30DC + 1; + if (D_801F30DC >= 0x1F) { + D_801F33E8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801F30DC; +extern s16 D_801F33E8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801F30DC = D_801F30DC + 1; + if (0x18 < D_801F30DC) { + func_8012A4BC(); + D_801F33E8 = 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_801F30DC; +extern void (*D_801F3120)(void); +extern short D_801F3164; +extern short D_801F3166; +extern short D_801F3168; +extern s16 D_801F33E8; + +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_801F30DC = D_801F30DC + 1; + if (D_801F30DC >= 0x19) { + if (D_801F3120 != 0) { + (*D_801F3120)(); + } else { + D_80114F30 = D_80114F30 + D_801F3164; + D_80114F34 = D_80114F34 + D_801F3166; + D_80114F38 = D_80114F38 + D_801F3168; + D_80114F24 = D_80114F24 + D_801F3164; + D_80114F28 = D_80114F28 + D_801F3166; + D_80114F2C = D_80114F2C + D_801F3168; + func_8012A4BC(); + } + D_801F33E8 = 0; + } +} + + + +extern void (*D_80186358[])(void); + +void func_8017BE60(void *a0) { + D_80186358[*(u8 *)((s32)a0 + 0x4)](); +} + diff --git a/src/ov_SC01_074/ov_SC01_074_jr_8017A4AC.c b/src/ov_SC01_074/ov_SC01_074_jr_8017A4AC.c index e0310a7d5..3464c6dfb 100644 --- a/src/ov_SC01_074/ov_SC01_074_jr_8017A4AC.c +++ b/src/ov_SC01_074/ov_SC01_074_jr_8017A4AC.c @@ -2967,563 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8019BBD4; - extern s16 D_8019BBD6; - extern s16 D_8019BBD8; - extern s16 D_8019BBCC; - extern s16 D_8019BBCE; - extern s16 D_8019BBD0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019BBD4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019BBD6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019BBD8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019BBCC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019BBCE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019BBD0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8019BB5C; -extern u16 D_8019BBDC; -extern u16 D_8019BBDE; -extern u16 D_8019BBE0; -extern s16 D_8019BCF8; - -void func_8017B1D8(void) { - func_8012A418(); - D_8019BCF8 = 0; - D_8019BB5C = 0; - D_8019BBDC = D_80126B5E; - D_8019BBDE = D_80126B62; - D_8019BBE0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80181F38[]; - extern s16 D_8019BBD4; - extern s16 D_8019BBCC; - 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_80181F38[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80181F38[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019BBD4; - s16 *p78C = &D_8019BBCC; - *(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_8019BCF8 = 1; - D_8019BB5C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019BB7C; - extern SV4_8017B368 D_8019BB84; - extern s16 D_8019BBD4; - extern s16 D_8019BBCC; - extern u16 D_80181F38; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8019BB7C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8019BB84; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80181F38)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80181F38)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8019BBD4) = loc0; - (*(SV4_8017B368 *)&D_8019BBCC) = loc1; - D_8019BCF8 = 1; - D_8019BB5C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80181F38[]; - extern s16 D_8019BBD4; - extern s16 D_8019BBD6; - extern s16 D_8019BBD8; - extern s16 D_8019BBCC; - extern s16 D_8019BBCE; - extern s16 D_8019BBD0; - 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_80181F38[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80181F38[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019BBD4; - s16 *p78C = &D_8019BBCC; - *(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_8019BBD6; - v798 = D_8019BBD8; - v78C = *p78C; - v78E = D_8019BBCE; - v790 = D_8019BBD0; - __asm__ __volatile__(""); - D_8019BCF8 = 1; - D_8019BB5C = 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_8019BB5C; -extern s16 D_8019BBD4; -extern s16 D_8019BBD6; -extern s16 D_8019BBD8; -extern s16 D_8019BBCC; -extern s16 D_8019BBCE; -extern s16 D_8019BBD0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8019BB5C = 0; - D_8019BBD4 = (s16) D_80114F30; - D_8019BBD6 = (s16) D_80114F34; - D_8019BBD8 = (s16) D_80114F38; - D_8019BBCC = (s16) D_80114F24; - D_8019BBCE = (s16) D_80114F28; - D_8019BBD0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8019BBEC; -extern s16 D_8019BBEE; -extern s16 D_8019BBF0; -extern s16 D_8019BBF4; -extern s16 D_8019BBF6; -extern s16 D_8019BBF8; - -void func_8017B824(void) { - D_8019BBEC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8019BBEE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8019BBF0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8019BBF4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8019BBF6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8019BBF8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8019BBEC; -extern s16 D_8019BBEE; -extern s16 D_8019BBF0; -extern s16 D_8019BBF4; -extern s16 D_8019BBF6; -extern s16 D_8019BBF8; - -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_8019BBEC; - D_80114F34 = D_8019BBEE; - D_80114F38 = D_8019BBF0; - D_80114F24 = D_8019BBF4; - D_80114F28 = D_8019BBF6; - D_80114F2C = D_8019BBF8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8019BBD4), src[8..15] -> (*(S8_8017B8E8 *)&D_8019BBCC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8019BBD4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8019BBCC) = ((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_8019BBDC; -extern u16 D_8019BBDE; -extern u16 D_8019BBE0; - -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_8019BB5C; -extern short D_8019BBE4; -extern short D_8019BBE6; -extern short D_8019BBE8; -extern s16 D_8019BBD4; -extern s16 D_8019BBD6; -extern s16 D_8019BBD8; -extern s16 D_8019BBCC; -extern s16 D_8019BBCE; -extern s16 D_8019BBD0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019BBDC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019BBDE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019BBE0); - (*(s16 *)&D_8019BBE4) = buf[0]; - (*(s16 *)&D_8019BBE6) = buf[1]; - (*(s16 *)&D_8019BBE8) = buf[2]; - D_8019BBD4 = D_80114F30 + buf[0]; - D_8019BB5C = 0; - D_8019BBD6 = D_80114F34 + buf[1]; - D_8019BBD8 = D_80114F38 + buf[2]; - D_8019BBCC = D_80114F24 + buf[0]; - D_8019BBCE = D_80114F28 + buf[1]; - D_8019BBD0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8019BB7C; -extern SV4 D_8019BB84; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019BB84) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8019BB7C = 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_8019BB84 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019BB84)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8019BB7C) = 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_8019BB84) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8019BBA4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8019BBA4; - 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_8019BB5C; -extern s16 D_8019BCF8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8019BB5C = D_8019BB5C + 1; - if (D_8019BB5C >= 0x1F) { - D_8019BCF8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8019BB5C; -extern s16 D_8019BCF8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8019BB5C = D_8019BB5C + 1; - if (0x18 < D_8019BB5C) { - func_8012A4BC(); - D_8019BCF8 = 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_8019BB5C; -extern void (*D_8019BBA0)(void); -extern short D_8019BBE4; -extern short D_8019BBE6; -extern short D_8019BBE8; -extern s16 D_8019BCF8; - -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_8019BB5C = D_8019BB5C + 1; - if (D_8019BB5C >= 0x19) { - if (D_8019BBA0 != 0) { - (*D_8019BBA0)(); - } else { - D_80114F30 = D_80114F30 + D_8019BBE4; - D_80114F34 = D_80114F34 + D_8019BBE6; - D_80114F38 = D_80114F38 + D_8019BBE8; - D_80114F24 = D_80114F24 + D_8019BBE4; - D_80114F28 = D_80114F28 + D_8019BBE6; - D_80114F2C = D_80114F2C + D_8019BBE8; - func_8012A4BC(); - } - D_8019BCF8 = 0; - } -} - - - -extern void (*D_80181FD8[])(void); - -void func_8017BE60(void *a0) { - D_80181FD8[*(u8 *)((s32)a0 + 0x4)](); -} diff --git a/src/ov_SC01_074/ov_SC01_074_jr_8017AE2C.c b/src/ov_SC01_074/ov_SC01_074_jr_8017AE2C.c new file mode 100644 index 000000000..6451ffe11 --- /dev/null +++ b/src/ov_SC01_074/ov_SC01_074_jr_8017AE2C.c @@ -0,0 +1,3461 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80180B30; +extern u8 D_80180AA0; +extern u8 D_80180A7C; +extern u8 D_80180A58; +extern u8 D_80180B0C; +extern u8 D_80180AE8; +extern u8 D_80180AC4; +extern u8 D_80180A34; +extern void func_80145934(void); +extern u8 D_80180BC0; +extern u8 D_80180B9C; +extern u8 D_80180B78; +extern u8 D_80180B54; +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_8017FFB8[]; +extern unsigned char D_8017FFE8[]; +extern unsigned char D_80180038[]; +extern unsigned char D_80180068[]; +extern unsigned char D_80180098[]; +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(void); +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_801800E8[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_801801B0[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80180238[]; +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_80180240; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8019AA58; +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_8019AA5C; +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_80180270; +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 void 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_80180318[])(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_8018033C[])(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_8018032C; +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_80180350[])(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_8018035C[]; +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_8018036C[])(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_80180384[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180374; +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_80180398[])(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_801803B4[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801803A4; +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_801803C8[])(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_801803DC[])(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_801803F0; +extern void (*D_80180418[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801803F8; +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_80180464[])(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_80180468[])(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(void *a0); +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_801808CC[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_801808DC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8019AA90; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180904[])(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_801808E4; +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_801808F4; +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_80180944[])(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_8018094C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180918; +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_80180958[])(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_80180928; +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_8019AA98; +extern s32 D_8019AAA4; +extern s32 D_8019AAA8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180994[])(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_80180968[]; +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_8019AAA0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80180BE4[])(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_80180A04[]; +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_80180C88[])(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_80180DDC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80180BF8; +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_80180DE4[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80180C08; +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_80180C28; +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_80180DEC[])(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(void); +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_80180E14[])(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_80180E20[])(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_80180C94[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80180EC4; +extern void func_8015D380(s32 a0); +extern unsigned char D_8017FFA8[]; +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_80180ED8[]; +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_80180F14[]; +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_80180F5C; +extern u16 D_80180F5E; +extern u16 D_80180F60; +extern s32 D_80180F64; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80180F6C; +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_80180C78; +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_80180FF0[]; +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_801810A0[])(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_801810D0[]; +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_80181134; +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_8019AAB0[]; +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_80181158[])(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_8019AB08[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_801811A0[])(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_80181190; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8019A370[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_801811A8[])(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_801811FC[])(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_801811C4; +extern s16 D_801811F8; +extern s16 D_801811F6; +extern s16 D_801811F4; +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_80181208[])(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_8019AB68; +extern u8 D_8019AB69; +extern u8 D_8019AB6A; +extern u8 D_8019AB6B; +extern u8 D_8019AB6C; +extern u8 D_8019AB6D; +extern u8 D_8019AB6E; +extern u8 D_8019AB6F; +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_80181218[])(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_8019ABA8; +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_8018125C[])(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_801812D8[]; +extern s32 D_801812F8[]; +extern u8 D_80181374[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80181394[]; +extern u8 D_801813B4[]; +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_80181450[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801814CC[])(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_8019A380; +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_801814D8[])(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_801814E0[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801815A8[])(void); +extern void func_80166618(void *a0); +extern void (*D_801815B8[])(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_801815C8[])(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_801815D4[])(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_80181534[]; +extern u8 D_80181548[]; +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_801815EC[])(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_801815F4[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_801815FC[])(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_80181604[])(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_8018160C[])(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_80181614[])(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_8018161C[])(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_801816D0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801816D8[])(void); +extern void func_80169F00(void *a0); +extern char D_80181688[]; +extern char D_80181648[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80181710[])(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_8018171C[])(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_80181764[])(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_801817E0[])(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_8019AEC8; +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_801817D4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80181818[]; +extern unsigned short D_80181820[]; +extern unsigned short D_80181828[]; +extern unsigned char D_8019AED0[]; +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_8019AEC8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80181830[])(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_8019B004; +extern M2C_UNK D_8019B008; +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_8019AF90; +extern void (*D_80181860[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8019B00C[]; +extern u8 D_8019B014[]; +extern u8 D_8019AFC4[]; +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_80181868[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80181884[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018188C[])(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_801818F4[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80181898; +extern u8 D_801818A4; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80181928[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80181930[])(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_80181984[])(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_801819B8[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801819A8[]; +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_801819D4; +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); +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_80181A4C[])(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_80181A54[])(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_80181A5C[])(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_80181A64[])(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_80181A6C[])(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_80181A74[])(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_80181A80[])(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_80181A8C[])(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_80181A98[])(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_80181AA8[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80181AB8[])(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_80181AC0[])(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_80181AC8[])(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_80181AD0[])(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_80181AD8[])(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_80181AE0[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80181AE8[])(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_80181AF0[])(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_80181AF8[])(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_80181B00[])(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_80181B08[])(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_80181B10[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80181B18[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80181B20[])(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_80181B28[])(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_80181B30[])(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_80181B38[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80181B40[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80181B48[])(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_80181B50[])(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_80181B58[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80181B60[])(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_80181B68[])(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_80181BAC[])(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_80181B70; +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_80181BDC[])(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_80181C18[])(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(s32); +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_80181C70[])(); +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_80181C80[])(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_80181C88[])(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_80181DF0[])(); +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_80181DFC[])(); +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_8019A5C8; +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 int func_801789AC(void); +extern s16 D_8019BCF8; +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_8019B748; +extern short D_8019BD6C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8019BB74; +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_8019BB9C; +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_8019BB58; +extern s32 func_8017A3B0(void); +extern short D_8019BB94; +extern short D_8019BB90; +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_8019BCC8; +extern s16 D_8019BCCA; +extern s16 D_8019BCD4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_8019BCC8; + + 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_8019BCD4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_8019BCC8+0xC == &D_8019BCD4; 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_8019BCC8 + 0xC)) < 0x101) { + D_8019BCC8 = 0; + D_8019BCCA = 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_8019BCD4); + 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_8019BCC8 + 0xC)) < 0x101) { + D_8019BCC8 = 0; + D_8019BCCA = 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_8019BBD4; + extern s16 D_8019BBD6; + extern s16 D_8019BBD8; + extern s16 D_8019BBCC; + extern s16 D_8019BBCE; + extern s16 D_8019BBD0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019BBD4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019BBD6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019BBD8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019BBCC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019BBCE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019BBD0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8019BB5C; +extern u16 D_8019BBDC; +extern u16 D_8019BBDE; +extern u16 D_8019BBE0; +extern s16 D_8019BCF8; + +void func_8017B1D8(void) { + func_8012A418(); + D_8019BCF8 = 0; + D_8019BB5C = 0; + D_8019BBDC = D_80126B5E; + D_8019BBDE = D_80126B62; + D_8019BBE0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80181F38[]; + extern s16 D_8019BBD4; + extern s16 D_8019BBCC; + 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_80181F38[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80181F38[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019BBD4; + s16 *p78C = &D_8019BBCC; + *(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_8019BCF8 = 1; + D_8019BB5C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019BB7C; + extern SV4_8017B368 D_8019BB84; + extern s16 D_8019BBD4; + extern s16 D_8019BBCC; + extern u16 D_80181F38; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8019BB7C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8019BB84; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80181F38)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80181F38)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8019BBD4) = loc0; + (*(SV4_8017B368 *)&D_8019BBCC) = loc1; + D_8019BCF8 = 1; + D_8019BB5C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80181F38[]; + extern s16 D_8019BBD4; + extern s16 D_8019BBD6; + extern s16 D_8019BBD8; + extern s16 D_8019BBCC; + extern s16 D_8019BBCE; + extern s16 D_8019BBD0; + 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_80181F38[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80181F38[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019BBD4; + s16 *p78C = &D_8019BBCC; + *(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_8019BBD6; + v798 = D_8019BBD8; + v78C = *p78C; + v78E = D_8019BBCE; + v790 = D_8019BBD0; + __asm__ __volatile__(""); + D_8019BCF8 = 1; + D_8019BB5C = 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_8019BB5C; +extern s16 D_8019BBD4; +extern s16 D_8019BBD6; +extern s16 D_8019BBD8; +extern s16 D_8019BBCC; +extern s16 D_8019BBCE; +extern s16 D_8019BBD0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8019BB5C = 0; + D_8019BBD4 = (s16) D_80114F30; + D_8019BBD6 = (s16) D_80114F34; + D_8019BBD8 = (s16) D_80114F38; + D_8019BBCC = (s16) D_80114F24; + D_8019BBCE = (s16) D_80114F28; + D_8019BBD0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8019BBEC; +extern s16 D_8019BBEE; +extern s16 D_8019BBF0; +extern s16 D_8019BBF4; +extern s16 D_8019BBF6; +extern s16 D_8019BBF8; + +void func_8017B824(void) { + D_8019BBEC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8019BBEE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8019BBF0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8019BBF4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8019BBF6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8019BBF8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8019BBEC; +extern s16 D_8019BBEE; +extern s16 D_8019BBF0; +extern s16 D_8019BBF4; +extern s16 D_8019BBF6; +extern s16 D_8019BBF8; + +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_8019BBEC; + D_80114F34 = D_8019BBEE; + D_80114F38 = D_8019BBF0; + D_80114F24 = D_8019BBF4; + D_80114F28 = D_8019BBF6; + D_80114F2C = D_8019BBF8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8019BBD4), src[8..15] -> (*(S8_8017B8E8 *)&D_8019BBCC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8019BBD4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8019BBCC) = ((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_8019BBDC; +extern u16 D_8019BBDE; +extern u16 D_8019BBE0; + +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_8019BB5C; +extern short D_8019BBE4; +extern short D_8019BBE6; +extern short D_8019BBE8; +extern s16 D_8019BBD4; +extern s16 D_8019BBD6; +extern s16 D_8019BBD8; +extern s16 D_8019BBCC; +extern s16 D_8019BBCE; +extern s16 D_8019BBD0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019BBDC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019BBDE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019BBE0); + (*(s16 *)&D_8019BBE4) = buf[0]; + (*(s16 *)&D_8019BBE6) = buf[1]; + (*(s16 *)&D_8019BBE8) = buf[2]; + D_8019BBD4 = D_80114F30 + buf[0]; + D_8019BB5C = 0; + D_8019BBD6 = D_80114F34 + buf[1]; + D_8019BBD8 = D_80114F38 + buf[2]; + D_8019BBCC = D_80114F24 + buf[0]; + D_8019BBCE = D_80114F28 + buf[1]; + D_8019BBD0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8019BB7C; +extern SV4 D_8019BB84; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019BB84) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8019BB7C = 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_8019BB84 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019BB84)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8019BB7C) = 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_8019BB84) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8019BBA4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8019BBA4; + 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_8019BB5C; +extern s16 D_8019BCF8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8019BB5C = D_8019BB5C + 1; + if (D_8019BB5C >= 0x1F) { + D_8019BCF8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8019BB5C; +extern s16 D_8019BCF8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8019BB5C = D_8019BB5C + 1; + if (0x18 < D_8019BB5C) { + func_8012A4BC(); + D_8019BCF8 = 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_8019BB5C; +extern void (*D_8019BBA0)(void); +extern short D_8019BBE4; +extern short D_8019BBE6; +extern short D_8019BBE8; +extern s16 D_8019BCF8; + +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_8019BB5C = D_8019BB5C + 1; + if (D_8019BB5C >= 0x19) { + if (D_8019BBA0 != 0) { + (*D_8019BBA0)(); + } else { + D_80114F30 = D_80114F30 + D_8019BBE4; + D_80114F34 = D_80114F34 + D_8019BBE6; + D_80114F38 = D_80114F38 + D_8019BBE8; + D_80114F24 = D_80114F24 + D_8019BBE4; + D_80114F28 = D_80114F28 + D_8019BBE6; + D_80114F2C = D_80114F2C + D_8019BBE8; + func_8012A4BC(); + } + D_8019BCF8 = 0; + } +} + + + +extern void (*D_80181FD8[])(void); + +void func_8017BE60(void *a0) { + D_80181FD8[*(u8 *)((s32)a0 + 0x4)](); +} + diff --git a/src/ov_SC01_080/ov_SC01_080_jr_8017A4AC.c b/src/ov_SC01_080/ov_SC01_080_jr_8017A4AC.c index 6f67a8755..da74e1e8f 100644 --- a/src/ov_SC01_080/ov_SC01_080_jr_8017A4AC.c +++ b/src/ov_SC01_080/ov_SC01_080_jr_8017A4AC.c @@ -2967,1405 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801C5A04; - extern s16 D_801C5A06; - extern s16 D_801C5A08; - extern s16 D_801C59FC; - extern s16 D_801C59FE; - extern s16 D_801C5A00; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C5A04, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C5A06, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C5A08, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C59FC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C59FE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C5A00, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801C598C; -extern u16 D_801C5A0C; -extern u16 D_801C5A0E; -extern u16 D_801C5A10; -extern s16 D_801C7EDC; - -void func_8017B1D8(void) { - func_8012A418(); - D_801C7EDC = 0; - D_801C598C = 0; - D_801C5A0C = D_80126B5E; - D_801C5A0E = D_80126B62; - D_801C5A10 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80186E98[]; - extern s16 D_801C5A04; - extern s16 D_801C59FC; - 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_80186E98[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80186E98[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C5A04; - s16 *p78C = &D_801C59FC; - *(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_801C7EDC = 1; - D_801C598C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C59AC; - extern SV4_8017B368 D_801C59B4; - extern s16 D_801C5A04; - extern s16 D_801C59FC; - extern u16 D_80186E98; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801C59AC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801C59B4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80186E98)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80186E98)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801C5A04) = loc0; - (*(SV4_8017B368 *)&D_801C59FC) = loc1; - D_801C7EDC = 1; - D_801C598C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80186E98[]; - extern s16 D_801C5A04; - extern s16 D_801C5A06; - extern s16 D_801C5A08; - extern s16 D_801C59FC; - extern s16 D_801C59FE; - extern s16 D_801C5A00; - 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_80186E98[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80186E98[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C5A04; - s16 *p78C = &D_801C59FC; - *(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_801C5A06; - v798 = D_801C5A08; - v78C = *p78C; - v78E = D_801C59FE; - v790 = D_801C5A00; - __asm__ __volatile__(""); - D_801C7EDC = 1; - D_801C598C = 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_801C598C; -extern s16 D_801C5A04; -extern s16 D_801C5A06; -extern s16 D_801C5A08; -extern s16 D_801C59FC; -extern s16 D_801C59FE; -extern s16 D_801C5A00; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801C598C = 0; - D_801C5A04 = (s16) D_80114F30; - D_801C5A06 = (s16) D_80114F34; - D_801C5A08 = (s16) D_80114F38; - D_801C59FC = (s16) D_80114F24; - D_801C59FE = (s16) D_80114F28; - D_801C5A00 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801C5A1C; -extern s16 D_801C5A1E; -extern s16 D_801C5A20; -extern s16 D_801C5A24; -extern s16 D_801C5A26; -extern s16 D_801C5A28; - -void func_8017B824(void) { - D_801C5A1C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801C5A1E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801C5A20 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801C5A24 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801C5A26 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801C5A28 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801C5A1C; -extern s16 D_801C5A1E; -extern s16 D_801C5A20; -extern s16 D_801C5A24; -extern s16 D_801C5A26; -extern s16 D_801C5A28; - -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_801C5A1C; - D_80114F34 = D_801C5A1E; - D_80114F38 = D_801C5A20; - D_80114F24 = D_801C5A24; - D_80114F28 = D_801C5A26; - D_80114F2C = D_801C5A28; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801C5A04), src[8..15] -> (*(S8_8017B8E8 *)&D_801C59FC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801C5A04) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801C59FC) = ((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_801C5A0C; -extern u16 D_801C5A0E; -extern u16 D_801C5A10; - -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_801C598C; -extern short D_801C5A14; -extern short D_801C5A16; -extern short D_801C5A18; -extern s16 D_801C5A04; -extern s16 D_801C5A06; -extern s16 D_801C5A08; -extern s16 D_801C59FC; -extern s16 D_801C59FE; -extern s16 D_801C5A00; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C5A0C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C5A0E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C5A10); - (*(s16 *)&D_801C5A14) = buf[0]; - (*(s16 *)&D_801C5A16) = buf[1]; - (*(s16 *)&D_801C5A18) = buf[2]; - D_801C5A04 = D_80114F30 + buf[0]; - D_801C598C = 0; - D_801C5A06 = D_80114F34 + buf[1]; - D_801C5A08 = D_80114F38 + buf[2]; - D_801C59FC = D_80114F24 + buf[0]; - D_801C59FE = D_80114F28 + buf[1]; - D_801C5A00 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801C59AC; -extern SV4 D_801C59B4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C59B4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801C59AC = 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_801C59B4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C59B4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801C59AC) = 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_801C59B4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801C59D4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801C59D4; - 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_801C598C; -extern s16 D_801C7EDC; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801C598C = D_801C598C + 1; - if (D_801C598C >= 0x1F) { - D_801C7EDC = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801C598C; -extern s16 D_801C7EDC; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801C598C = D_801C598C + 1; - if (0x18 < D_801C598C) { - func_8012A4BC(); - D_801C7EDC = 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_801C598C; -extern void (*D_801C59D0)(void); -extern short D_801C5A14; -extern short D_801C5A16; -extern short D_801C5A18; -extern s16 D_801C7EDC; - -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_801C598C = D_801C598C + 1; - if (D_801C598C >= 0x19) { - if (D_801C59D0 != 0) { - (*D_801C59D0)(); - } else { - D_80114F30 = D_80114F30 + D_801C5A14; - D_80114F34 = D_80114F34 + D_801C5A16; - D_80114F38 = D_80114F38 + D_801C5A18; - D_80114F24 = D_80114F24 + D_801C5A14; - D_80114F28 = D_80114F28 + D_801C5A16; - D_80114F2C = D_80114F2C + D_801C5A18; - func_8012A4BC(); - } - D_801C7EDC = 0; - } -} - - - -extern void (*D_80186F38[])(void); - -void func_8017BE60(void *a0) { - D_80186F38[*(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) */ - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017BEBC); - -extern void ReadRotMatrix(void *a0); -extern void PushMatrix(void); -extern void func_8004974C(void *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void PopMatrix(void); -void func_8017C294(u16 *a0, void *a1) { - s32 mat[8]; - s32 buf[8]; - s16 sv[4]; - ReadRotMatrix((void *)mat); - PushMatrix(); - sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); - sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); - sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); - func_8004974C((void *)mat, (void *)buf); - ApplyMatrixSV((void *)buf, (void *)sv, a1); - PopMatrix(); -} - - -int func_8017C338(short *param_1, short *param_2, short *param_3, int param_4) { - register int i2o __asm__("$5"); - register int i4o __asm__("$9"); - short sVar1; int rx, rz, uVar5; - i4o = param_2[1]; - __asm__ __volatile__("" : : "r"(i4o)); - i2o = param_1[1]; uVar5 = 0; - if (i2o >= i4o) { - rx = param_1[0] - i2o * (param_2[0] - param_1[0]); - rz = param_1[2] - i2o * (param_2[2] - param_1[2]); - } else { - register int den __asm__("$3"); - int p2x = param_2[0], p2z = param_2[2]; - den = i2o - i4o; - rx = p2x + i4o * (p2x - param_1[0]) / den; - rz = p2z + i4o * (p2z - param_1[2]) / den; - } - if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } - else i2o = -0x7fff; - *param_3 = (short)i2o; - if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } - else i2o = -0x7fff; - param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; - if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } - if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } - if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } - if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } - return uVar5; -} - - -extern void ReadGeomOffset(s32 *a0, s32 *a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8004921C(s32 a0, s32 a1); -void func_8017C530(s32 a0, s32 a1) { - s32 ofx; - s32 ofy; - s32 sxy; - s32 p; - ReadGeomOffset(&ofx, &ofy); - func_8004921C(0, 0); - RotTransPers(a0, a1, &sxy, &p); - func_8004921C(ofx, ofy); -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017C59C); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017D468); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017D72C); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017D93C); - - -extern void func_8001C214(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern M2C_UNK D_80183884; -extern M2C_UNK D_801891AC; - -void func_8017DBF4(void *arg0) { - void *temp_v1; - - func_8001C214(M2C_FIELD(arg0, void **, 0x20), &D_801891AC); - func_8012A828(arg0, &D_80183884); - M2C_FIELD(arg0, s16 *, 2) = 3; - M2C_FIELD(arg0, u16 *, 6) = (u16) M2C_FIELD(arg0, u16 *, 0xDC); - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(arg0, u16 *, 0xE) = (u16) M2C_FIELD(arg0, u16 *, 0xDE); - M2C_FIELD(arg0, u16 *, 0x5C) = (u16) (M2C_FIELD(arg0, u16 *, 0x5C) & 0x77FF); - M2C_FIELD(temp_v1, u16 *, 0x2C) = (u16) (M2C_FIELD(temp_v1, u16 *, 0x2C) & 0xFFEF); - M2C_FIELD(arg0, s32 *, 0x1C) = 0; -} - - - -// @class: schedule -// @stuck: none — MATCH (pending byte-gate); pure store sequence, gcc -O2 schedules a0/a1 materialization - -extern void func_8012A828(s32 a0, void *a1); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80174784(void); -extern M2C_UNK D_80183884; - -void func_8017DC78(int param_1) { - unsigned short uVar1; - - func_8012A828(param_1, &D_80183884); - *(short *)(param_1 + 2) = 4; - *(short *)(param_1 + 0x34) = 0; - *(int *)(param_1 + 0x1c) = 0x1e; - uVar1 = *(unsigned short *)(*(int *)(param_1 + 0x20) + 0x12); - *(short *)(param_1 + 0xe8) = 0; - *(int *)(param_1 + 0xe0) = 0x400000; - *(int *)(param_1 + 0xe4) = 0; - *(short *)(param_1 + 0xea) = uVar1; - func_8002D4C8(0x49e, 0); - func_8002D4C8(0x4a2, 0); - func_80174784(); -} - - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern void func_8001D0E8(s32, s32, s32); -extern void func_8012A828(s32 a0, void *a1); - - -void func_8017DCF8(s32 arg0) { - - extern u8 D_80188970; - extern u8 D_80186FC4; - extern s32 D_80186FB0[]; - extern u8 D_80186F6C; - extern u8 D_80186F5C; - register s32 param_1 __asm__("$16") = arg0; - register s32 iVar1 __asm__("$17"); - s32 ret; - s32 iVar2; - - ret = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(param_1 + 0x20) = ret; - iVar1 = ret; - if (ret == 0) { - ((void (*)(s32))func_8012CAE4)(param_1); - } else { - ((void (*)(s32, void *))func_8001C214)(iVar1, &D_80188970); - func_8001D0E8(iVar1, 0x104, 0x190); - *(u16 *)(iVar1 + 0x1c) = 0x1c00; - *(u16 *)(iVar1 + 0x1a) = 0x1c00; - *(u16 *)(iVar1 + 0x18) = 0x1c00; - *(u16 *)(iVar1 + 0x2c) = *(u16 *)(iVar1 + 0x2c) | 0x10; - *(u16 *)(param_1 + 0x76) = 4; - *(s32 *)(param_1 + 0x78) = (s32)&D_80186FC4; - *(u16 *)(param_1 + 0xdc) = *(u16 *)(param_1 + 6); - *(u16 *)(param_1 + 0xde) = *(u16 *)(param_1 + 0xe); - ((void (*)(s32, s32))func_8012A828)(param_1, D_80186FB0[*(s16 *)(param_1 + 0x76)]); - *(u16 *)(param_1 + 2) = 1; - if (*(s16 *)(param_1 + 0x70) == 4) { - *(s32 *)(param_1 + 0x58) = (s32)&D_80186F6C; - } else { - *(s32 *)(param_1 + 0x58) = (s32)&D_80186F5C; - } - iVar2 = *(s32 *)(param_1 + 0x20); - *(u32 *)(param_1 + 0x58) = *(u32 *)(param_1 + 0x58) | 0x60000000; - *(u16 *)(iVar2 + 0x1c) = 0x1c00; - *(u16 *)(iVar2 + 0x1a) = 0x1c00; - *(u16 *)(iVar2 + 0x18) = 0x1c00; - *(u16 *)(param_1 + 0x5e) = 0; - *(u16 *)(param_1 + 0x5c) = *(u16 *)(param_1 + 0x5c) | 0x8800; - *(u16 *)(param_1 + 6) = *(u16 *)(param_1 + 0xdc); - *(u16 *)(param_1 + 0xe) = *(u16 *)(param_1 + 0xde); - } -} - - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold; (unsigned)(field-1)<2 forces sltiu not slti) - -extern void func_8017D72C(); -extern void (*D_80187028[])(); - -void func_8017DE38(int param_1) -{ - if (((unsigned int)(*(unsigned short *)(param_1 + 2) - 1) < 2) && - ((*(unsigned short *)(param_1 + 0x5c) & 1) != 0)) { - func_8017D72C(); - } else { - D_80187028[*(unsigned short *)(param_1 + 2)](); - } -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017DEB0); - - -extern void (*D_80187050[])(void); - -void func_8017E0A4(void *a0) { - D_80187050[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern Blk8 D_80187014; - -void func_8017E0E0(s32 a0) { - if (*(s16 *)((s32)a0 + 0x70) == 4) { - *(Blk8 *)((s32)a0 + 0x50) = D_80187014; - } -} - - - -// @class: struct -// @stuck: none — MATCH; int *p=&D_801270DC + deref for both load AND store forces addiu-base in $s1 (callee-saved), reused via 0x0($s1) — direct global ref re-materializes lui per access -extern void func_8012BD14(s32 a0); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8017DC78(int param_1); - -extern int D_801270DC; -extern s32 D_80126D50; - -void func_8017E124(int param_1) { - int v; - int *p = &D_801270DC; - - if (*p == 0) { - if (((int (*)(int))func_8012BD14)(param_1) < 0x4001) { - v = func_8012E544(0x161); - if (v != 0) { - *(short *)(v + 0xfc) = 1; - *(short *)(v + 0xfe) = 3 - *(short *)(param_1 + 0x70); - } - *p = 1; - *(int *)(param_1 + 0x1c) = 0x1e; - } - } else { - ((void (*)(int))func_8012BEE8)(param_1); - if (*(int *)(param_1 + 0x1c) == 0 && D_80126D50 == 0 && - ((int (*)(int))func_8012BD14)(param_1) < 0x241) { - func_8017DC78(param_1); - } - } -} - - - -// @class: remat -// @stuck: none — MATCH. Key idiom: D_801270C8 read+write via a pointer var (s32 *p = &D_801270C8; *p+=1; *p>=4) forces gcc to materialize the symbol address ONCE (lui+addiu %lo into one reg) and reuse it for both lw and sw, vs two separate %lo-folded lui's from `D_801270C8 += 1`. Also 0x34 field is lhu (u16) not lh. - -extern s32 D_801270C8; -extern s32 D_801270CC; -extern u8 D_80189450; -extern M2C_UNK D_80183884; - -extern void func_8017D468(void *arg0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8001C214(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern s32 func_801747AC(s32 a0); - -void func_8017E1FC(s32 arg0) { - s32 temp; - s32 *p; - - if (*(u16 *)(arg0 + 0x34) == 0) { - temp = *(s32 *)(arg0 + 0xE4) + *(s32 *)(arg0 + 0xE0); - *(s32 *)(arg0 + 0xE8) = *(s32 *)(arg0 + 0xE8) + temp; - *(s32 *)(arg0 + 0xE4) = temp; - *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = *(s16 *)(arg0 + 0xEA); - func_8017D468((void *)arg0); - if (((s32 (*)(void *))func_8012BEE8)((void *)arg0) != 0) { - *(s16 *)(arg0 + 0x34) = 1; - ((void (*)(s32, void *))func_8001C214)(*(s32 *)(arg0 + 0x20), &D_80189450); - ((void (*)(void *, void *))func_8012A828)((void *)arg0, &D_80183884); - ((void (*)(void))func_801747AC)(); - p = &D_801270C8; - *p += 1; - if (*p >= 4) { - D_801270CC = 2; - } - } - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins; key lever: §3-T4 branch-polarity invert >=0x30 → OR-block falls through, AND-block is branch target with lui hoisted to delay slot) - -extern void func_8012AD80(s32 a0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C218(void *a0); - -void func_8017E2C8(int param_1) -{ - int iVar1; - - ((void (*)(void))func_8012AD80)(); - if (*(int *)(param_1 + 0x1c) >= 0x30) { - *(unsigned int *)(*(int *)(param_1 + 0x20) + 4) = - *(unsigned int *)(*(int *)(param_1 + 0x20) + 4) | 0x80000000; - } else { - *(unsigned int *)(*(int *)(param_1 + 0x20) + 4) = - *(unsigned int *)(*(int *)(param_1 + 0x20) + 4) & 0x7fffffff; - } - *(short *)(*(int *)(param_1 + 0x20) + 0x10) = - *(short *)(*(int *)(param_1 + 0x20) + 0x10) + 0x17; - *(short *)(*(int *)(param_1 + 0x20) + 0x12) = - *(short *)(*(int *)(param_1 + 0x20) + 0x12) + 0x43; - *(short *)(*(int *)(param_1 + 0x20) + 0x14) = - *(short *)(*(int *)(param_1 + 0x20) + 0x14) + 0x58; - iVar1 = func_8012BEE8(param_1); - if (iVar1 != 0) { - ((void (*)(int))func_8012C218)(param_1); - } - return; -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017E394); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017E448); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017E4F4); - - -extern void (*D_80189458[])(void); - -void func_8017E578(void *a0) { - D_80189458[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017E5B4); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017E630); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017E724); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017E8A0); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017EA68); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017EB64); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017EC48); - - -extern void (*D_801894B8[])(void); - -void func_8017ED0C(void *a0) { - D_801894B8[*(u8 *)((s32)a0 + 0x15)](); -} - - - -// @class: plumbing -// @stuck: none — MATCH (simple two-call wrapper, $s0 holds param across calls by default regalloc) - -extern void func_8017EEE0(void *arg0); -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_800167B8(s32 a0); - -s32 func_8017ED48(s32 param_1) -{ - ((void (*)(void *, s32))func_8016EDEC)(func_8017EEE0, 0x1000000); - func_800167B8(0); - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - return 0; -} - - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017ED98(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_801894C0[])(void); - -void func_8017EDBC(void *a0) { - D_801894C0[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8017F184(void *arg0); - -s32 func_8017EDF8(s32 param_1) { - ((void (*)(void *, s32))func_8016EDEC)((void *)func_8017F184, 0x1000000); - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - *(s32 *)(param_1 + 0x28) = 10; - 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_8017EE44(u8 *a0) { - if (--(*(s32 *)(a0 + 0x28)) == -1) { - func_8002D4C8(0x1C, 0); - func_8001BFD0(); - func_8002D4C8(0x1D, 0); - func_800D0C48(2); - func_800D1E28(); - *(u8 *)(a0 + 0x15) += 1; - } - return 0; -} - - -extern void func_800D1EBC(void); - void func_8017EEC0(void) { - func_800D1EBC(); - } - - - -extern void (*D_80189638[])(void); - -void func_8017EEE0(void *a0) { - D_80189638[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017EF1C); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017EF58); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017EFDC); - - -// @class: plumbing -// @stuck: none — MATCH (param_1 survives across func_8016F0E4 → lands in $s0; passed to func_80165770) - -extern void func_8016F0E4(void); -extern void func_80165770(void); -extern void func_80175414(s32); - -void func_8017F14C(s32 param_1) -{ - func_8016F0E4(); - ((void (*)(s32))func_80165770)(param_1); - ((void (*)(void))func_80175414)(); -} - - - -extern void (*D_80189648[])(void); - -void func_8017F184(void *a0) { - D_80189648[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017F1C0); - - -// @class: plumbing -// @stuck: none — MATCH (expected); simple call + conditional u8 increment - -extern s32 func_80171B4C(s32 a0, s32 a1); - -void func_8017F204(int param_1) -{ - if (func_80171B4C(param_1, 0x2) != 0) { - *(unsigned char *)(param_1 + 0x214) += 1; - } - return; -} - - -extern void func_8016F0E4(void); - void func_8017F248(void) { - ((s32 (*)(void))func_8016F0E4)(); - } - - - -extern void (*D_80189654[])(void); - -void func_8017F268(void *a0) { - D_80189654[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017F2A4); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017F344); - - -extern s32 func_801399F0(s32 a0); -extern void func_80139914(s32 a0); - -void func_8017F3C0(u8 *a0) { - if (func_801399F0(*(s32 *)(a0 + 0x198)) != 0) { - func_80139914(*(s32 *)(a0 + 0x198)); - *(u8 *)(a0 + 0x214) = *(u8 *)(a0 + 0x214) + 1; - } -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017F414); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017F458); - - -extern void (*D_80189690[])(void); - -void func_8017F480(void *a0) { - D_80189690[*(u8 *)((s32)a0 + 0x215)](); -} - - -extern s16 func_80171AB0(s32 a0, void *a1); -extern void func_80171928(void *a0); -void func_8017F4BC(s32 a0) { - - extern void *D_80189694; - if (func_80171AB0(a0, &D_80189694) == 0) { - func_80171928((void *)a0); - } -} - - - -extern void (*D_8018A05C[])(void); - -void func_8017F500(void *a0) { - D_8018A05C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017F53C); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017F638); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017F710); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017F7D0); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017F8C0); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017FB5C); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017FC04); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017FCC0); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017FCFC); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017FD64); - -extern void (*D_8018A1F8[])(void); - -void func_8017FF78(void *a0) { - D_8018A1F8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8017FFB4); - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_801800F4); - - -extern s32 D_801C7EC0; - -void func_80180174(void) { - D_801C7EC0 = 1; -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80180188); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_801802D8); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80180320); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_801803AC); - - -extern void (*D_8018A20C[])(void); - -void func_80180420(void *a0) { - D_8018A20C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8018045C); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80180528); - -extern void (*D_8018A214[])(void); - -void func_8018055C(void *a0) { - D_8018A214[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80180598); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80180654); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80180694); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_801806DC); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80180728); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_801808B8); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_801809E4); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80180D54); - -extern void (*D_8018A22C[])(void); - -void func_80180F30(void *a0) { - D_8018A22C[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void (*D_8018A240[])(void); - -void func_80180F6C(void *a0) { - D_8018A240[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80180FA8); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80181040); - -extern void (*D_8018A248[])(void); - -void func_801810A8(void *a0) { - D_8018A248[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_801810E4); - -extern void (*D_8018A250[])(void); - -void func_801813D4(void *a0) { - D_8018A250[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80181410); - -extern void (*D_8018A258[])(void); - -void func_8018155C(void *a0) { - D_8018A258[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void (*D_8018A264[])(void); - -void func_80181598(void *a0) { - D_8018A264[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_801815D4); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_801816E4); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80181770); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_801817CC); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80181854); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80181918); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_801819D0); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80181A70); - -void func_80181B80(void *a0) { - *(short *)((char *)a0 + 0x2) = 1; - } - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80181B8C); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80181BB0); - -extern void (*D_8018A26C[])(void); - -void func_80181C68(void *a0) { - D_8018A26C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80181CA4); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80181D98); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80181F5C); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80181FAC); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_801820AC); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80182290); - - -extern void (*D_8018A2F4[])(void); - -void func_801822D0(void *a0) { - D_8018A2F4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8018230C); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_801824D0); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_801824FC); - -extern void (*D_8018A32C[])(void); - -void func_80182670(void *a0) { - D_8018A32C[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void (*D_8018A40C[])(void); - -void func_801826AC(void *a0) { - D_8018A40C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_801826E8); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_801827B4); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8018287C); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80182990); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80182A00); - -s32 func_80182A70(void) { - return 0x2; - } - - - -// @class: struct -// @stuck: none — MATCH expected; param_1 survives jal in $s0, table fp-call with %lo-fold -extern void func_80182EF8(u8 *a0); -extern void (*D_8018A454[])(int); - -void func_80182A78(int param_1) -{ - ((void (*)(void))func_80182EF8)(); - D_8018A454[*(unsigned short *)(param_1 + 2)](param_1); -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80182AC4); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80182B30); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80182B90); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80182CB8); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80182EF8); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80182F64); - -extern s32 func_8012AD50(void *a0); - void func_80183034(void) { - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80183054); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_801831A0); - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_801831E8); - -extern void func_80183278(void); - void func_80183258(s32 *a0) { - *(s16 *)((s32)a0 + 0xFE) = 0; - func_80183278(); - } - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_80183278); - -extern void (*D_8018A488[])(void); - -void func_801832C0(void *a0) { - D_8018A488[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_8012AD50(void *a0); - void func_801832FC(void) { - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017A4AC", func_8018331C); - - - diff --git a/src/ov_SC01_080/ov_SC01_080_jr_8017AE2C.c b/src/ov_SC01_080/ov_SC01_080_jr_8017AE2C.c new file mode 100644 index 000000000..e57d6a6f2 --- /dev/null +++ b/src/ov_SC01_080/ov_SC01_080_jr_8017AE2C.c @@ -0,0 +1,4303 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80185A90; +extern u8 D_80185A00; +extern u8 D_801859DC; +extern u8 D_801859B8; +extern u8 D_80185A6C; +extern u8 D_80185A48; +extern u8 D_80185A24; +extern u8 D_80185994; +extern void func_80145934(void); +extern u8 D_80185B20; +extern u8 D_80185AFC; +extern u8 D_80185AD8; +extern u8 D_80185AB4; +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_80184F18[]; +extern unsigned char D_80184F48[]; +extern unsigned char D_80184F98[]; +extern unsigned char D_80184FC8[]; +extern unsigned char D_80184FF8[]; +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(void); +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_80185048[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80185110[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80185198[]; +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_801851A0; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801C4888; +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_801C488C; +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_801851D0; +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 void 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_80185278[])(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_8018529C[])(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_8018528C; +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_801852B0[])(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_801852BC[]; +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_801852CC[])(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_801852E4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801852D4; +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_801852F8[])(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_80185314[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80185304; +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_80185328[])(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_8018533C[])(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_80185350; +extern void (*D_80185378[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80185358; +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_801853C4[])(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_801853C8[])(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(void *a0); +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_8018582C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018583C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801C48C0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80185864[])(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_80185844; +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_80185854; +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_801858A4[])(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_801858AC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80185878; +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_801858B8[])(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_80185888; +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_801C48C8; +extern s32 D_801C48D4; +extern s32 D_801C48D8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801858F4[])(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_801858C8[]; +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_801C48D0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80185B44[])(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_80185964[]; +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_80185BE8[])(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_80185D3C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80185B58; +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_80185D44[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80185B68; +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_80185B88; +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_80185D4C[])(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(void); +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_80185D74[])(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_80185D80[])(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_80185BF4[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80185E24; +extern void func_8015D380(s32 a0); +extern unsigned char D_80184F08[]; +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_80185E38[]; +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_80185E74[]; +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_80185EBC; +extern u16 D_80185EBE; +extern u16 D_80185EC0; +extern s32 D_80185EC4; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80185ECC; +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_80185BD8; +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_80185F50[]; +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_80186000[])(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_80186030[]; +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_80186094; +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_801C48E0[]; +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_801860B8[])(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_801C4938[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80186100[])(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_801860F0; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801C4190[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_80186108[])(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_8018615C[])(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_80186124; +extern s16 D_80186158; +extern s16 D_80186156; +extern s16 D_80186154; +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_80186168[])(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_801C4998; +extern u8 D_801C4999; +extern u8 D_801C499A; +extern u8 D_801C499B; +extern u8 D_801C499C; +extern u8 D_801C499D; +extern u8 D_801C499E; +extern u8 D_801C499F; +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_80186178[])(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_801C49D8; +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_801861BC[])(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_80186238[]; +extern s32 D_80186258[]; +extern u8 D_801862D4[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801862F4[]; +extern u8 D_80186314[]; +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_801863B0[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018642C[])(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_801C41A0; +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_80186438[])(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_80186440[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80186508[])(void); +extern void func_80166618(void *a0); +extern void (*D_80186518[])(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_80186528[])(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_80186534[])(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_80186494[]; +extern u8 D_801864A8[]; +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_8018654C[])(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_80186554[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018655C[])(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_80186564[])(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_8018656C[])(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_80186574[])(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_8018657C[])(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_80186630[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80186638[])(void); +extern void func_80169F00(void *a0); +extern char D_801865E8[]; +extern char D_801865A8[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80186670[])(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_8018667C[])(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_801866C4[])(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_80186740[])(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_801C4CF8; +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_80186734[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80186778[]; +extern unsigned short D_80186780[]; +extern unsigned short D_80186788[]; +extern unsigned char D_801C4D00[]; +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_801C4CF8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80186790[])(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_801C4E34; +extern M2C_UNK D_801C4E38; +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_801C4DC0; +extern void (*D_801867C0[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801C4E3C[]; +extern u8 D_801C4E44[]; +extern u8 D_801C4DF4[]; +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_801867C8[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801867E4[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801867EC[])(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_80186854[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801867F8; +extern u8 D_80186804; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80186888[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80186890[])(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_801868E4[])(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_80186918[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80186908[]; +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_80186934; +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); +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_801869AC[])(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_801869B4[])(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_801869BC[])(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_801869C4[])(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_801869CC[])(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_801869D4[])(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_801869E0[])(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_801869EC[])(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_801869F8[])(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_80186A08[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80186A18[])(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_80186A20[])(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_80186A28[])(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_80186A30[])(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_80186A38[])(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_80186A40[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80186A48[])(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_80186A50[])(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_80186A58[])(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_80186A60[])(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_80186A68[])(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_80186A70[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80186A78[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80186A80[])(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_80186A88[])(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_80186A90[])(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_80186A98[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80186AA0[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80186AA8[])(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_80186AB0[])(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_80186AB8[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80186AC0[])(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_80186AC8[])(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_80186B0C[])(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_80186AD0; +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_80186B3C[])(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_80186B78[])(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(s32); +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_80186BD0[])(); +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_80186BE0[])(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_80186BE8[])(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_80186D50[])(); +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_80186D5C[])(); +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_801C43E8; +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 int func_801789AC(void); +extern s16 D_801C7EDC; +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_801C5578; +extern short D_801C7F4C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801C59A4; +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_801C59CC; +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_801C5988; +extern s32 func_8017A3B0(void); +extern short D_801C59C4; +extern short D_801C59C0; +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_801C7EA8; +extern s16 D_801C7EAA; +extern s16 D_801C7EB4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801C7EA8; + + 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_801C7EB4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801C7EA8+0xC == &D_801C7EB4; 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_801C7EA8 + 0xC)) < 0x101) { + D_801C7EA8 = 0; + D_801C7EAA = 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_801C7EB4); + 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_801C7EA8 + 0xC)) < 0x101) { + D_801C7EA8 = 0; + D_801C7EAA = 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_801C5A04; + extern s16 D_801C5A06; + extern s16 D_801C5A08; + extern s16 D_801C59FC; + extern s16 D_801C59FE; + extern s16 D_801C5A00; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C5A04, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C5A06, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C5A08, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C59FC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C59FE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C5A00, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801C598C; +extern u16 D_801C5A0C; +extern u16 D_801C5A0E; +extern u16 D_801C5A10; +extern s16 D_801C7EDC; + +void func_8017B1D8(void) { + func_8012A418(); + D_801C7EDC = 0; + D_801C598C = 0; + D_801C5A0C = D_80126B5E; + D_801C5A0E = D_80126B62; + D_801C5A10 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80186E98[]; + extern s16 D_801C5A04; + extern s16 D_801C59FC; + 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_80186E98[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80186E98[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C5A04; + s16 *p78C = &D_801C59FC; + *(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_801C7EDC = 1; + D_801C598C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C59AC; + extern SV4_8017B368 D_801C59B4; + extern s16 D_801C5A04; + extern s16 D_801C59FC; + extern u16 D_80186E98; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801C59AC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801C59B4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80186E98)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80186E98)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801C5A04) = loc0; + (*(SV4_8017B368 *)&D_801C59FC) = loc1; + D_801C7EDC = 1; + D_801C598C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80186E98[]; + extern s16 D_801C5A04; + extern s16 D_801C5A06; + extern s16 D_801C5A08; + extern s16 D_801C59FC; + extern s16 D_801C59FE; + extern s16 D_801C5A00; + 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_80186E98[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80186E98[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C5A04; + s16 *p78C = &D_801C59FC; + *(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_801C5A06; + v798 = D_801C5A08; + v78C = *p78C; + v78E = D_801C59FE; + v790 = D_801C5A00; + __asm__ __volatile__(""); + D_801C7EDC = 1; + D_801C598C = 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_801C598C; +extern s16 D_801C5A04; +extern s16 D_801C5A06; +extern s16 D_801C5A08; +extern s16 D_801C59FC; +extern s16 D_801C59FE; +extern s16 D_801C5A00; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801C598C = 0; + D_801C5A04 = (s16) D_80114F30; + D_801C5A06 = (s16) D_80114F34; + D_801C5A08 = (s16) D_80114F38; + D_801C59FC = (s16) D_80114F24; + D_801C59FE = (s16) D_80114F28; + D_801C5A00 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801C5A1C; +extern s16 D_801C5A1E; +extern s16 D_801C5A20; +extern s16 D_801C5A24; +extern s16 D_801C5A26; +extern s16 D_801C5A28; + +void func_8017B824(void) { + D_801C5A1C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801C5A1E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801C5A20 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801C5A24 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801C5A26 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801C5A28 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801C5A1C; +extern s16 D_801C5A1E; +extern s16 D_801C5A20; +extern s16 D_801C5A24; +extern s16 D_801C5A26; +extern s16 D_801C5A28; + +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_801C5A1C; + D_80114F34 = D_801C5A1E; + D_80114F38 = D_801C5A20; + D_80114F24 = D_801C5A24; + D_80114F28 = D_801C5A26; + D_80114F2C = D_801C5A28; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801C5A04), src[8..15] -> (*(S8_8017B8E8 *)&D_801C59FC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801C5A04) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801C59FC) = ((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_801C5A0C; +extern u16 D_801C5A0E; +extern u16 D_801C5A10; + +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_801C598C; +extern short D_801C5A14; +extern short D_801C5A16; +extern short D_801C5A18; +extern s16 D_801C5A04; +extern s16 D_801C5A06; +extern s16 D_801C5A08; +extern s16 D_801C59FC; +extern s16 D_801C59FE; +extern s16 D_801C5A00; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C5A0C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C5A0E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C5A10); + (*(s16 *)&D_801C5A14) = buf[0]; + (*(s16 *)&D_801C5A16) = buf[1]; + (*(s16 *)&D_801C5A18) = buf[2]; + D_801C5A04 = D_80114F30 + buf[0]; + D_801C598C = 0; + D_801C5A06 = D_80114F34 + buf[1]; + D_801C5A08 = D_80114F38 + buf[2]; + D_801C59FC = D_80114F24 + buf[0]; + D_801C59FE = D_80114F28 + buf[1]; + D_801C5A00 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801C59AC; +extern SV4 D_801C59B4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C59B4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801C59AC = 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_801C59B4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C59B4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801C59AC) = 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_801C59B4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801C59D4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801C59D4; + 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_801C598C; +extern s16 D_801C7EDC; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801C598C = D_801C598C + 1; + if (D_801C598C >= 0x1F) { + D_801C7EDC = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801C598C; +extern s16 D_801C7EDC; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801C598C = D_801C598C + 1; + if (0x18 < D_801C598C) { + func_8012A4BC(); + D_801C7EDC = 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_801C598C; +extern void (*D_801C59D0)(void); +extern short D_801C5A14; +extern short D_801C5A16; +extern short D_801C5A18; +extern s16 D_801C7EDC; + +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_801C598C = D_801C598C + 1; + if (D_801C598C >= 0x19) { + if (D_801C59D0 != 0) { + (*D_801C59D0)(); + } else { + D_80114F30 = D_80114F30 + D_801C5A14; + D_80114F34 = D_80114F34 + D_801C5A16; + D_80114F38 = D_80114F38 + D_801C5A18; + D_80114F24 = D_80114F24 + D_801C5A14; + D_80114F28 = D_80114F28 + D_801C5A16; + D_80114F2C = D_80114F2C + D_801C5A18; + func_8012A4BC(); + } + D_801C7EDC = 0; + } +} + + + +extern void (*D_80186F38[])(void); + +void func_8017BE60(void *a0) { + D_80186F38[*(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) */ + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017BEBC); + +extern void ReadRotMatrix(void *a0); +extern void PushMatrix(void); +extern void func_8004974C(void *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern void PopMatrix(void); +void func_8017C294(u16 *a0, void *a1) { + s32 mat[8]; + s32 buf[8]; + s16 sv[4]; + ReadRotMatrix((void *)mat); + PushMatrix(); + sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); + sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); + sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); + func_8004974C((void *)mat, (void *)buf); + ApplyMatrixSV((void *)buf, (void *)sv, a1); + PopMatrix(); +} + + +int func_8017C338(short *param_1, short *param_2, short *param_3, int param_4) { + register int i2o __asm__("$5"); + register int i4o __asm__("$9"); + short sVar1; int rx, rz, uVar5; + i4o = param_2[1]; + __asm__ __volatile__("" : : "r"(i4o)); + i2o = param_1[1]; uVar5 = 0; + if (i2o >= i4o) { + rx = param_1[0] - i2o * (param_2[0] - param_1[0]); + rz = param_1[2] - i2o * (param_2[2] - param_1[2]); + } else { + register int den __asm__("$3"); + int p2x = param_2[0], p2z = param_2[2]; + den = i2o - i4o; + rx = p2x + i4o * (p2x - param_1[0]) / den; + rz = p2z + i4o * (p2z - param_1[2]) / den; + } + if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } + else i2o = -0x7fff; + *param_3 = (short)i2o; + if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } + else i2o = -0x7fff; + param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; + if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } + if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } + if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } + if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } + return uVar5; +} + + +extern void ReadGeomOffset(s32 *a0, s32 *a1); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +extern void func_8004921C(s32 a0, s32 a1); +void func_8017C530(s32 a0, s32 a1) { + s32 ofx; + s32 ofy; + s32 sxy; + s32 p; + ReadGeomOffset(&ofx, &ofy); + func_8004921C(0, 0); + RotTransPers(a0, a1, &sxy, &p); + func_8004921C(ofx, ofy); +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017C59C); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017D468); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017D72C); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017D93C); + + +extern void func_8001C214(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); +extern M2C_UNK D_80183884; +extern M2C_UNK D_801891AC; + +void func_8017DBF4(void *arg0) { + void *temp_v1; + + func_8001C214(M2C_FIELD(arg0, void **, 0x20), &D_801891AC); + func_8012A828(arg0, &D_80183884); + M2C_FIELD(arg0, s16 *, 2) = 3; + M2C_FIELD(arg0, u16 *, 6) = (u16) M2C_FIELD(arg0, u16 *, 0xDC); + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(arg0, u16 *, 0xE) = (u16) M2C_FIELD(arg0, u16 *, 0xDE); + M2C_FIELD(arg0, u16 *, 0x5C) = (u16) (M2C_FIELD(arg0, u16 *, 0x5C) & 0x77FF); + M2C_FIELD(temp_v1, u16 *, 0x2C) = (u16) (M2C_FIELD(temp_v1, u16 *, 0x2C) & 0xFFEF); + M2C_FIELD(arg0, s32 *, 0x1C) = 0; +} + + + +// @class: schedule +// @stuck: none — MATCH (pending byte-gate); pure store sequence, gcc -O2 schedules a0/a1 materialization + +extern void func_8012A828(s32 a0, void *a1); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80174784(void); +extern M2C_UNK D_80183884; + +void func_8017DC78(int param_1) { + unsigned short uVar1; + + func_8012A828(param_1, &D_80183884); + *(short *)(param_1 + 2) = 4; + *(short *)(param_1 + 0x34) = 0; + *(int *)(param_1 + 0x1c) = 0x1e; + uVar1 = *(unsigned short *)(*(int *)(param_1 + 0x20) + 0x12); + *(short *)(param_1 + 0xe8) = 0; + *(int *)(param_1 + 0xe0) = 0x400000; + *(int *)(param_1 + 0xe4) = 0; + *(short *)(param_1 + 0xea) = uVar1; + func_8002D4C8(0x49e, 0); + func_8002D4C8(0x4a2, 0); + func_80174784(); +} + + + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_8001D0E8(s32, s32, s32); +extern void func_8012A828(s32 a0, void *a1); + + +void func_8017DCF8(s32 arg0) { + + extern u8 D_80188970; + extern u8 D_80186FC4; + extern s32 D_80186FB0[]; + extern u8 D_80186F6C; + extern u8 D_80186F5C; + register s32 param_1 __asm__("$16") = arg0; + register s32 iVar1 __asm__("$17"); + s32 ret; + s32 iVar2; + + ret = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)(param_1 + 0x20) = ret; + iVar1 = ret; + if (ret == 0) { + ((void (*)(s32))func_8012CAE4)(param_1); + } else { + ((void (*)(s32, void *))func_8001C214)(iVar1, &D_80188970); + func_8001D0E8(iVar1, 0x104, 0x190); + *(u16 *)(iVar1 + 0x1c) = 0x1c00; + *(u16 *)(iVar1 + 0x1a) = 0x1c00; + *(u16 *)(iVar1 + 0x18) = 0x1c00; + *(u16 *)(iVar1 + 0x2c) = *(u16 *)(iVar1 + 0x2c) | 0x10; + *(u16 *)(param_1 + 0x76) = 4; + *(s32 *)(param_1 + 0x78) = (s32)&D_80186FC4; + *(u16 *)(param_1 + 0xdc) = *(u16 *)(param_1 + 6); + *(u16 *)(param_1 + 0xde) = *(u16 *)(param_1 + 0xe); + ((void (*)(s32, s32))func_8012A828)(param_1, D_80186FB0[*(s16 *)(param_1 + 0x76)]); + *(u16 *)(param_1 + 2) = 1; + if (*(s16 *)(param_1 + 0x70) == 4) { + *(s32 *)(param_1 + 0x58) = (s32)&D_80186F6C; + } else { + *(s32 *)(param_1 + 0x58) = (s32)&D_80186F5C; + } + iVar2 = *(s32 *)(param_1 + 0x20); + *(u32 *)(param_1 + 0x58) = *(u32 *)(param_1 + 0x58) | 0x60000000; + *(u16 *)(iVar2 + 0x1c) = 0x1c00; + *(u16 *)(iVar2 + 0x1a) = 0x1c00; + *(u16 *)(iVar2 + 0x18) = 0x1c00; + *(u16 *)(param_1 + 0x5e) = 0; + *(u16 *)(param_1 + 0x5c) = *(u16 *)(param_1 + 0x5c) | 0x8800; + *(u16 *)(param_1 + 6) = *(u16 *)(param_1 + 0xdc); + *(u16 *)(param_1 + 0xe) = *(u16 *)(param_1 + 0xde); + } +} + + + +// @class: struct +// @stuck: none — MATCH (array-of-fnptr %lo-fold; (unsigned)(field-1)<2 forces sltiu not slti) + +extern void func_8017D72C(); +extern void (*D_80187028[])(); + +void func_8017DE38(int param_1) +{ + if (((unsigned int)(*(unsigned short *)(param_1 + 2) - 1) < 2) && + ((*(unsigned short *)(param_1 + 0x5c) & 1) != 0)) { + func_8017D72C(); + } else { + D_80187028[*(unsigned short *)(param_1 + 2)](); + } +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017DEB0); + + +extern void (*D_80187050[])(void); + +void func_8017E0A4(void *a0) { + D_80187050[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern Blk8 D_80187014; + +void func_8017E0E0(s32 a0) { + if (*(s16 *)((s32)a0 + 0x70) == 4) { + *(Blk8 *)((s32)a0 + 0x50) = D_80187014; + } +} + + + +// @class: struct +// @stuck: none — MATCH; int *p=&D_801270DC + deref for both load AND store forces addiu-base in $s1 (callee-saved), reused via 0x0($s1) — direct global ref re-materializes lui per access +extern void func_8012BD14(s32 a0); +extern s32 func_8012E544(s32 a0); +extern s32 func_8012BEE8(s32 a0); +extern void func_8017DC78(int param_1); + +extern int D_801270DC; +extern s32 D_80126D50; + +void func_8017E124(int param_1) { + int v; + int *p = &D_801270DC; + + if (*p == 0) { + if (((int (*)(int))func_8012BD14)(param_1) < 0x4001) { + v = func_8012E544(0x161); + if (v != 0) { + *(short *)(v + 0xfc) = 1; + *(short *)(v + 0xfe) = 3 - *(short *)(param_1 + 0x70); + } + *p = 1; + *(int *)(param_1 + 0x1c) = 0x1e; + } + } else { + ((void (*)(int))func_8012BEE8)(param_1); + if (*(int *)(param_1 + 0x1c) == 0 && D_80126D50 == 0 && + ((int (*)(int))func_8012BD14)(param_1) < 0x241) { + func_8017DC78(param_1); + } + } +} + + + +// @class: remat +// @stuck: none — MATCH. Key idiom: D_801270C8 read+write via a pointer var (s32 *p = &D_801270C8; *p+=1; *p>=4) forces gcc to materialize the symbol address ONCE (lui+addiu %lo into one reg) and reuse it for both lw and sw, vs two separate %lo-folded lui's from `D_801270C8 += 1`. Also 0x34 field is lhu (u16) not lh. + +extern s32 D_801270C8; +extern s32 D_801270CC; +extern u8 D_80189450; +extern M2C_UNK D_80183884; + +extern void func_8017D468(void *arg0); +extern s32 func_8012BEE8(s32 a0); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); +extern s32 func_801747AC(s32 a0); + +void func_8017E1FC(s32 arg0) { + s32 temp; + s32 *p; + + if (*(u16 *)(arg0 + 0x34) == 0) { + temp = *(s32 *)(arg0 + 0xE4) + *(s32 *)(arg0 + 0xE0); + *(s32 *)(arg0 + 0xE8) = *(s32 *)(arg0 + 0xE8) + temp; + *(s32 *)(arg0 + 0xE4) = temp; + *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = *(s16 *)(arg0 + 0xEA); + func_8017D468((void *)arg0); + if (((s32 (*)(void *))func_8012BEE8)((void *)arg0) != 0) { + *(s16 *)(arg0 + 0x34) = 1; + ((void (*)(s32, void *))func_8001C214)(*(s32 *)(arg0 + 0x20), &D_80189450); + ((void (*)(void *, void *))func_8012A828)((void *)arg0, &D_80183884); + ((void (*)(void))func_801747AC)(); + p = &D_801270C8; + *p += 1; + if (*p >= 4) { + D_801270CC = 2; + } + } + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins; key lever: §3-T4 branch-polarity invert >=0x30 → OR-block falls through, AND-block is branch target with lui hoisted to delay slot) + +extern void func_8012AD80(s32 a0); +extern s32 func_8012BEE8(s32 a0); +extern void func_8012C218(void *a0); + +void func_8017E2C8(int param_1) +{ + int iVar1; + + ((void (*)(void))func_8012AD80)(); + if (*(int *)(param_1 + 0x1c) >= 0x30) { + *(unsigned int *)(*(int *)(param_1 + 0x20) + 4) = + *(unsigned int *)(*(int *)(param_1 + 0x20) + 4) | 0x80000000; + } else { + *(unsigned int *)(*(int *)(param_1 + 0x20) + 4) = + *(unsigned int *)(*(int *)(param_1 + 0x20) + 4) & 0x7fffffff; + } + *(short *)(*(int *)(param_1 + 0x20) + 0x10) = + *(short *)(*(int *)(param_1 + 0x20) + 0x10) + 0x17; + *(short *)(*(int *)(param_1 + 0x20) + 0x12) = + *(short *)(*(int *)(param_1 + 0x20) + 0x12) + 0x43; + *(short *)(*(int *)(param_1 + 0x20) + 0x14) = + *(short *)(*(int *)(param_1 + 0x20) + 0x14) + 0x58; + iVar1 = func_8012BEE8(param_1); + if (iVar1 != 0) { + ((void (*)(int))func_8012C218)(param_1); + } + return; +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017E394); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017E448); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017E4F4); + + +extern void (*D_80189458[])(void); + +void func_8017E578(void *a0) { + D_80189458[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017E5B4); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017E630); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017E724); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017E8A0); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017EA68); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017EB64); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017EC48); + + +extern void (*D_801894B8[])(void); + +void func_8017ED0C(void *a0) { + D_801894B8[*(u8 *)((s32)a0 + 0x15)](); +} + + + +// @class: plumbing +// @stuck: none — MATCH (simple two-call wrapper, $s0 holds param across calls by default regalloc) + +extern void func_8017EEE0(void *arg0); +extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); +extern void func_800167B8(s32 a0); + +s32 func_8017ED48(s32 param_1) +{ + ((void (*)(void *, s32))func_8016EDEC)(func_8017EEE0, 0x1000000); + func_800167B8(0); + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + return 0; +} + + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017ED98(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_801894C0[])(void); + +void func_8017EDBC(void *a0) { + D_801894C0[*(u8 *)((s32)a0 + 0x15)](); +} + + + +extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); +extern void func_8017F184(void *arg0); + +s32 func_8017EDF8(s32 param_1) { + ((void (*)(void *, s32))func_8016EDEC)((void *)func_8017F184, 0x1000000); + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + *(s32 *)(param_1 + 0x28) = 10; + 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_8017EE44(u8 *a0) { + if (--(*(s32 *)(a0 + 0x28)) == -1) { + func_8002D4C8(0x1C, 0); + func_8001BFD0(); + func_8002D4C8(0x1D, 0); + func_800D0C48(2); + func_800D1E28(); + *(u8 *)(a0 + 0x15) += 1; + } + return 0; +} + + +extern void func_800D1EBC(void); + void func_8017EEC0(void) { + func_800D1EBC(); + } + + + +extern void (*D_80189638[])(void); + +void func_8017EEE0(void *a0) { + D_80189638[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017EF1C); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017EF58); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017EFDC); + + +// @class: plumbing +// @stuck: none — MATCH (param_1 survives across func_8016F0E4 → lands in $s0; passed to func_80165770) + +extern void func_8016F0E4(void); +extern void func_80165770(void); +extern void func_80175414(s32); + +void func_8017F14C(s32 param_1) +{ + func_8016F0E4(); + ((void (*)(s32))func_80165770)(param_1); + ((void (*)(void))func_80175414)(); +} + + + +extern void (*D_80189648[])(void); + +void func_8017F184(void *a0) { + D_80189648[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017F1C0); + + +// @class: plumbing +// @stuck: none — MATCH (expected); simple call + conditional u8 increment + +extern s32 func_80171B4C(s32 a0, s32 a1); + +void func_8017F204(int param_1) +{ + if (func_80171B4C(param_1, 0x2) != 0) { + *(unsigned char *)(param_1 + 0x214) += 1; + } + return; +} + + +extern void func_8016F0E4(void); + void func_8017F248(void) { + ((s32 (*)(void))func_8016F0E4)(); + } + + + +extern void (*D_80189654[])(void); + +void func_8017F268(void *a0) { + D_80189654[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017F2A4); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017F344); + + +extern s32 func_801399F0(s32 a0); +extern void func_80139914(s32 a0); + +void func_8017F3C0(u8 *a0) { + if (func_801399F0(*(s32 *)(a0 + 0x198)) != 0) { + func_80139914(*(s32 *)(a0 + 0x198)); + *(u8 *)(a0 + 0x214) = *(u8 *)(a0 + 0x214) + 1; + } +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017F414); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017F458); + + +extern void (*D_80189690[])(void); + +void func_8017F480(void *a0) { + D_80189690[*(u8 *)((s32)a0 + 0x215)](); +} + + +extern s16 func_80171AB0(s32 a0, void *a1); +extern void func_80171928(void *a0); +void func_8017F4BC(s32 a0) { + + extern void *D_80189694; + if (func_80171AB0(a0, &D_80189694) == 0) { + func_80171928((void *)a0); + } +} + + + +extern void (*D_8018A05C[])(void); + +void func_8017F500(void *a0) { + D_8018A05C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017F53C); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017F638); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017F710); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017F7D0); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017F8C0); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017FB5C); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017FC04); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017FCC0); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017FCFC); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017FD64); + +extern void (*D_8018A1F8[])(void); + +void func_8017FF78(void *a0) { + D_8018A1F8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017FFB4); + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801800F4); + + +extern s32 D_801C7EC0; + +void func_80180174(void) { + D_801C7EC0 = 1; +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80180188); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801802D8); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80180320); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801803AC); + + +extern void (*D_8018A20C[])(void); + +void func_80180420(void *a0) { + D_8018A20C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8018045C); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80180528); + +extern void (*D_8018A214[])(void); + +void func_8018055C(void *a0) { + D_8018A214[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80180598); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80180654); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80180694); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801806DC); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80180728); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801808B8); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801809E4); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80180D54); + +extern void (*D_8018A22C[])(void); + +void func_80180F30(void *a0) { + D_8018A22C[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void (*D_8018A240[])(void); + +void func_80180F6C(void *a0) { + D_8018A240[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80180FA8); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80181040); + +extern void (*D_8018A248[])(void); + +void func_801810A8(void *a0) { + D_8018A248[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801810E4); + +extern void (*D_8018A250[])(void); + +void func_801813D4(void *a0) { + D_8018A250[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80181410); + +extern void (*D_8018A258[])(void); + +void func_8018155C(void *a0) { + D_8018A258[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void (*D_8018A264[])(void); + +void func_80181598(void *a0) { + D_8018A264[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801815D4); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801816E4); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80181770); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801817CC); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80181854); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80181918); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801819D0); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80181A70); + +void func_80181B80(void *a0) { + *(short *)((char *)a0 + 0x2) = 1; + } + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80181B8C); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80181BB0); + +extern void (*D_8018A26C[])(void); + +void func_80181C68(void *a0) { + D_8018A26C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80181CA4); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80181D98); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80181F5C); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80181FAC); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801820AC); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80182290); + + +extern void (*D_8018A2F4[])(void); + +void func_801822D0(void *a0) { + D_8018A2F4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8018230C); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801824D0); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801824FC); + +extern void (*D_8018A32C[])(void); + +void func_80182670(void *a0) { + D_8018A32C[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void (*D_8018A40C[])(void); + +void func_801826AC(void *a0) { + D_8018A40C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801826E8); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801827B4); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8018287C); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80182990); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80182A00); + +s32 func_80182A70(void) { + return 0x2; + } + + + +// @class: struct +// @stuck: none — MATCH expected; param_1 survives jal in $s0, table fp-call with %lo-fold +extern void func_80182EF8(u8 *a0); +extern void (*D_8018A454[])(int); + +void func_80182A78(int param_1) +{ + ((void (*)(void))func_80182EF8)(); + D_8018A454[*(unsigned short *)(param_1 + 2)](param_1); +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80182AC4); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80182B30); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80182B90); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80182CB8); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80182EF8); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80182F64); + +extern s32 func_8012AD50(void *a0); + void func_80183034(void) { + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80183054); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801831A0); + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801831E8); + +extern void func_80183278(void); + void func_80183258(s32 *a0) { + *(s16 *)((s32)a0 + 0xFE) = 0; + func_80183278(); + } + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80183278); + +extern void (*D_8018A488[])(void); + +void func_801832C0(void *a0) { + D_8018A488[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern s32 func_8012AD50(void *a0); + void func_801832FC(void) { + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8018331C); + + + + diff --git a/src/ov_SC01_084/ov_SC01_084_jr_8017A4AC.c b/src/ov_SC01_084/ov_SC01_084_jr_8017A4AC.c index c050e69e7..858f43a6e 100644 --- a/src/ov_SC01_084/ov_SC01_084_jr_8017A4AC.c +++ b/src/ov_SC01_084/ov_SC01_084_jr_8017A4AC.c @@ -2968,633 +2968,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801C74AC; - extern s16 D_801C74AE; - extern s16 D_801C74B0; - extern s16 D_801C74A4; - extern s16 D_801C74A6; - extern s16 D_801C74A8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C74AC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C74AE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C74B0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C74A4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C74A6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C74A8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801C7434; -extern u16 D_801C74B4; -extern u16 D_801C74B6; -extern u16 D_801C74B8; -extern s16 D_801C7AB8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801C7AB8 = 0; - D_801C7434 = 0; - D_801C74B4 = D_80126B5E; - D_801C74B6 = D_80126B62; - D_801C74B8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018A18C[]; - extern s16 D_801C74AC; - extern s16 D_801C74A4; - 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_8018A18C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018A18C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C74AC; - s16 *p78C = &D_801C74A4; - *(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_801C7AB8 = 1; - D_801C7434 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C7454; - extern SV4_8017B368 D_801C745C; - extern s16 D_801C74AC; - extern s16 D_801C74A4; - extern u16 D_8018A18C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801C7454; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801C745C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018A18C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018A18C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801C74AC) = loc0; - (*(SV4_8017B368 *)&D_801C74A4) = loc1; - D_801C7AB8 = 1; - D_801C7434 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018A18C[]; - extern s16 D_801C74AC; - extern s16 D_801C74AE; - extern s16 D_801C74B0; - extern s16 D_801C74A4; - extern s16 D_801C74A6; - extern s16 D_801C74A8; - 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_8018A18C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018A18C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C74AC; - s16 *p78C = &D_801C74A4; - *(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_801C74AE; - v798 = D_801C74B0; - v78C = *p78C; - v78E = D_801C74A6; - v790 = D_801C74A8; - __asm__ __volatile__(""); - D_801C7AB8 = 1; - D_801C7434 = 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 s16 D_801C7434; - -void func_8017B7A8(void) -{ - - 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_801C74AC; - extern s16 D_801C74AE; - extern s16 D_801C74B0; - extern s16 D_801C74A4; - extern s16 D_801C74A6; - extern s16 D_801C74A8; - D_8012694C = 1; - D_801C7434 = 0; - D_801C74AC = (s16) D_80114F30; - D_801C74AE = (s16) D_80114F34; - D_801C74B0 = (s16) D_80114F38; - D_801C74A4 = (s16) D_80114F24; - D_801C74A6 = (s16) D_80114F28; - D_801C74A8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801C74C4; -extern s16 D_801C74C6; -extern s16 D_801C74C8; -extern s16 D_801C74CC; -extern s16 D_801C74CE; -extern s16 D_801C74D0; - -void func_8017B824(void) { - D_801C74C4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801C74C6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801C74C8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801C74CC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801C74CE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801C74D0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801C74C4; -extern s16 D_801C74C6; -extern s16 D_801C74C8; -extern s16 D_801C74CC; -extern s16 D_801C74CE; -extern s16 D_801C74D0; - -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_801C74C4; - D_80114F34 = D_801C74C6; - D_80114F38 = D_801C74C8; - D_80114F24 = D_801C74CC; - D_80114F28 = D_801C74CE; - D_80114F2C = D_801C74D0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801C74AC), src[8..15] -> (*(S8_8017B8E8 *)&D_801C74A4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - extern s16 D_801C74AC; - extern s16 D_801C74A4; - - (*(S8_8017B8E8 *)&D_801C74AC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801C74A4) = ((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_801C74B4; -extern u16 D_801C74B6; -extern u16 D_801C74B8; - -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 s16 D_801C7434; - -void func_8017B940(void) -{ - - extern u8 D_8012694C; - extern short D_801C74BC; - extern short D_801C74BE; - extern short D_801C74C0; - extern s16 D_801C74AC; - extern s16 D_801C74AE; - extern s16 D_801C74B0; - extern s16 D_801C74A4; - extern s16 D_801C74A6; - extern s16 D_801C74A8; - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C74B4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C74B6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C74B8); - (*(s16 *)&D_801C74BC) = buf[0]; - (*(s16 *)&D_801C74BE) = buf[1]; - (*(s16 *)&D_801C74C0) = buf[2]; - D_801C74AC = D_80114F30 + buf[0]; - D_801C7434 = 0; - D_801C74AE = D_80114F34 + buf[1]; - D_801C74B0 = D_80114F38 + buf[2]; - D_801C74A4 = D_80114F24 + buf[0]; - D_801C74A6 = D_80114F28 + buf[1]; - D_801C74A8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801C7454; -extern SV4 D_801C745C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C745C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801C7454 = 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_801C745C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C745C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801C7454) = 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_801C745C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801C747C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801C747C; - 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_801C7434; -extern s16 D_801C7AB8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801C7434 = D_801C7434 + 1; - if (D_801C7434 >= 0x1F) { - D_801C7AB8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801C7434; -extern s16 D_801C7AB8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801C7434 = D_801C7434 + 1; - if (0x18 < D_801C7434) { - func_8012A4BC(); - D_801C7AB8 = 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_801C7434; -extern void (*D_801C7478)(void); -extern short D_801C74BC; -extern short D_801C74BE; -extern short D_801C74C0; -extern s16 D_801C7AB8; - -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_801C7434 = D_801C7434 + 1; - if (D_801C7434 >= 0x19) { - if (D_801C7478 != 0) { - (*D_801C7478)(); - } else { - D_80114F30 = D_80114F30 + D_801C74BC; - D_80114F34 = D_80114F34 + D_801C74BE; - D_80114F38 = D_80114F38 + D_801C74C0; - D_80114F24 = D_80114F24 + D_801C74BC; - D_80114F28 = D_80114F28 + D_801C74BE; - D_80114F2C = D_80114F2C + D_801C74C0; - func_8012A4BC(); - } - D_801C7AB8 = 0; - } -} - - - -extern void (*D_8018A22C[])(void); - -void func_8017BE60(void *a0) { - D_8018A22C[*(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) */ - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017A4AC", func_8017BEBC); - - -extern void (*D_8018A264[])(void); - -void func_8017BEF8(void *a0) { - D_8018A264[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017A4AC", func_8017BF34); - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017A4AC", func_8017BF84); - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017A4AC", func_8017BFE0); - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017A4AC", func_8017C064); - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017A4AC", func_8017C1CC); - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017A4AC", func_8017C218); - - -extern void (*D_8018A278[])(void); - -void func_8017C524(void *a0) { - D_8018A278[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017A4AC", func_8017C560); - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017A4AC", func_8017C5A0); - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017A4AC", func_8017C610); - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017A4AC", func_8017C69C); - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017A4AC", func_8017C770); - - -extern void (*D_8018A28C[])(void); - -void func_8017C7C4(void *a0) { - D_8018A28C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017A4AC", func_8017C800); - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017A4AC", func_8017C8B4); - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017A4AC", func_8017C910); diff --git a/src/ov_SC01_084/ov_SC01_084_jr_8017AE2C.c b/src/ov_SC01_084/ov_SC01_084_jr_8017AE2C.c new file mode 100644 index 000000000..f7496a733 --- /dev/null +++ b/src/ov_SC01_084/ov_SC01_084_jr_8017AE2C.c @@ -0,0 +1,3532 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80188D84; +extern u8 D_80188CF4; +extern u8 D_80188CD0; +extern u8 D_80188CAC; +extern u8 D_80188D60; +extern u8 D_80188D3C; +extern u8 D_80188D18; +extern u8 D_80188C88; +extern void func_80145934(void); +extern u8 D_80188E14; +extern u8 D_80188DF0; +extern u8 D_80188DCC; +extern u8 D_80188DA8; +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_8018820C[]; +extern unsigned char D_8018823C[]; +extern unsigned char D_8018828C[]; +extern unsigned char D_801882BC[]; +extern unsigned char D_801882EC[]; +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(void); +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_8018833C[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80188404[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018848C[]; +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_80188494; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801C6330; +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_801C6334; +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_801884C4; +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 void 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_8018856C[])(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_80188590[])(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_80188580; +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_801885A4[])(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_801885B0[]; +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_801885C0[])(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_801885D8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801885C8; +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_801885EC[])(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_80188608[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801885F8; +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_8018861C[])(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_80188630[])(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_80188644; +extern void (*D_8018866C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018864C; +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_801886B8[])(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_801886BC[])(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(void *a0); +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_80188B20[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80188B30[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801C6368; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80188B58[])(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_80188B38; +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_80188B48; +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_80188B98[])(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_80188BA0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80188B6C; +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_80188BAC[])(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_80188B7C; +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_801C6370; +extern s32 D_801C637C; +extern s32 D_801C6380; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80188BE8[])(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_80188BBC[]; +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_801C6378; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80188E38[])(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_80188C58[]; +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_80188EDC[])(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_80189030[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80188E4C; +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_80189038[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80188E5C; +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_80188E7C; +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_80189040[])(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(void); +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_80189068[])(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_80189074[])(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_80188EE8[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80189118; +extern void func_8015D380(s32 a0); +extern unsigned char D_801881FC[]; +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_8018912C[]; +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_80189168[]; +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 (*D_801891A0[])(void); +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_801891B0; +extern u16 D_801891B2; +extern u16 D_801891B4; +extern s32 D_801891B8; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_801891C0; +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_80188ECC; +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_80189244[]; +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_801892F4[])(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_80189324[]; +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_80189388; +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_801C6388[]; +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_801893AC[])(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_801C63E0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_801893F4[])(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_801893E4; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801C5B60[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_801893FC[])(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_80189450[])(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_80189418; +extern s16 D_8018944C; +extern s16 D_8018944A; +extern s16 D_80189448; +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_8018945C[])(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_801C6440; +extern u8 D_801C6441; +extern u8 D_801C6442; +extern u8 D_801C6443; +extern u8 D_801C6444; +extern u8 D_801C6445; +extern u8 D_801C6446; +extern u8 D_801C6447; +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_8018946C[])(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_801C6480; +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_801894B0[])(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_8018952C[]; +extern s32 D_8018954C[]; +extern u8 D_801895C8[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801895E8[]; +extern u8 D_80189608[]; +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_801896A4[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80189720[])(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_801C5B70; +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_8018972C[])(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_80189734[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801897FC[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018980C[])(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_8018981C[])(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_80189828[])(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_80189788[]; +extern u8 D_8018979C[]; +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_80189840[])(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_80189848[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80189850[])(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_80189858[])(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_80189860[])(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_80189868[])(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_80189870[])(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_80189924[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018992C[])(void); +extern void func_80169F00(void *a0); +extern char D_801898DC[]; +extern char D_8018989C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80189964[])(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_80189970[])(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_801899B8[])(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_80189A34[])(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_801C67A0; +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_80189A28[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80189A6C[]; +extern unsigned short D_80189A74[]; +extern unsigned short D_80189A7C[]; +extern unsigned char D_801C67A8[]; +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_801C67A0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80189A84[])(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_801C68DC; +extern M2C_UNK D_801C68E0; +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_801C6868; +extern void (*D_80189AB4[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801C68E4[]; +extern u8 D_801C68EC[]; +extern u8 D_801C689C[]; +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_80189ABC[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80189AD8[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80189AE0[])(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_80189B48[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80189AEC; +extern u8 D_80189AF8; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80189B7C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80189B84[])(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_80189BD8[])(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_80189C0C[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80189BFC[]; +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_80189C28; +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); +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_80189CA0[])(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_80189CA8[])(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_80189CB0[])(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_80189CB8[])(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_80189CC0[])(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_80189CC8[])(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_80189CD4[])(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_80189CE0[])(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_80189CEC[])(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_80189CFC[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80189D0C[])(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_80189D14[])(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_80189D1C[])(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_80189D24[])(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_80189D2C[])(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_80189D34[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80189D3C[])(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_80189D44[])(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_80189D4C[])(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_80189D54[])(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_80189D5C[])(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_80189D64[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80189D6C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80189D74[])(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_80189D7C[])(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_80189D84[])(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_80189D8C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80189D94[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80189D9C[])(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_80189DA4[])(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_80189DAC[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80189DB4[])(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_80189DBC[])(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_80189E00[])(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_80189DC4; +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_80189E30[])(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_80189E6C[])(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(s32); +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_80189EC4[])(); +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_80189ED4[])(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_80189EDC[])(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_8018A044[])(); +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_8018A050[])(); +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_801C5DB8; +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 int func_801789AC(void); +extern s16 D_801C7AB8; +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_801C7020; +extern short D_801C7BF4; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801C744C; +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_801C7474; +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_801C7430; +extern s32 func_8017A3B0(void); +extern short D_801C746C; +extern short D_801C7468; +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_801C7808; +extern s16 D_801C780A; +extern s16 D_801C7814; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801C7808; + + 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_801C7814); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801C7808+0xC == &D_801C7814; 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_801C7808 + 0xC)) < 0x101) { + D_801C7808 = 0; + D_801C780A = 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_801C7814); + 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_801C7808 + 0xC)) < 0x101) { + D_801C7808 = 0; + D_801C780A = 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_801C74AC; + extern s16 D_801C74AE; + extern s16 D_801C74B0; + extern s16 D_801C74A4; + extern s16 D_801C74A6; + extern s16 D_801C74A8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C74AC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C74AE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C74B0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C74A4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C74A6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C74A8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801C7434; +extern u16 D_801C74B4; +extern u16 D_801C74B6; +extern u16 D_801C74B8; +extern s16 D_801C7AB8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801C7AB8 = 0; + D_801C7434 = 0; + D_801C74B4 = D_80126B5E; + D_801C74B6 = D_80126B62; + D_801C74B8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018A18C[]; + extern s16 D_801C74AC; + extern s16 D_801C74A4; + 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_8018A18C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018A18C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C74AC; + s16 *p78C = &D_801C74A4; + *(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_801C7AB8 = 1; + D_801C7434 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C7454; + extern SV4_8017B368 D_801C745C; + extern s16 D_801C74AC; + extern s16 D_801C74A4; + extern u16 D_8018A18C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801C7454; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801C745C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018A18C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018A18C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801C74AC) = loc0; + (*(SV4_8017B368 *)&D_801C74A4) = loc1; + D_801C7AB8 = 1; + D_801C7434 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018A18C[]; + extern s16 D_801C74AC; + extern s16 D_801C74AE; + extern s16 D_801C74B0; + extern s16 D_801C74A4; + extern s16 D_801C74A6; + extern s16 D_801C74A8; + 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_8018A18C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018A18C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C74AC; + s16 *p78C = &D_801C74A4; + *(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_801C74AE; + v798 = D_801C74B0; + v78C = *p78C; + v78E = D_801C74A6; + v790 = D_801C74A8; + __asm__ __volatile__(""); + D_801C7AB8 = 1; + D_801C7434 = 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 s16 D_801C7434; + +void func_8017B7A8(void) +{ + + 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_801C74AC; + extern s16 D_801C74AE; + extern s16 D_801C74B0; + extern s16 D_801C74A4; + extern s16 D_801C74A6; + extern s16 D_801C74A8; + D_8012694C = 1; + D_801C7434 = 0; + D_801C74AC = (s16) D_80114F30; + D_801C74AE = (s16) D_80114F34; + D_801C74B0 = (s16) D_80114F38; + D_801C74A4 = (s16) D_80114F24; + D_801C74A6 = (s16) D_80114F28; + D_801C74A8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801C74C4; +extern s16 D_801C74C6; +extern s16 D_801C74C8; +extern s16 D_801C74CC; +extern s16 D_801C74CE; +extern s16 D_801C74D0; + +void func_8017B824(void) { + D_801C74C4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801C74C6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801C74C8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801C74CC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801C74CE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801C74D0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801C74C4; +extern s16 D_801C74C6; +extern s16 D_801C74C8; +extern s16 D_801C74CC; +extern s16 D_801C74CE; +extern s16 D_801C74D0; + +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_801C74C4; + D_80114F34 = D_801C74C6; + D_80114F38 = D_801C74C8; + D_80114F24 = D_801C74CC; + D_80114F28 = D_801C74CE; + D_80114F2C = D_801C74D0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801C74AC), src[8..15] -> (*(S8_8017B8E8 *)&D_801C74A4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + extern s16 D_801C74AC; + extern s16 D_801C74A4; + + (*(S8_8017B8E8 *)&D_801C74AC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801C74A4) = ((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_801C74B4; +extern u16 D_801C74B6; +extern u16 D_801C74B8; + +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 s16 D_801C7434; + +void func_8017B940(void) +{ + + extern u8 D_8012694C; + extern short D_801C74BC; + extern short D_801C74BE; + extern short D_801C74C0; + extern s16 D_801C74AC; + extern s16 D_801C74AE; + extern s16 D_801C74B0; + extern s16 D_801C74A4; + extern s16 D_801C74A6; + extern s16 D_801C74A8; + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C74B4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C74B6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C74B8); + (*(s16 *)&D_801C74BC) = buf[0]; + (*(s16 *)&D_801C74BE) = buf[1]; + (*(s16 *)&D_801C74C0) = buf[2]; + D_801C74AC = D_80114F30 + buf[0]; + D_801C7434 = 0; + D_801C74AE = D_80114F34 + buf[1]; + D_801C74B0 = D_80114F38 + buf[2]; + D_801C74A4 = D_80114F24 + buf[0]; + D_801C74A6 = D_80114F28 + buf[1]; + D_801C74A8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801C7454; +extern SV4 D_801C745C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C745C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801C7454 = 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_801C745C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C745C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801C7454) = 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_801C745C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801C747C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801C747C; + 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_801C7434; +extern s16 D_801C7AB8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801C7434 = D_801C7434 + 1; + if (D_801C7434 >= 0x1F) { + D_801C7AB8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801C7434; +extern s16 D_801C7AB8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801C7434 = D_801C7434 + 1; + if (0x18 < D_801C7434) { + func_8012A4BC(); + D_801C7AB8 = 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_801C7434; +extern void (*D_801C7478)(void); +extern short D_801C74BC; +extern short D_801C74BE; +extern short D_801C74C0; +extern s16 D_801C7AB8; + +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_801C7434 = D_801C7434 + 1; + if (D_801C7434 >= 0x19) { + if (D_801C7478 != 0) { + (*D_801C7478)(); + } else { + D_80114F30 = D_80114F30 + D_801C74BC; + D_80114F34 = D_80114F34 + D_801C74BE; + D_80114F38 = D_80114F38 + D_801C74C0; + D_80114F24 = D_80114F24 + D_801C74BC; + D_80114F28 = D_80114F28 + D_801C74BE; + D_80114F2C = D_80114F2C + D_801C74C0; + func_8012A4BC(); + } + D_801C7AB8 = 0; + } +} + + + +extern void (*D_8018A22C[])(void); + +void func_8017BE60(void *a0) { + D_8018A22C[*(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) */ + +INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017AE2C", func_8017BEBC); + + +extern void (*D_8018A264[])(void); + +void func_8017BEF8(void *a0) { + D_8018A264[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017AE2C", func_8017BF34); + +INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017AE2C", func_8017BF84); + +INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017AE2C", func_8017BFE0); + +INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017AE2C", func_8017C064); + +INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017AE2C", func_8017C1CC); + +INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017AE2C", func_8017C218); + + +extern void (*D_8018A278[])(void); + +void func_8017C524(void *a0) { + D_8018A278[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017AE2C", func_8017C560); + +INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017AE2C", func_8017C5A0); + +INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017AE2C", func_8017C610); + +INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017AE2C", func_8017C69C); + +INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017AE2C", func_8017C770); + + +extern void (*D_8018A28C[])(void); + +void func_8017C7C4(void *a0) { + D_8018A28C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017AE2C", func_8017C800); + +INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017AE2C", func_8017C8B4); + +INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017AE2C", func_8017C910); + diff --git a/src/ov_SC02_000/ov_SC02_000_jr_8017A4AC.c b/src/ov_SC02_000/ov_SC02_000_jr_8017A4AC.c index 17e9b3bfc..56f3d1504 100644 --- a/src/ov_SC02_000/ov_SC02_000_jr_8017A4AC.c +++ b/src/ov_SC02_000/ov_SC02_000_jr_8017A4AC.c @@ -2965,946 +2965,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801E7FDC; - extern s16 D_801E7FDE; - extern s16 D_801E7FE0; - extern s16 D_801E7FD4; - extern s16 D_801E7FD6; - extern s16 D_801E7FD8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801E7FDC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801E7FDE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801E7FE0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801E7FD4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801E7FD6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801E7FD8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801E7F64; -extern u16 D_801E7FE4; -extern u16 D_801E7FE6; -extern u16 D_801E7FE8; -extern s16 D_801E87BC; - -void func_8017B1D8(void) { - func_8012A418(); - D_801E87BC = 0; - D_801E7F64 = 0; - D_801E7FE4 = D_80126B5E; - D_801E7FE6 = D_80126B62; - D_801E7FE8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018E53C[]; - extern s16 D_801E7FDC; - extern s16 D_801E7FD4; - 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_8018E53C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018E53C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E7FDC; - s16 *p78C = &D_801E7FD4; - *(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_801E87BC = 1; - D_801E7F64 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801E7F84; - extern SV4_8017B368 D_801E7F8C; - extern s16 D_801E7FDC; - extern s16 D_801E7FD4; - extern u16 D_8018E53C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801E7F84; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801E7F8C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018E53C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018E53C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801E7FDC) = loc0; - (*(SV4_8017B368 *)&D_801E7FD4) = loc1; - D_801E87BC = 1; - D_801E7F64 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018E53C[]; - extern s16 D_801E7FDC; - extern s16 D_801E7FDE; - extern s16 D_801E7FE0; - extern s16 D_801E7FD4; - extern s16 D_801E7FD6; - extern s16 D_801E7FD8; - 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_8018E53C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018E53C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E7FDC; - s16 *p78C = &D_801E7FD4; - *(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_801E7FDE; - v798 = D_801E7FE0; - v78C = *p78C; - v78E = D_801E7FD6; - v790 = D_801E7FD8; - __asm__ __volatile__(""); - D_801E87BC = 1; - D_801E7F64 = 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_801E7F64; -extern s16 D_801E7FDC; -extern s16 D_801E7FDE; -extern s16 D_801E7FE0; -extern s16 D_801E7FD4; -extern s16 D_801E7FD6; -extern s16 D_801E7FD8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801E7F64 = 0; - D_801E7FDC = (s16) D_80114F30; - D_801E7FDE = (s16) D_80114F34; - D_801E7FE0 = (s16) D_80114F38; - D_801E7FD4 = (s16) D_80114F24; - D_801E7FD6 = (s16) D_80114F28; - D_801E7FD8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801E7FF4; -extern s16 D_801E7FF6; -extern s16 D_801E7FF8; -extern s16 D_801E7FFC; -extern s16 D_801E7FFE; -extern s16 D_801E8000; - -void func_8017B824(void) { - D_801E7FF4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801E7FF6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801E7FF8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801E7FFC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801E7FFE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801E8000 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801E7FF4; -extern s16 D_801E7FF6; -extern s16 D_801E7FF8; -extern s16 D_801E7FFC; -extern s16 D_801E7FFE; -extern s16 D_801E8000; - -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_801E7FF4; - D_80114F34 = D_801E7FF6; - D_80114F38 = D_801E7FF8; - D_80114F24 = D_801E7FFC; - D_80114F28 = D_801E7FFE; - D_80114F2C = D_801E8000; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801E7FDC), src[8..15] -> (*(S8_8017B8E8 *)&D_801E7FD4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801E7FDC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801E7FD4) = ((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_801E7FE4; -extern u16 D_801E7FE6; -extern u16 D_801E7FE8; - -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_801E7F64; -extern short D_801E7FEC; -extern short D_801E7FEE; -extern short D_801E7FF0; -extern s16 D_801E7FDC; -extern s16 D_801E7FDE; -extern s16 D_801E7FE0; -extern s16 D_801E7FD4; -extern s16 D_801E7FD6; -extern s16 D_801E7FD8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801E7FE4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801E7FE6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801E7FE8); - (*(s16 *)&D_801E7FEC) = buf[0]; - (*(s16 *)&D_801E7FEE) = buf[1]; - (*(s16 *)&D_801E7FF0) = buf[2]; - D_801E7FDC = D_80114F30 + buf[0]; - D_801E7F64 = 0; - D_801E7FDE = D_80114F34 + buf[1]; - D_801E7FE0 = D_80114F38 + buf[2]; - D_801E7FD4 = D_80114F24 + buf[0]; - D_801E7FD6 = D_80114F28 + buf[1]; - D_801E7FD8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801E7F84; -extern SV4 D_801E7F8C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801E7F8C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801E7F84 = 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_801E7F8C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801E7F8C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801E7F84) = 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_801E7F8C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801E7FAC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801E7FAC; - 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_801E7F64; -extern s16 D_801E87BC; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801E7F64 = D_801E7F64 + 1; - if (D_801E7F64 >= 0x1F) { - D_801E87BC = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801E7F64; -extern s16 D_801E87BC; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801E7F64 = D_801E7F64 + 1; - if (0x18 < D_801E7F64) { - func_8012A4BC(); - D_801E87BC = 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_801E7F64; -extern void (*D_801E7FA8)(void); -extern short D_801E7FEC; -extern short D_801E7FEE; -extern short D_801E7FF0; -extern s16 D_801E87BC; - -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_801E7F64 = D_801E7F64 + 1; - if (D_801E7F64 >= 0x19) { - if (D_801E7FA8 != 0) { - (*D_801E7FA8)(); - } else { - D_80114F30 = D_80114F30 + D_801E7FEC; - D_80114F34 = D_80114F34 + D_801E7FEE; - D_80114F38 = D_80114F38 + D_801E7FF0; - D_80114F24 = D_80114F24 + D_801E7FEC; - D_80114F28 = D_80114F28 + D_801E7FEE; - D_80114F2C = D_80114F2C + D_801E7FF0; - func_8012A4BC(); - } - D_801E87BC = 0; - } -} - - - -extern void (*D_8018E5DC[])(void); - -void func_8017BE60(void *a0) { - D_8018E5DC[*(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) */ - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017BEBC); - - -extern void (*D_8018E614[])(void); - -void func_8017BEF8(void *a0) { - D_8018E614[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017BF34); - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017BF84); - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017BFE0); - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017C064); - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017C1CC); - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017C218); - - -extern void (*D_8018E628[])(void); - -void func_8017C524(void *a0) { - D_8018E628[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017C560); - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017C5A0); - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017C610); - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017C69C); - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017C770); - - -extern void (*D_8018E63C[])(void); - -void func_8017C7C4(void *a0) { - D_8018E63C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017C800); - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017C8B4); - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017C910); - - -extern void (*D_8018E65C[])(void); - -void func_8017CA80(void *a0) { - D_8018E65C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017CABC); - -extern void func_80146C3C(void); -void func_8017CC80(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_8018E664[])(void); - -void func_8017CD14(void *a0) { - D_8018E664[*(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_8018E650; - -void func_8017CD50(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_8018E650, 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_8017CDF4(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; - } -} - - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017CE58); - -extern void ReadRotMatrix(void *a0); -extern void PushMatrix(void); -extern void func_8004974C(void *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void PopMatrix(void); -void func_8017D230(u16 *a0, void *a1) { - s32 mat[8]; - s32 buf[8]; - s16 sv[4]; - ReadRotMatrix((void *)mat); - PushMatrix(); - sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); - sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); - sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); - func_8004974C((void *)mat, (void *)buf); - ApplyMatrixSV((void *)buf, (void *)sv, a1); - PopMatrix(); -} - - -int func_8017D2D4(short *param_1, short *param_2, short *param_3, int param_4) { - register int i2o __asm__("$5"); - register int i4o __asm__("$9"); - short sVar1; int rx, rz, uVar5; - i4o = param_2[1]; - __asm__ __volatile__("" : : "r"(i4o)); - i2o = param_1[1]; uVar5 = 0; - if (i2o >= i4o) { - rx = param_1[0] - i2o * (param_2[0] - param_1[0]); - rz = param_1[2] - i2o * (param_2[2] - param_1[2]); - } else { - register int den __asm__("$3"); - int p2x = param_2[0], p2z = param_2[2]; - den = i2o - i4o; - rx = p2x + i4o * (p2x - param_1[0]) / den; - rz = p2z + i4o * (p2z - param_1[2]) / den; - } - if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } - else i2o = -0x7fff; - *param_3 = (short)i2o; - if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } - else i2o = -0x7fff; - param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; - if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } - if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } - if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } - if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } - return uVar5; -} - - -extern void ReadGeomOffset(s32 *a0, s32 *a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8004921C(s32 a0, s32 a1); -void func_8017D4CC(s32 a0, s32 a1) { - s32 ofx; - s32 ofy; - s32 sxy; - s32 p; - ReadGeomOffset(&ofx, &ofy); - func_8004921C(0, 0); - RotTransPers(a0, a1, &sxy, &p); - func_8004921C(ofx, ofy); -} - - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017D538); - - -// @class: regalloc-order -// @stuck: none — MATCH (relocation-masked, 70 ins). pins $s0/$s1 + precomputed a0v anchored in a zero-byte barrier fix the prologue schedule. - -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s32 ratan2(s32, s32); -extern void func_8012B0B4(SVEC *, s32, s32); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012ADE4(u8 *a0); - -s32 func_8017E404(s32 param_1, s32 param_2) -{ - register s32 p1 __asm__("$16") = param_1; - register s32 p2 __asm__("$17") = param_2; - SVEC in; - SVEC out; - SVEC buf; - s32 d; - s32 ang; - u16 px, pz; - s32 a0v; - - a0v = p1 + 4; - __asm__ __volatile__("" : : "r"(p2), "r"(a0v)); - if (((s32 (*)(s32, s32))func_8012BC60)(a0v, p2 + 4) >= 0x1000) { - return 0; - } - ang = ratan2((s32)*(s16 *)(p1 + 0xe) - (s32)*(s16 *)(p2 + 0xe), - (s32)*(s16 *)(p2 + 6) - (s32)*(s16 *)(p1 + 6)); - func_8012B0B4(&buf, (ang - 0x400) & 0xfff, 0x41); - d = *(s32 *)&buf; - px = *(u16 *)(p2 + 6); - out.vx = px; - out.vy = *(u16 *)(p2 + 0xa); - pz = *(u16 *)(p2 + 0xe); - out.vz = pz; - out.vx = px + d; - out.vz = pz + (d >> 16); - in.vx = *(u16 *)(p1 + 0x3a); - in.vy = *(u16 *)(p1 + 0x3e); - in.vz = *(u16 *)(p1 + 0x42); - if ((((s32 (*)(SVEC *, SVEC *, s32))func_8012CEB0)(&in, &out, 0) & 0x2000) == 0) { - ((void (*)(s32))func_8012ADE4)(p1); - return 1; - } - *(s16 *)(p1 + 6) = out.vx; - *(s16 *)(p1 + 0xa) = out.vy; - *(s16 *)(p1 + 0xe) = out.vz; - return 1; -} - - - -// @class: struct -// @stuck: none — MATCH expected (modeled on byte-proven DEFINE_func_8012E504 idiom: D_801202A0 base, 0x6480 end, 0x10C stride for-loop) - -extern u8 D_801202A0[]; -extern s32 func_8017E404(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); - -void func_8017E51C(s32 a0) { - s32 p; - s32 end; - s32 v; - v = *(u16 *)a0; - p = (s32)D_801202A0; - end = (s32)D_801202A0 + 0x6480; - for (; p != end; p += 0x10C) { - if (p != a0) { - if (*(u16 *)p == v) { - if (func_8017E404(a0, p) != 0) { - break; - } - } - } - } - ((void (*)(s32))func_8012AE00)(p); -} - - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017E5AC); - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017E6D8); - - -extern s16 D_8018E6CC; -extern s16 D_8018E6D0; -extern u16 D_80126B5E; -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 ratan2(s32, s32); -s32 func_8017E958(s32 param_1, s32 param_2) { - s32 local_20[2] = {0x3c100, 0x51000}; - s32 iVar1; - s32 iVar2; - if ((s32)((u32)*(u16 *)(param_1 + 0x70) << 0x10) >> 0x18 == 4) { - iVar1 = ((s32 (*)(s32, void *))func_80013478)(param_1 + 4, &D_8018E6CC); - if (param_2 == 1) { - iVar2 = ratan2((s32)*(s16 *)(param_1 + 0xe) - (s32)D_8018E6D0, - (s32)D_8018E6CC - (s32)*(s16 *)(param_1 + 6)); - if ((((u32)iVar2 - 0x400U) & 0xfff) - 0x381 < 0xff && 0x2df < (*(s16 *)&D_80126B5E) && - 0x3c100 < iVar1) { return 1; } - } - if (local_20[param_2] < iVar1 && *(s32 *)(param_1 + 0xe8) < iVar1) { - *(s32 *)(param_1 + 0xe8) = iVar1; return 1; - } - *(s32 *)(param_1 + 0xe8) = iVar1; - } - return 0; -} - - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017EA84); - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017F390); - - -// @class: plumbing -// @stuck: none — MATCH expected; simple param-survives-call store sequence - -extern void func_8012A828(s32 a0, void *a1); -extern char D_801A668C[]; - -void func_8017F5A0(int param_1) -{ - *(short *)(param_1 + 2) = 2; - *(short *)(param_1 + 0x34) = 0; - func_8012A828(param_1, &D_801A668C); - *(int *)(param_1 + 0x1c) = 0x14; -} - - - -// @class: plumbing -// @stuck: none — MATCH expected; param_1 survives call in $s0 naturally (single global allocno) - -extern void func_8012A828(s32 a0, void *a1); -extern s32 D_801A72C4; - -void func_8017F5E4(s32 param_1) { - *(s16 *)(param_1 + 2) = 2; - *(s16 *)(param_1 + 0x34) = 3; - func_8012A828(param_1, &D_801A72C4); - *(s32 *)(param_1 + 0x1c) = 0x1e; -} - - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017F62C); - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017F950); - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017A4AC", func_8017FB24); - -DEFINE_func_8017FC9C() /* dedup: shared engine-core @0x8017FC9C (src/shared) */ - - - diff --git a/src/ov_SC02_000/ov_SC02_000_jr_8017AE2C.c b/src/ov_SC02_000/ov_SC02_000_jr_8017AE2C.c new file mode 100644 index 000000000..b5546bbc9 --- /dev/null +++ b/src/ov_SC02_000/ov_SC02_000_jr_8017AE2C.c @@ -0,0 +1,3842 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018D134; +extern u8 D_8018D0A4; +extern u8 D_8018D080; +extern u8 D_8018D05C; +extern u8 D_8018D110; +extern u8 D_8018D0EC; +extern u8 D_8018D0C8; +extern u8 D_8018D038; +extern void func_80145934(void); +extern u8 D_8018D1C4; +extern u8 D_8018D1A0; +extern u8 D_8018D17C; +extern u8 D_8018D158; +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_8018C5BC[]; +extern unsigned char D_8018C5EC[]; +extern unsigned char D_8018C63C[]; +extern unsigned char D_8018C66C[]; +extern unsigned char D_8018C69C[]; +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(void); +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_8018C6EC[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018C7B4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018C83C[]; +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_8018C844; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801E6E60; +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_801E6E64; +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_8018C874; +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 void 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_8018C91C[])(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_8018C940[])(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_8018C930; +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_8018C954[])(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_8018C960[]; +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_8018C970[])(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_8018C988[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018C978; +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_8018C99C[])(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_8018C9B8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018C9A8; +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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; +extern void (*D_8018CA1C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018C9FC; +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_8018CA68[])(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_8018CA6C[])(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(void *a0); +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_8018CED0[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018CEE0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801E6E98; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018CF08[])(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_8018CEE8; +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_8018CEF8; +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_8018CF48[])(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_8018CF50[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018CF1C; +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_8018CF5C[])(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_8018CF2C; +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_801E6EA0; +extern s32 D_801E6EAC; +extern s32 D_801E6EB0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018CF98[])(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_8018CF6C[]; +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_801E6EA8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018D1E8[])(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_8018D008[]; +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_8018D28C[])(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_8018D3E0[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018D1FC; +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_8018D3E8[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018D20C; +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_8018D22C; +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_8018D3F0[])(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(void); +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_8018D418[])(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_8018D424[])(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_8018D298[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018D4C8; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018C5AC[]; +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_8018D4DC[]; +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_8018D518[]; +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_8018D560; +extern u16 D_8018D562; +extern u16 D_8018D564; +extern s32 D_8018D568; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +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_8018D27C; +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_8018D5F4[]; +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_8018D6A4[])(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_8018D6D4[]; +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_8018D738; +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_801E6EB8[]; +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_8018D75C[])(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_801E6F10[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018D7A4[])(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_8018D794; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801E63B4[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_8018D7AC[])(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_8018D800[])(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_8018D7C8; +extern s16 D_8018D7FC; +extern s16 D_8018D7FA; +extern s16 D_8018D7F8; +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_8018D80C[])(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_801E6F70; +extern u8 D_801E6F71; +extern u8 D_801E6F72; +extern u8 D_801E6F73; +extern u8 D_801E6F74; +extern u8 D_801E6F75; +extern u8 D_801E6F76; +extern u8 D_801E6F77; +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_8018D81C[])(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_801E6FB0; +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_8018D860[])(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_8018D8DC[]; +extern s32 D_8018D8FC[]; +extern u8 D_8018D978[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018D998[]; +extern u8 D_8018D9B8[]; +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_8018DA54[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018DAD0[])(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_801E63C4; +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_8018DADC[])(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_8018DAE4[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018DBAC[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018DBBC[])(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_8018DBCC[])(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_8018DBD8[])(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_8018DB38[]; +extern u8 D_8018DB4C[]; +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_8018DBF0[])(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_8018DBF8[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018DC00[])(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_8018DC08[])(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_8018DC10[])(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_8018DC18[])(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_8018DC20[])(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_8018DCD4[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018DCDC[])(void); +extern void func_80169F00(void *a0); +extern char D_8018DC8C[]; +extern char D_8018DC4C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018DD14[])(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_8018DD20[])(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_8018DD68[])(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_8018DDE4[])(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_801E72D0; +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_8018DDD8[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018DE1C[]; +extern unsigned short D_8018DE24[]; +extern unsigned short D_8018DE2C[]; +extern unsigned char D_801E72D8[]; +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_801E72D0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018DE34[])(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_801E740C; +extern M2C_UNK D_801E7410; +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_801E7398; +extern void (*D_8018DE64[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801E7414[]; +extern u8 D_801E741C[]; +extern u8 D_801E73CC[]; +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_8018DE6C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018DE88[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018DE90[])(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_8018DEF8[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018DE9C; +extern u8 D_8018DEA8; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018DF2C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018DF34[])(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_8018DF88[])(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_8018DFBC[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018DFAC[]; +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_8018DFD8; +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); +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_8018E050[])(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_8018E058[])(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_8018E060[])(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_8018E068[])(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_8018E070[])(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_8018E078[])(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_8018E084[])(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_8018E090[])(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_8018E09C[])(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_8018E0AC[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018E0BC[])(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_8018E0C4[])(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_8018E0CC[])(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_8018E0D4[])(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_8018E0DC[])(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_8018E0E4[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018E0EC[])(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_8018E0F4[])(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_8018E0FC[])(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_8018E104[])(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_8018E10C[])(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_8018E114[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018E11C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018E124[])(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_8018E12C[])(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_8018E134[])(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_8018E13C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018E144[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018E14C[])(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_8018E154[])(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_8018E15C[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018E164[])(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_8018E16C[])(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_8018E1B0[])(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_8018E174; +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_8018E1E0[])(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_8018E21C[])(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(s32); +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_8018E274[])(); +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_8018E284[])(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_8018E28C[])(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_8018E3F4[])(); +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_8018E400[])(); +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_801E660C; +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 int func_801789AC(void); +extern s16 D_801E87BC; +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_801E7B50; +extern short D_801E8864; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801E7F7C; +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_801E7FA4; +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_801E7F60; +extern s32 func_8017A3B0(void); +extern short D_801E7F9C; +extern short D_801E7F98; +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_801E8758; +extern s16 D_801E875A; +extern s16 D_801E8764; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801E8758; + + 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_801E8764); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801E8758+0xC == &D_801E8764; 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_801E8758 + 0xC)) < 0x101) { + D_801E8758 = 0; + D_801E875A = 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_801E8764); + 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_801E8758 + 0xC)) < 0x101) { + D_801E8758 = 0; + D_801E875A = 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_801E7FDC; + extern s16 D_801E7FDE; + extern s16 D_801E7FE0; + extern s16 D_801E7FD4; + extern s16 D_801E7FD6; + extern s16 D_801E7FD8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801E7FDC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801E7FDE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801E7FE0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801E7FD4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801E7FD6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801E7FD8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801E7F64; +extern u16 D_801E7FE4; +extern u16 D_801E7FE6; +extern u16 D_801E7FE8; +extern s16 D_801E87BC; + +void func_8017B1D8(void) { + func_8012A418(); + D_801E87BC = 0; + D_801E7F64 = 0; + D_801E7FE4 = D_80126B5E; + D_801E7FE6 = D_80126B62; + D_801E7FE8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018E53C[]; + extern s16 D_801E7FDC; + extern s16 D_801E7FD4; + 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_8018E53C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018E53C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801E7FDC; + s16 *p78C = &D_801E7FD4; + *(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_801E87BC = 1; + D_801E7F64 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801E7F84; + extern SV4_8017B368 D_801E7F8C; + extern s16 D_801E7FDC; + extern s16 D_801E7FD4; + extern u16 D_8018E53C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801E7F84; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801E7F8C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018E53C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018E53C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801E7FDC) = loc0; + (*(SV4_8017B368 *)&D_801E7FD4) = loc1; + D_801E87BC = 1; + D_801E7F64 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018E53C[]; + extern s16 D_801E7FDC; + extern s16 D_801E7FDE; + extern s16 D_801E7FE0; + extern s16 D_801E7FD4; + extern s16 D_801E7FD6; + extern s16 D_801E7FD8; + 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_8018E53C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018E53C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801E7FDC; + s16 *p78C = &D_801E7FD4; + *(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_801E7FDE; + v798 = D_801E7FE0; + v78C = *p78C; + v78E = D_801E7FD6; + v790 = D_801E7FD8; + __asm__ __volatile__(""); + D_801E87BC = 1; + D_801E7F64 = 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_801E7F64; +extern s16 D_801E7FDC; +extern s16 D_801E7FDE; +extern s16 D_801E7FE0; +extern s16 D_801E7FD4; +extern s16 D_801E7FD6; +extern s16 D_801E7FD8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801E7F64 = 0; + D_801E7FDC = (s16) D_80114F30; + D_801E7FDE = (s16) D_80114F34; + D_801E7FE0 = (s16) D_80114F38; + D_801E7FD4 = (s16) D_80114F24; + D_801E7FD6 = (s16) D_80114F28; + D_801E7FD8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801E7FF4; +extern s16 D_801E7FF6; +extern s16 D_801E7FF8; +extern s16 D_801E7FFC; +extern s16 D_801E7FFE; +extern s16 D_801E8000; + +void func_8017B824(void) { + D_801E7FF4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801E7FF6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801E7FF8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801E7FFC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801E7FFE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801E8000 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801E7FF4; +extern s16 D_801E7FF6; +extern s16 D_801E7FF8; +extern s16 D_801E7FFC; +extern s16 D_801E7FFE; +extern s16 D_801E8000; + +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_801E7FF4; + D_80114F34 = D_801E7FF6; + D_80114F38 = D_801E7FF8; + D_80114F24 = D_801E7FFC; + D_80114F28 = D_801E7FFE; + D_80114F2C = D_801E8000; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801E7FDC), src[8..15] -> (*(S8_8017B8E8 *)&D_801E7FD4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801E7FDC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801E7FD4) = ((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_801E7FE4; +extern u16 D_801E7FE6; +extern u16 D_801E7FE8; + +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_801E7F64; +extern short D_801E7FEC; +extern short D_801E7FEE; +extern short D_801E7FF0; +extern s16 D_801E7FDC; +extern s16 D_801E7FDE; +extern s16 D_801E7FE0; +extern s16 D_801E7FD4; +extern s16 D_801E7FD6; +extern s16 D_801E7FD8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801E7FE4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801E7FE6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801E7FE8); + (*(s16 *)&D_801E7FEC) = buf[0]; + (*(s16 *)&D_801E7FEE) = buf[1]; + (*(s16 *)&D_801E7FF0) = buf[2]; + D_801E7FDC = D_80114F30 + buf[0]; + D_801E7F64 = 0; + D_801E7FDE = D_80114F34 + buf[1]; + D_801E7FE0 = D_80114F38 + buf[2]; + D_801E7FD4 = D_80114F24 + buf[0]; + D_801E7FD6 = D_80114F28 + buf[1]; + D_801E7FD8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801E7F84; +extern SV4 D_801E7F8C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801E7F8C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801E7F84 = 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_801E7F8C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801E7F8C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801E7F84) = 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_801E7F8C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801E7FAC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801E7FAC; + 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_801E7F64; +extern s16 D_801E87BC; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801E7F64 = D_801E7F64 + 1; + if (D_801E7F64 >= 0x1F) { + D_801E87BC = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801E7F64; +extern s16 D_801E87BC; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801E7F64 = D_801E7F64 + 1; + if (0x18 < D_801E7F64) { + func_8012A4BC(); + D_801E87BC = 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_801E7F64; +extern void (*D_801E7FA8)(void); +extern short D_801E7FEC; +extern short D_801E7FEE; +extern short D_801E7FF0; +extern s16 D_801E87BC; + +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_801E7F64 = D_801E7F64 + 1; + if (D_801E7F64 >= 0x19) { + if (D_801E7FA8 != 0) { + (*D_801E7FA8)(); + } else { + D_80114F30 = D_80114F30 + D_801E7FEC; + D_80114F34 = D_80114F34 + D_801E7FEE; + D_80114F38 = D_80114F38 + D_801E7FF0; + D_80114F24 = D_80114F24 + D_801E7FEC; + D_80114F28 = D_80114F28 + D_801E7FEE; + D_80114F2C = D_80114F2C + D_801E7FF0; + func_8012A4BC(); + } + D_801E87BC = 0; + } +} + + + +extern void (*D_8018E5DC[])(void); + +void func_8017BE60(void *a0) { + D_8018E5DC[*(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) */ + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017BEBC); + + +extern void (*D_8018E614[])(void); + +void func_8017BEF8(void *a0) { + D_8018E614[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017BF34); + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017BF84); + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017BFE0); + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017C064); + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017C1CC); + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017C218); + + +extern void (*D_8018E628[])(void); + +void func_8017C524(void *a0) { + D_8018E628[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017C560); + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017C5A0); + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017C610); + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017C69C); + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017C770); + + +extern void (*D_8018E63C[])(void); + +void func_8017C7C4(void *a0) { + D_8018E63C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017C800); + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017C8B4); + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017C910); + + +extern void (*D_8018E65C[])(void); + +void func_8017CA80(void *a0) { + D_8018E65C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017CABC); + +extern void func_80146C3C(void); +void func_8017CC80(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_8018E664[])(void); + +void func_8017CD14(void *a0) { + D_8018E664[*(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_8018E650; + +void func_8017CD50(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_8018E650, 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_8017CDF4(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; + } +} + + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017CE58); + +extern void ReadRotMatrix(void *a0); +extern void PushMatrix(void); +extern void func_8004974C(void *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern void PopMatrix(void); +void func_8017D230(u16 *a0, void *a1) { + s32 mat[8]; + s32 buf[8]; + s16 sv[4]; + ReadRotMatrix((void *)mat); + PushMatrix(); + sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); + sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); + sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); + func_8004974C((void *)mat, (void *)buf); + ApplyMatrixSV((void *)buf, (void *)sv, a1); + PopMatrix(); +} + + +int func_8017D2D4(short *param_1, short *param_2, short *param_3, int param_4) { + register int i2o __asm__("$5"); + register int i4o __asm__("$9"); + short sVar1; int rx, rz, uVar5; + i4o = param_2[1]; + __asm__ __volatile__("" : : "r"(i4o)); + i2o = param_1[1]; uVar5 = 0; + if (i2o >= i4o) { + rx = param_1[0] - i2o * (param_2[0] - param_1[0]); + rz = param_1[2] - i2o * (param_2[2] - param_1[2]); + } else { + register int den __asm__("$3"); + int p2x = param_2[0], p2z = param_2[2]; + den = i2o - i4o; + rx = p2x + i4o * (p2x - param_1[0]) / den; + rz = p2z + i4o * (p2z - param_1[2]) / den; + } + if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } + else i2o = -0x7fff; + *param_3 = (short)i2o; + if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } + else i2o = -0x7fff; + param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; + if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } + if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } + if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } + if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } + return uVar5; +} + + +extern void ReadGeomOffset(s32 *a0, s32 *a1); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +extern void func_8004921C(s32 a0, s32 a1); +void func_8017D4CC(s32 a0, s32 a1) { + s32 ofx; + s32 ofy; + s32 sxy; + s32 p; + ReadGeomOffset(&ofx, &ofy); + func_8004921C(0, 0); + RotTransPers(a0, a1, &sxy, &p); + func_8004921C(ofx, ofy); +} + + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017D538); + + +// @class: regalloc-order +// @stuck: none — MATCH (relocation-masked, 70 ins). pins $s0/$s1 + precomputed a0v anchored in a zero-byte barrier fix the prologue schedule. + +extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); +extern s32 ratan2(s32, s32); +extern void func_8012B0B4(SVEC *, s32, s32); +extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); +extern void func_8012ADE4(u8 *a0); + +s32 func_8017E404(s32 param_1, s32 param_2) +{ + register s32 p1 __asm__("$16") = param_1; + register s32 p2 __asm__("$17") = param_2; + SVEC in; + SVEC out; + SVEC buf; + s32 d; + s32 ang; + u16 px, pz; + s32 a0v; + + a0v = p1 + 4; + __asm__ __volatile__("" : : "r"(p2), "r"(a0v)); + if (((s32 (*)(s32, s32))func_8012BC60)(a0v, p2 + 4) >= 0x1000) { + return 0; + } + ang = ratan2((s32)*(s16 *)(p1 + 0xe) - (s32)*(s16 *)(p2 + 0xe), + (s32)*(s16 *)(p2 + 6) - (s32)*(s16 *)(p1 + 6)); + func_8012B0B4(&buf, (ang - 0x400) & 0xfff, 0x41); + d = *(s32 *)&buf; + px = *(u16 *)(p2 + 6); + out.vx = px; + out.vy = *(u16 *)(p2 + 0xa); + pz = *(u16 *)(p2 + 0xe); + out.vz = pz; + out.vx = px + d; + out.vz = pz + (d >> 16); + in.vx = *(u16 *)(p1 + 0x3a); + in.vy = *(u16 *)(p1 + 0x3e); + in.vz = *(u16 *)(p1 + 0x42); + if ((((s32 (*)(SVEC *, SVEC *, s32))func_8012CEB0)(&in, &out, 0) & 0x2000) == 0) { + ((void (*)(s32))func_8012ADE4)(p1); + return 1; + } + *(s16 *)(p1 + 6) = out.vx; + *(s16 *)(p1 + 0xa) = out.vy; + *(s16 *)(p1 + 0xe) = out.vz; + return 1; +} + + + +// @class: struct +// @stuck: none — MATCH expected (modeled on byte-proven DEFINE_func_8012E504 idiom: D_801202A0 base, 0x6480 end, 0x10C stride for-loop) + +extern u8 D_801202A0[]; +extern s32 func_8017E404(s32 a0, s32 a1); +extern s32 func_8012AE00(s32 a0); + +void func_8017E51C(s32 a0) { + s32 p; + s32 end; + s32 v; + v = *(u16 *)a0; + p = (s32)D_801202A0; + end = (s32)D_801202A0 + 0x6480; + for (; p != end; p += 0x10C) { + if (p != a0) { + if (*(u16 *)p == v) { + if (func_8017E404(a0, p) != 0) { + break; + } + } + } + } + ((void (*)(s32))func_8012AE00)(p); +} + + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017E5AC); + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017E6D8); + + +extern s16 D_8018E6CC; +extern s16 D_8018E6D0; +extern u16 D_80126B5E; +extern s32 func_80013478(s32 a0, s32 a1); +extern s32 ratan2(s32, s32); +s32 func_8017E958(s32 param_1, s32 param_2) { + s32 local_20[2] = {0x3c100, 0x51000}; + s32 iVar1; + s32 iVar2; + if ((s32)((u32)*(u16 *)(param_1 + 0x70) << 0x10) >> 0x18 == 4) { + iVar1 = ((s32 (*)(s32, void *))func_80013478)(param_1 + 4, &D_8018E6CC); + if (param_2 == 1) { + iVar2 = ratan2((s32)*(s16 *)(param_1 + 0xe) - (s32)D_8018E6D0, + (s32)D_8018E6CC - (s32)*(s16 *)(param_1 + 6)); + if ((((u32)iVar2 - 0x400U) & 0xfff) - 0x381 < 0xff && 0x2df < (*(s16 *)&D_80126B5E) && + 0x3c100 < iVar1) { return 1; } + } + if (local_20[param_2] < iVar1 && *(s32 *)(param_1 + 0xe8) < iVar1) { + *(s32 *)(param_1 + 0xe8) = iVar1; return 1; + } + *(s32 *)(param_1 + 0xe8) = iVar1; + } + return 0; +} + + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017EA84); + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017F390); + + +// @class: plumbing +// @stuck: none — MATCH expected; simple param-survives-call store sequence + +extern void func_8012A828(s32 a0, void *a1); +extern char D_801A668C[]; + +void func_8017F5A0(int param_1) +{ + *(short *)(param_1 + 2) = 2; + *(short *)(param_1 + 0x34) = 0; + func_8012A828(param_1, &D_801A668C); + *(int *)(param_1 + 0x1c) = 0x14; +} + + + +// @class: plumbing +// @stuck: none — MATCH expected; param_1 survives call in $s0 naturally (single global allocno) + +extern void func_8012A828(s32 a0, void *a1); +extern s32 D_801A72C4; + +void func_8017F5E4(s32 param_1) { + *(s16 *)(param_1 + 2) = 2; + *(s16 *)(param_1 + 0x34) = 3; + func_8012A828(param_1, &D_801A72C4); + *(s32 *)(param_1 + 0x1c) = 0x1e; +} + + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017F62C); + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017F950); + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017AE2C", func_8017FB24); + +DEFINE_func_8017FC9C() /* dedup: shared engine-core @0x8017FC9C (src/shared) */ + + + + diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8017A4AC.c b/src/ov_SC02_003/ov_SC02_003_jr_8017A4AC.c index a4e412fd0..56f3d1504 100644 --- a/src/ov_SC02_003/ov_SC02_003_jr_8017A4AC.c +++ b/src/ov_SC02_003/ov_SC02_003_jr_8017A4AC.c @@ -2965,946 +2965,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801E7FDC; - extern s16 D_801E7FDE; - extern s16 D_801E7FE0; - extern s16 D_801E7FD4; - extern s16 D_801E7FD6; - extern s16 D_801E7FD8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801E7FDC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801E7FDE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801E7FE0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801E7FD4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801E7FD6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801E7FD8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801E7F64; -extern u16 D_801E7FE4; -extern u16 D_801E7FE6; -extern u16 D_801E7FE8; -extern s16 D_801E87BC; - -void func_8017B1D8(void) { - func_8012A418(); - D_801E87BC = 0; - D_801E7F64 = 0; - D_801E7FE4 = D_80126B5E; - D_801E7FE6 = D_80126B62; - D_801E7FE8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018E53C[]; - extern s16 D_801E7FDC; - extern s16 D_801E7FD4; - 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_8018E53C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018E53C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E7FDC; - s16 *p78C = &D_801E7FD4; - *(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_801E87BC = 1; - D_801E7F64 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801E7F84; - extern SV4_8017B368 D_801E7F8C; - extern s16 D_801E7FDC; - extern s16 D_801E7FD4; - extern u16 D_8018E53C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801E7F84; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801E7F8C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018E53C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018E53C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801E7FDC) = loc0; - (*(SV4_8017B368 *)&D_801E7FD4) = loc1; - D_801E87BC = 1; - D_801E7F64 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018E53C[]; - extern s16 D_801E7FDC; - extern s16 D_801E7FDE; - extern s16 D_801E7FE0; - extern s16 D_801E7FD4; - extern s16 D_801E7FD6; - extern s16 D_801E7FD8; - 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_8018E53C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018E53C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E7FDC; - s16 *p78C = &D_801E7FD4; - *(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_801E7FDE; - v798 = D_801E7FE0; - v78C = *p78C; - v78E = D_801E7FD6; - v790 = D_801E7FD8; - __asm__ __volatile__(""); - D_801E87BC = 1; - D_801E7F64 = 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_801E7F64; -extern s16 D_801E7FDC; -extern s16 D_801E7FDE; -extern s16 D_801E7FE0; -extern s16 D_801E7FD4; -extern s16 D_801E7FD6; -extern s16 D_801E7FD8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801E7F64 = 0; - D_801E7FDC = (s16) D_80114F30; - D_801E7FDE = (s16) D_80114F34; - D_801E7FE0 = (s16) D_80114F38; - D_801E7FD4 = (s16) D_80114F24; - D_801E7FD6 = (s16) D_80114F28; - D_801E7FD8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801E7FF4; -extern s16 D_801E7FF6; -extern s16 D_801E7FF8; -extern s16 D_801E7FFC; -extern s16 D_801E7FFE; -extern s16 D_801E8000; - -void func_8017B824(void) { - D_801E7FF4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801E7FF6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801E7FF8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801E7FFC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801E7FFE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801E8000 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801E7FF4; -extern s16 D_801E7FF6; -extern s16 D_801E7FF8; -extern s16 D_801E7FFC; -extern s16 D_801E7FFE; -extern s16 D_801E8000; - -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_801E7FF4; - D_80114F34 = D_801E7FF6; - D_80114F38 = D_801E7FF8; - D_80114F24 = D_801E7FFC; - D_80114F28 = D_801E7FFE; - D_80114F2C = D_801E8000; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801E7FDC), src[8..15] -> (*(S8_8017B8E8 *)&D_801E7FD4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801E7FDC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801E7FD4) = ((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_801E7FE4; -extern u16 D_801E7FE6; -extern u16 D_801E7FE8; - -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_801E7F64; -extern short D_801E7FEC; -extern short D_801E7FEE; -extern short D_801E7FF0; -extern s16 D_801E7FDC; -extern s16 D_801E7FDE; -extern s16 D_801E7FE0; -extern s16 D_801E7FD4; -extern s16 D_801E7FD6; -extern s16 D_801E7FD8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801E7FE4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801E7FE6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801E7FE8); - (*(s16 *)&D_801E7FEC) = buf[0]; - (*(s16 *)&D_801E7FEE) = buf[1]; - (*(s16 *)&D_801E7FF0) = buf[2]; - D_801E7FDC = D_80114F30 + buf[0]; - D_801E7F64 = 0; - D_801E7FDE = D_80114F34 + buf[1]; - D_801E7FE0 = D_80114F38 + buf[2]; - D_801E7FD4 = D_80114F24 + buf[0]; - D_801E7FD6 = D_80114F28 + buf[1]; - D_801E7FD8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801E7F84; -extern SV4 D_801E7F8C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801E7F8C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801E7F84 = 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_801E7F8C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801E7F8C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801E7F84) = 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_801E7F8C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801E7FAC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801E7FAC; - 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_801E7F64; -extern s16 D_801E87BC; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801E7F64 = D_801E7F64 + 1; - if (D_801E7F64 >= 0x1F) { - D_801E87BC = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801E7F64; -extern s16 D_801E87BC; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801E7F64 = D_801E7F64 + 1; - if (0x18 < D_801E7F64) { - func_8012A4BC(); - D_801E87BC = 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_801E7F64; -extern void (*D_801E7FA8)(void); -extern short D_801E7FEC; -extern short D_801E7FEE; -extern short D_801E7FF0; -extern s16 D_801E87BC; - -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_801E7F64 = D_801E7F64 + 1; - if (D_801E7F64 >= 0x19) { - if (D_801E7FA8 != 0) { - (*D_801E7FA8)(); - } else { - D_80114F30 = D_80114F30 + D_801E7FEC; - D_80114F34 = D_80114F34 + D_801E7FEE; - D_80114F38 = D_80114F38 + D_801E7FF0; - D_80114F24 = D_80114F24 + D_801E7FEC; - D_80114F28 = D_80114F28 + D_801E7FEE; - D_80114F2C = D_80114F2C + D_801E7FF0; - func_8012A4BC(); - } - D_801E87BC = 0; - } -} - - - -extern void (*D_8018E5DC[])(void); - -void func_8017BE60(void *a0) { - D_8018E5DC[*(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) */ - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017BEBC); - - -extern void (*D_8018E614[])(void); - -void func_8017BEF8(void *a0) { - D_8018E614[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017BF34); - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017BF84); - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017BFE0); - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017C064); - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017C1CC); - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017C218); - - -extern void (*D_8018E628[])(void); - -void func_8017C524(void *a0) { - D_8018E628[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017C560); - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017C5A0); - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017C610); - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017C69C); - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017C770); - - -extern void (*D_8018E63C[])(void); - -void func_8017C7C4(void *a0) { - D_8018E63C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017C800); - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017C8B4); - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017C910); - - -extern void (*D_8018E65C[])(void); - -void func_8017CA80(void *a0) { - D_8018E65C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017CABC); - -extern void func_80146C3C(void); -void func_8017CC80(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_8018E664[])(void); - -void func_8017CD14(void *a0) { - D_8018E664[*(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_8018E650; - -void func_8017CD50(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_8018E650, 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_8017CDF4(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; - } -} - - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017CE58); - -extern void ReadRotMatrix(void *a0); -extern void PushMatrix(void); -extern void func_8004974C(void *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void PopMatrix(void); -void func_8017D230(u16 *a0, void *a1) { - s32 mat[8]; - s32 buf[8]; - s16 sv[4]; - ReadRotMatrix((void *)mat); - PushMatrix(); - sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); - sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); - sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); - func_8004974C((void *)mat, (void *)buf); - ApplyMatrixSV((void *)buf, (void *)sv, a1); - PopMatrix(); -} - - -int func_8017D2D4(short *param_1, short *param_2, short *param_3, int param_4) { - register int i2o __asm__("$5"); - register int i4o __asm__("$9"); - short sVar1; int rx, rz, uVar5; - i4o = param_2[1]; - __asm__ __volatile__("" : : "r"(i4o)); - i2o = param_1[1]; uVar5 = 0; - if (i2o >= i4o) { - rx = param_1[0] - i2o * (param_2[0] - param_1[0]); - rz = param_1[2] - i2o * (param_2[2] - param_1[2]); - } else { - register int den __asm__("$3"); - int p2x = param_2[0], p2z = param_2[2]; - den = i2o - i4o; - rx = p2x + i4o * (p2x - param_1[0]) / den; - rz = p2z + i4o * (p2z - param_1[2]) / den; - } - if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } - else i2o = -0x7fff; - *param_3 = (short)i2o; - if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } - else i2o = -0x7fff; - param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; - if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } - if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } - if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } - if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } - return uVar5; -} - - -extern void ReadGeomOffset(s32 *a0, s32 *a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8004921C(s32 a0, s32 a1); -void func_8017D4CC(s32 a0, s32 a1) { - s32 ofx; - s32 ofy; - s32 sxy; - s32 p; - ReadGeomOffset(&ofx, &ofy); - func_8004921C(0, 0); - RotTransPers(a0, a1, &sxy, &p); - func_8004921C(ofx, ofy); -} - - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017D538); - - -// @class: regalloc-order -// @stuck: none — MATCH (relocation-masked, 70 ins). pins $s0/$s1 + precomputed a0v anchored in a zero-byte barrier fix the prologue schedule. - -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s32 ratan2(s32, s32); -extern void func_8012B0B4(SVEC *, s32, s32); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012ADE4(u8 *a0); - -s32 func_8017E404(s32 param_1, s32 param_2) -{ - register s32 p1 __asm__("$16") = param_1; - register s32 p2 __asm__("$17") = param_2; - SVEC in; - SVEC out; - SVEC buf; - s32 d; - s32 ang; - u16 px, pz; - s32 a0v; - - a0v = p1 + 4; - __asm__ __volatile__("" : : "r"(p2), "r"(a0v)); - if (((s32 (*)(s32, s32))func_8012BC60)(a0v, p2 + 4) >= 0x1000) { - return 0; - } - ang = ratan2((s32)*(s16 *)(p1 + 0xe) - (s32)*(s16 *)(p2 + 0xe), - (s32)*(s16 *)(p2 + 6) - (s32)*(s16 *)(p1 + 6)); - func_8012B0B4(&buf, (ang - 0x400) & 0xfff, 0x41); - d = *(s32 *)&buf; - px = *(u16 *)(p2 + 6); - out.vx = px; - out.vy = *(u16 *)(p2 + 0xa); - pz = *(u16 *)(p2 + 0xe); - out.vz = pz; - out.vx = px + d; - out.vz = pz + (d >> 16); - in.vx = *(u16 *)(p1 + 0x3a); - in.vy = *(u16 *)(p1 + 0x3e); - in.vz = *(u16 *)(p1 + 0x42); - if ((((s32 (*)(SVEC *, SVEC *, s32))func_8012CEB0)(&in, &out, 0) & 0x2000) == 0) { - ((void (*)(s32))func_8012ADE4)(p1); - return 1; - } - *(s16 *)(p1 + 6) = out.vx; - *(s16 *)(p1 + 0xa) = out.vy; - *(s16 *)(p1 + 0xe) = out.vz; - return 1; -} - - - -// @class: struct -// @stuck: none — MATCH expected (modeled on byte-proven DEFINE_func_8012E504 idiom: D_801202A0 base, 0x6480 end, 0x10C stride for-loop) - -extern u8 D_801202A0[]; -extern s32 func_8017E404(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); - -void func_8017E51C(s32 a0) { - s32 p; - s32 end; - s32 v; - v = *(u16 *)a0; - p = (s32)D_801202A0; - end = (s32)D_801202A0 + 0x6480; - for (; p != end; p += 0x10C) { - if (p != a0) { - if (*(u16 *)p == v) { - if (func_8017E404(a0, p) != 0) { - break; - } - } - } - } - ((void (*)(s32))func_8012AE00)(p); -} - - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017E5AC); - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017E6D8); - - -extern s16 D_8018E6CC; -extern s16 D_8018E6D0; -extern u16 D_80126B5E; -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 ratan2(s32, s32); -s32 func_8017E958(s32 param_1, s32 param_2) { - s32 local_20[2] = {0x3c100, 0x51000}; - s32 iVar1; - s32 iVar2; - if ((s32)((u32)*(u16 *)(param_1 + 0x70) << 0x10) >> 0x18 == 4) { - iVar1 = ((s32 (*)(s32, void *))func_80013478)(param_1 + 4, &D_8018E6CC); - if (param_2 == 1) { - iVar2 = ratan2((s32)*(s16 *)(param_1 + 0xe) - (s32)D_8018E6D0, - (s32)D_8018E6CC - (s32)*(s16 *)(param_1 + 6)); - if ((((u32)iVar2 - 0x400U) & 0xfff) - 0x381 < 0xff && 0x2df < (*(s16 *)&D_80126B5E) && - 0x3c100 < iVar1) { return 1; } - } - if (local_20[param_2] < iVar1 && *(s32 *)(param_1 + 0xe8) < iVar1) { - *(s32 *)(param_1 + 0xe8) = iVar1; return 1; - } - *(s32 *)(param_1 + 0xe8) = iVar1; - } - return 0; -} - - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017EA84); - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017F390); - - -// @class: plumbing -// @stuck: none — MATCH expected; simple param-survives-call store sequence - -extern void func_8012A828(s32 a0, void *a1); -extern char D_801A668C[]; - -void func_8017F5A0(int param_1) -{ - *(short *)(param_1 + 2) = 2; - *(short *)(param_1 + 0x34) = 0; - func_8012A828(param_1, &D_801A668C); - *(int *)(param_1 + 0x1c) = 0x14; -} - - - -// @class: plumbing -// @stuck: none — MATCH expected; param_1 survives call in $s0 naturally (single global allocno) - -extern void func_8012A828(s32 a0, void *a1); -extern s32 D_801A72C4; - -void func_8017F5E4(s32 param_1) { - *(s16 *)(param_1 + 2) = 2; - *(s16 *)(param_1 + 0x34) = 3; - func_8012A828(param_1, &D_801A72C4); - *(s32 *)(param_1 + 0x1c) = 0x1e; -} - - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017F62C); - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017F950); - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017A4AC", func_8017FB24); - -DEFINE_func_8017FC9C() /* dedup: shared engine-core @0x8017FC9C (src/shared) */ - - - diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8017AE2C.c b/src/ov_SC02_003/ov_SC02_003_jr_8017AE2C.c new file mode 100644 index 000000000..be0fd000d --- /dev/null +++ b/src/ov_SC02_003/ov_SC02_003_jr_8017AE2C.c @@ -0,0 +1,3842 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018D134; +extern u8 D_8018D0A4; +extern u8 D_8018D080; +extern u8 D_8018D05C; +extern u8 D_8018D110; +extern u8 D_8018D0EC; +extern u8 D_8018D0C8; +extern u8 D_8018D038; +extern void func_80145934(void); +extern u8 D_8018D1C4; +extern u8 D_8018D1A0; +extern u8 D_8018D17C; +extern u8 D_8018D158; +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_8018C5BC[]; +extern unsigned char D_8018C5EC[]; +extern unsigned char D_8018C63C[]; +extern unsigned char D_8018C66C[]; +extern unsigned char D_8018C69C[]; +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(void); +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_8018C6EC[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018C7B4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018C83C[]; +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_8018C844; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801E6E60; +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_801E6E64; +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_8018C874; +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 void 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_8018C91C[])(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_8018C940[])(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_8018C930; +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_8018C954[])(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_8018C960[]; +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_8018C970[])(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_8018C988[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018C978; +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_8018C99C[])(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_8018C9B8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018C9A8; +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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; +extern void (*D_8018CA1C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018C9FC; +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_8018CA68[])(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_8018CA6C[])(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(void *a0); +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_8018CED0[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018CEE0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801E6E98; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018CF08[])(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_8018CEE8; +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_8018CEF8; +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_8018CF48[])(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_8018CF50[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018CF1C; +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_8018CF5C[])(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_8018CF2C; +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_801E6EA0; +extern s32 D_801E6EAC; +extern s32 D_801E6EB0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018CF98[])(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_8018CF6C[]; +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_801E6EA8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018D1E8[])(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_8018D008[]; +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_8018D28C[])(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_8018D3E0[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018D1FC; +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_8018D3E8[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018D20C; +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_8018D22C; +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_8018D3F0[])(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(void); +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_8018D418[])(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_8018D424[])(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_8018D298[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018D4C8; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018C5AC[]; +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_8018D4DC[]; +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_8018D518[]; +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_8018D560; +extern u16 D_8018D562; +extern u16 D_8018D564; +extern s32 D_8018D568; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +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_8018D27C; +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_8018D5F4[]; +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_8018D6A4[])(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_8018D6D4[]; +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_8018D738; +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_801E6EB8[]; +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_8018D75C[])(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_801E6F10[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018D7A4[])(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_8018D794; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801E63B4[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_8018D7AC[])(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_8018D800[])(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_8018D7C8; +extern s16 D_8018D7FC; +extern s16 D_8018D7FA; +extern s16 D_8018D7F8; +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_8018D80C[])(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_801E6F70; +extern u8 D_801E6F71; +extern u8 D_801E6F72; +extern u8 D_801E6F73; +extern u8 D_801E6F74; +extern u8 D_801E6F75; +extern u8 D_801E6F76; +extern u8 D_801E6F77; +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_8018D81C[])(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_801E6FB0; +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_8018D860[])(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_8018D8DC[]; +extern s32 D_8018D8FC[]; +extern u8 D_8018D978[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018D998[]; +extern u8 D_8018D9B8[]; +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_8018DA54[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018DAD0[])(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_801E63C4; +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_8018DADC[])(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_8018DAE4[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018DBAC[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018DBBC[])(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_8018DBCC[])(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_8018DBD8[])(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_8018DB38[]; +extern u8 D_8018DB4C[]; +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_8018DBF0[])(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_8018DBF8[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018DC00[])(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_8018DC08[])(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_8018DC10[])(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_8018DC18[])(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_8018DC20[])(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_8018DCD4[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018DCDC[])(void); +extern void func_80169F00(void *a0); +extern char D_8018DC8C[]; +extern char D_8018DC4C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018DD14[])(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_8018DD20[])(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_8018DD68[])(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_8018DDE4[])(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_801E72D0; +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_8018DDD8[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018DE1C[]; +extern unsigned short D_8018DE24[]; +extern unsigned short D_8018DE2C[]; +extern unsigned char D_801E72D8[]; +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_801E72D0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018DE34[])(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_801E740C; +extern M2C_UNK D_801E7410; +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_801E7398; +extern void (*D_8018DE64[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801E7414[]; +extern u8 D_801E741C[]; +extern u8 D_801E73CC[]; +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_8018DE6C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018DE88[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018DE90[])(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_8018DEF8[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018DE9C; +extern u8 D_8018DEA8; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018DF2C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018DF34[])(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_8018DF88[])(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_8018DFBC[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018DFAC[]; +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_8018DFD8; +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); +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_8018E050[])(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_8018E058[])(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_8018E060[])(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_8018E068[])(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_8018E070[])(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_8018E078[])(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_8018E084[])(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_8018E090[])(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_8018E09C[])(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_8018E0AC[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018E0BC[])(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_8018E0C4[])(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_8018E0CC[])(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_8018E0D4[])(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_8018E0DC[])(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_8018E0E4[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018E0EC[])(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_8018E0F4[])(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_8018E0FC[])(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_8018E104[])(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_8018E10C[])(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_8018E114[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018E11C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018E124[])(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_8018E12C[])(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_8018E134[])(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_8018E13C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018E144[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018E14C[])(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_8018E154[])(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_8018E15C[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018E164[])(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_8018E16C[])(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_8018E1B0[])(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_8018E174; +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_8018E1E0[])(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_8018E21C[])(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(s32); +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_8018E274[])(); +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_8018E284[])(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_8018E28C[])(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_8018E3F4[])(); +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_8018E400[])(); +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_801E660C; +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 int func_801789AC(void); +extern s16 D_801E87BC; +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_801E7B50; +extern short D_801E8864; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801E7F7C; +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_801E7FA4; +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_801E7F60; +extern s32 func_8017A3B0(void); +extern short D_801E7F9C; +extern short D_801E7F98; +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_801E8758; +extern s16 D_801E875A; +extern s16 D_801E8764; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801E8758; + + 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_801E8764); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801E8758+0xC == &D_801E8764; 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_801E8758 + 0xC)) < 0x101) { + D_801E8758 = 0; + D_801E875A = 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_801E8764); + 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_801E8758 + 0xC)) < 0x101) { + D_801E8758 = 0; + D_801E875A = 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_801E7FDC; + extern s16 D_801E7FDE; + extern s16 D_801E7FE0; + extern s16 D_801E7FD4; + extern s16 D_801E7FD6; + extern s16 D_801E7FD8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801E7FDC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801E7FDE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801E7FE0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801E7FD4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801E7FD6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801E7FD8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801E7F64; +extern u16 D_801E7FE4; +extern u16 D_801E7FE6; +extern u16 D_801E7FE8; +extern s16 D_801E87BC; + +void func_8017B1D8(void) { + func_8012A418(); + D_801E87BC = 0; + D_801E7F64 = 0; + D_801E7FE4 = D_80126B5E; + D_801E7FE6 = D_80126B62; + D_801E7FE8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018E53C[]; + extern s16 D_801E7FDC; + extern s16 D_801E7FD4; + 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_8018E53C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018E53C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801E7FDC; + s16 *p78C = &D_801E7FD4; + *(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_801E87BC = 1; + D_801E7F64 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801E7F84; + extern SV4_8017B368 D_801E7F8C; + extern s16 D_801E7FDC; + extern s16 D_801E7FD4; + extern u16 D_8018E53C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801E7F84; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801E7F8C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018E53C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018E53C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801E7FDC) = loc0; + (*(SV4_8017B368 *)&D_801E7FD4) = loc1; + D_801E87BC = 1; + D_801E7F64 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018E53C[]; + extern s16 D_801E7FDC; + extern s16 D_801E7FDE; + extern s16 D_801E7FE0; + extern s16 D_801E7FD4; + extern s16 D_801E7FD6; + extern s16 D_801E7FD8; + 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_8018E53C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018E53C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801E7FDC; + s16 *p78C = &D_801E7FD4; + *(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_801E7FDE; + v798 = D_801E7FE0; + v78C = *p78C; + v78E = D_801E7FD6; + v790 = D_801E7FD8; + __asm__ __volatile__(""); + D_801E87BC = 1; + D_801E7F64 = 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_801E7F64; +extern s16 D_801E7FDC; +extern s16 D_801E7FDE; +extern s16 D_801E7FE0; +extern s16 D_801E7FD4; +extern s16 D_801E7FD6; +extern s16 D_801E7FD8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801E7F64 = 0; + D_801E7FDC = (s16) D_80114F30; + D_801E7FDE = (s16) D_80114F34; + D_801E7FE0 = (s16) D_80114F38; + D_801E7FD4 = (s16) D_80114F24; + D_801E7FD6 = (s16) D_80114F28; + D_801E7FD8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801E7FF4; +extern s16 D_801E7FF6; +extern s16 D_801E7FF8; +extern s16 D_801E7FFC; +extern s16 D_801E7FFE; +extern s16 D_801E8000; + +void func_8017B824(void) { + D_801E7FF4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801E7FF6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801E7FF8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801E7FFC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801E7FFE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801E8000 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801E7FF4; +extern s16 D_801E7FF6; +extern s16 D_801E7FF8; +extern s16 D_801E7FFC; +extern s16 D_801E7FFE; +extern s16 D_801E8000; + +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_801E7FF4; + D_80114F34 = D_801E7FF6; + D_80114F38 = D_801E7FF8; + D_80114F24 = D_801E7FFC; + D_80114F28 = D_801E7FFE; + D_80114F2C = D_801E8000; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801E7FDC), src[8..15] -> (*(S8_8017B8E8 *)&D_801E7FD4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801E7FDC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801E7FD4) = ((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_801E7FE4; +extern u16 D_801E7FE6; +extern u16 D_801E7FE8; + +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_801E7F64; +extern short D_801E7FEC; +extern short D_801E7FEE; +extern short D_801E7FF0; +extern s16 D_801E7FDC; +extern s16 D_801E7FDE; +extern s16 D_801E7FE0; +extern s16 D_801E7FD4; +extern s16 D_801E7FD6; +extern s16 D_801E7FD8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801E7FE4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801E7FE6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801E7FE8); + (*(s16 *)&D_801E7FEC) = buf[0]; + (*(s16 *)&D_801E7FEE) = buf[1]; + (*(s16 *)&D_801E7FF0) = buf[2]; + D_801E7FDC = D_80114F30 + buf[0]; + D_801E7F64 = 0; + D_801E7FDE = D_80114F34 + buf[1]; + D_801E7FE0 = D_80114F38 + buf[2]; + D_801E7FD4 = D_80114F24 + buf[0]; + D_801E7FD6 = D_80114F28 + buf[1]; + D_801E7FD8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801E7F84; +extern SV4 D_801E7F8C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801E7F8C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801E7F84 = 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_801E7F8C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801E7F8C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801E7F84) = 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_801E7F8C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801E7FAC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801E7FAC; + 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_801E7F64; +extern s16 D_801E87BC; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801E7F64 = D_801E7F64 + 1; + if (D_801E7F64 >= 0x1F) { + D_801E87BC = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801E7F64; +extern s16 D_801E87BC; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801E7F64 = D_801E7F64 + 1; + if (0x18 < D_801E7F64) { + func_8012A4BC(); + D_801E87BC = 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_801E7F64; +extern void (*D_801E7FA8)(void); +extern short D_801E7FEC; +extern short D_801E7FEE; +extern short D_801E7FF0; +extern s16 D_801E87BC; + +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_801E7F64 = D_801E7F64 + 1; + if (D_801E7F64 >= 0x19) { + if (D_801E7FA8 != 0) { + (*D_801E7FA8)(); + } else { + D_80114F30 = D_80114F30 + D_801E7FEC; + D_80114F34 = D_80114F34 + D_801E7FEE; + D_80114F38 = D_80114F38 + D_801E7FF0; + D_80114F24 = D_80114F24 + D_801E7FEC; + D_80114F28 = D_80114F28 + D_801E7FEE; + D_80114F2C = D_80114F2C + D_801E7FF0; + func_8012A4BC(); + } + D_801E87BC = 0; + } +} + + + +extern void (*D_8018E5DC[])(void); + +void func_8017BE60(void *a0) { + D_8018E5DC[*(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) */ + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017BEBC); + + +extern void (*D_8018E614[])(void); + +void func_8017BEF8(void *a0) { + D_8018E614[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017BF34); + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017BF84); + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017BFE0); + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017C064); + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017C1CC); + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017C218); + + +extern void (*D_8018E628[])(void); + +void func_8017C524(void *a0) { + D_8018E628[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017C560); + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017C5A0); + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017C610); + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017C69C); + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017C770); + + +extern void (*D_8018E63C[])(void); + +void func_8017C7C4(void *a0) { + D_8018E63C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017C800); + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017C8B4); + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017C910); + + +extern void (*D_8018E65C[])(void); + +void func_8017CA80(void *a0) { + D_8018E65C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017CABC); + +extern void func_80146C3C(void); +void func_8017CC80(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_8018E664[])(void); + +void func_8017CD14(void *a0) { + D_8018E664[*(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_8018E650; + +void func_8017CD50(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_8018E650, 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_8017CDF4(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; + } +} + + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017CE58); + +extern void ReadRotMatrix(void *a0); +extern void PushMatrix(void); +extern void func_8004974C(void *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern void PopMatrix(void); +void func_8017D230(u16 *a0, void *a1) { + s32 mat[8]; + s32 buf[8]; + s16 sv[4]; + ReadRotMatrix((void *)mat); + PushMatrix(); + sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); + sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); + sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); + func_8004974C((void *)mat, (void *)buf); + ApplyMatrixSV((void *)buf, (void *)sv, a1); + PopMatrix(); +} + + +int func_8017D2D4(short *param_1, short *param_2, short *param_3, int param_4) { + register int i2o __asm__("$5"); + register int i4o __asm__("$9"); + short sVar1; int rx, rz, uVar5; + i4o = param_2[1]; + __asm__ __volatile__("" : : "r"(i4o)); + i2o = param_1[1]; uVar5 = 0; + if (i2o >= i4o) { + rx = param_1[0] - i2o * (param_2[0] - param_1[0]); + rz = param_1[2] - i2o * (param_2[2] - param_1[2]); + } else { + register int den __asm__("$3"); + int p2x = param_2[0], p2z = param_2[2]; + den = i2o - i4o; + rx = p2x + i4o * (p2x - param_1[0]) / den; + rz = p2z + i4o * (p2z - param_1[2]) / den; + } + if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } + else i2o = -0x7fff; + *param_3 = (short)i2o; + if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } + else i2o = -0x7fff; + param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; + if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } + if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } + if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } + if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } + return uVar5; +} + + +extern void ReadGeomOffset(s32 *a0, s32 *a1); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +extern void func_8004921C(s32 a0, s32 a1); +void func_8017D4CC(s32 a0, s32 a1) { + s32 ofx; + s32 ofy; + s32 sxy; + s32 p; + ReadGeomOffset(&ofx, &ofy); + func_8004921C(0, 0); + RotTransPers(a0, a1, &sxy, &p); + func_8004921C(ofx, ofy); +} + + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017D538); + + +// @class: regalloc-order +// @stuck: none — MATCH (relocation-masked, 70 ins). pins $s0/$s1 + precomputed a0v anchored in a zero-byte barrier fix the prologue schedule. + +extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); +extern s32 ratan2(s32, s32); +extern void func_8012B0B4(SVEC *, s32, s32); +extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); +extern void func_8012ADE4(u8 *a0); + +s32 func_8017E404(s32 param_1, s32 param_2) +{ + register s32 p1 __asm__("$16") = param_1; + register s32 p2 __asm__("$17") = param_2; + SVEC in; + SVEC out; + SVEC buf; + s32 d; + s32 ang; + u16 px, pz; + s32 a0v; + + a0v = p1 + 4; + __asm__ __volatile__("" : : "r"(p2), "r"(a0v)); + if (((s32 (*)(s32, s32))func_8012BC60)(a0v, p2 + 4) >= 0x1000) { + return 0; + } + ang = ratan2((s32)*(s16 *)(p1 + 0xe) - (s32)*(s16 *)(p2 + 0xe), + (s32)*(s16 *)(p2 + 6) - (s32)*(s16 *)(p1 + 6)); + func_8012B0B4(&buf, (ang - 0x400) & 0xfff, 0x41); + d = *(s32 *)&buf; + px = *(u16 *)(p2 + 6); + out.vx = px; + out.vy = *(u16 *)(p2 + 0xa); + pz = *(u16 *)(p2 + 0xe); + out.vz = pz; + out.vx = px + d; + out.vz = pz + (d >> 16); + in.vx = *(u16 *)(p1 + 0x3a); + in.vy = *(u16 *)(p1 + 0x3e); + in.vz = *(u16 *)(p1 + 0x42); + if ((((s32 (*)(SVEC *, SVEC *, s32))func_8012CEB0)(&in, &out, 0) & 0x2000) == 0) { + ((void (*)(s32))func_8012ADE4)(p1); + return 1; + } + *(s16 *)(p1 + 6) = out.vx; + *(s16 *)(p1 + 0xa) = out.vy; + *(s16 *)(p1 + 0xe) = out.vz; + return 1; +} + + + +// @class: struct +// @stuck: none — MATCH expected (modeled on byte-proven DEFINE_func_8012E504 idiom: D_801202A0 base, 0x6480 end, 0x10C stride for-loop) + +extern u8 D_801202A0[]; +extern s32 func_8017E404(s32 a0, s32 a1); +extern s32 func_8012AE00(s32 a0); + +void func_8017E51C(s32 a0) { + s32 p; + s32 end; + s32 v; + v = *(u16 *)a0; + p = (s32)D_801202A0; + end = (s32)D_801202A0 + 0x6480; + for (; p != end; p += 0x10C) { + if (p != a0) { + if (*(u16 *)p == v) { + if (func_8017E404(a0, p) != 0) { + break; + } + } + } + } + ((void (*)(s32))func_8012AE00)(p); +} + + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017E5AC); + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017E6D8); + + +extern s16 D_8018E6CC; +extern s16 D_8018E6D0; +extern u16 D_80126B5E; +extern s32 func_80013478(s32 a0, s32 a1); +extern s32 ratan2(s32, s32); +s32 func_8017E958(s32 param_1, s32 param_2) { + s32 local_20[2] = {0x3c100, 0x51000}; + s32 iVar1; + s32 iVar2; + if ((s32)((u32)*(u16 *)(param_1 + 0x70) << 0x10) >> 0x18 == 4) { + iVar1 = ((s32 (*)(s32, void *))func_80013478)(param_1 + 4, &D_8018E6CC); + if (param_2 == 1) { + iVar2 = ratan2((s32)*(s16 *)(param_1 + 0xe) - (s32)D_8018E6D0, + (s32)D_8018E6CC - (s32)*(s16 *)(param_1 + 6)); + if ((((u32)iVar2 - 0x400U) & 0xfff) - 0x381 < 0xff && 0x2df < (*(s16 *)&D_80126B5E) && + 0x3c100 < iVar1) { return 1; } + } + if (local_20[param_2] < iVar1 && *(s32 *)(param_1 + 0xe8) < iVar1) { + *(s32 *)(param_1 + 0xe8) = iVar1; return 1; + } + *(s32 *)(param_1 + 0xe8) = iVar1; + } + return 0; +} + + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017EA84); + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017F390); + + +// @class: plumbing +// @stuck: none — MATCH expected; simple param-survives-call store sequence + +extern void func_8012A828(s32 a0, void *a1); +extern char D_801A668C[]; + +void func_8017F5A0(int param_1) +{ + *(short *)(param_1 + 2) = 2; + *(short *)(param_1 + 0x34) = 0; + func_8012A828(param_1, &D_801A668C); + *(int *)(param_1 + 0x1c) = 0x14; +} + + + +// @class: plumbing +// @stuck: none — MATCH expected; param_1 survives call in $s0 naturally (single global allocno) + +extern void func_8012A828(s32 a0, void *a1); +extern s32 D_801A72C4; + +void func_8017F5E4(s32 param_1) { + *(s16 *)(param_1 + 2) = 2; + *(s16 *)(param_1 + 0x34) = 3; + func_8012A828(param_1, &D_801A72C4); + *(s32 *)(param_1 + 0x1c) = 0x1e; +} + + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017F62C); + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017F950); + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017AE2C", func_8017FB24); + +DEFINE_func_8017FC9C() /* dedup: shared engine-core @0x8017FC9C (src/shared) */ + + + + diff --git a/src/ov_SC02_004/ov_SC02_004_jr_8017A4AC.c b/src/ov_SC02_004/ov_SC02_004_jr_8017A4AC.c index 00c6f8eba..f93db19f8 100644 --- a/src/ov_SC02_004/ov_SC02_004_jr_8017A4AC.c +++ b/src/ov_SC02_004/ov_SC02_004_jr_8017A4AC.c @@ -2967,798 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8019622C; - extern s16 D_8019622E; - extern s16 D_80196230; - extern s16 D_80196224; - extern s16 D_80196226; - extern s16 D_80196228; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019622C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019622E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80196230, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_80196224, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_80196226, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80196228, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801961B4; -extern u16 D_80196234; -extern u16 D_80196236; -extern u16 D_80196238; -extern s16 D_80196350; - -void func_8017B1D8(void) { - func_8012A418(); - D_80196350 = 0; - D_801961B4 = 0; - D_80196234 = D_80126B5E; - D_80196236 = D_80126B62; - D_80196238 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018161C[]; - extern s16 D_8019622C; - extern s16 D_80196224; - 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_8018161C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018161C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019622C; - s16 *p78C = &D_80196224; - *(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_80196350 = 1; - D_801961B4 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801961D4; - extern SV4_8017B368 D_801961DC; - extern s16 D_8019622C; - extern s16 D_80196224; - extern u16 D_8018161C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801961D4; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801961DC; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018161C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018161C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8019622C) = loc0; - (*(SV4_8017B368 *)&D_80196224) = loc1; - D_80196350 = 1; - D_801961B4 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018161C[]; - extern s16 D_8019622C; - extern s16 D_8019622E; - extern s16 D_80196230; - extern s16 D_80196224; - extern s16 D_80196226; - extern s16 D_80196228; - 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_8018161C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018161C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019622C; - s16 *p78C = &D_80196224; - *(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_8019622E; - v798 = D_80196230; - v78C = *p78C; - v78E = D_80196226; - v790 = D_80196228; - __asm__ __volatile__(""); - D_80196350 = 1; - D_801961B4 = 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_801961B4; -extern s16 D_8019622C; -extern s16 D_8019622E; -extern s16 D_80196230; -extern s16 D_80196224; -extern s16 D_80196226; -extern s16 D_80196228; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801961B4 = 0; - D_8019622C = (s16) D_80114F30; - D_8019622E = (s16) D_80114F34; - D_80196230 = (s16) D_80114F38; - D_80196224 = (s16) D_80114F24; - D_80196226 = (s16) D_80114F28; - D_80196228 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_80196244; -extern s16 D_80196246; -extern s16 D_80196248; -extern s16 D_8019624C; -extern s16 D_8019624E; -extern s16 D_80196250; - -void func_8017B824(void) { - D_80196244 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_80196246 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_80196248 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8019624C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8019624E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_80196250 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_80196244; -extern s16 D_80196246; -extern s16 D_80196248; -extern s16 D_8019624C; -extern s16 D_8019624E; -extern s16 D_80196250; - -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_80196244; - D_80114F34 = D_80196246; - D_80114F38 = D_80196248; - D_80114F24 = D_8019624C; - D_80114F28 = D_8019624E; - D_80114F2C = D_80196250; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8019622C), src[8..15] -> (*(S8_8017B8E8 *)&D_80196224) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8019622C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_80196224) = ((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_80196234; -extern u16 D_80196236; -extern u16 D_80196238; - -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_801961B4; -extern short D_8019623C; -extern short D_8019623E; -extern short D_80196240; -extern s16 D_8019622C; -extern s16 D_8019622E; -extern s16 D_80196230; -extern s16 D_80196224; -extern s16 D_80196226; -extern s16 D_80196228; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_80196234); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_80196236); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80196238); - (*(s16 *)&D_8019623C) = buf[0]; - (*(s16 *)&D_8019623E) = buf[1]; - (*(s16 *)&D_80196240) = buf[2]; - D_8019622C = D_80114F30 + buf[0]; - D_801961B4 = 0; - D_8019622E = D_80114F34 + buf[1]; - D_80196230 = D_80114F38 + buf[2]; - D_80196224 = D_80114F24 + buf[0]; - D_80196226 = D_80114F28 + buf[1]; - D_80196228 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801961D4; -extern SV4 D_801961DC; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801961DC) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801961D4 = 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_801961DC = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801961DC)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801961D4) = 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_801961DC) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801961FC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801961FC; - 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_801961B4; -extern s16 D_80196350; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801961B4 = D_801961B4 + 1; - if (D_801961B4 >= 0x1F) { - D_80196350 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801961B4; -extern s16 D_80196350; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801961B4 = D_801961B4 + 1; - if (0x18 < D_801961B4) { - func_8012A4BC(); - D_80196350 = 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_801961B4; -extern void (*D_801961F8)(void); -extern short D_8019623C; -extern short D_8019623E; -extern short D_80196240; -extern s16 D_80196350; - -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_801961B4 = D_801961B4 + 1; - if (D_801961B4 >= 0x19) { - if (D_801961F8 != 0) { - (*D_801961F8)(); - } else { - D_80114F30 = D_80114F30 + D_8019623C; - D_80114F34 = D_80114F34 + D_8019623E; - D_80114F38 = D_80114F38 + D_80196240; - D_80114F24 = D_80114F24 + D_8019623C; - D_80114F28 = D_80114F28 + D_8019623E; - D_80114F2C = D_80114F2C + D_80196240; - func_8012A4BC(); - } - D_80196350 = 0; - } -} - - - -extern void (*D_801816BC[])(void); - -void func_8017BE60(void *a0) { - D_801816BC[*(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) */ - -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017A4AC", func_8017BEBC); - -extern void ReadRotMatrix(void *a0); -extern void PushMatrix(void); -extern void func_8004974C(void *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void PopMatrix(void); -void func_8017C294(u16 *a0, void *a1) { - s32 mat[8]; - s32 buf[8]; - s16 sv[4]; - ReadRotMatrix((void *)mat); - PushMatrix(); - sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); - sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); - sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); - func_8004974C((void *)mat, (void *)buf); - ApplyMatrixSV((void *)buf, (void *)sv, a1); - PopMatrix(); -} - - -int func_8017C338(short *param_1, short *param_2, short *param_3, int param_4) { - register int i2o __asm__("$5"); - register int i4o __asm__("$9"); - short sVar1; int rx, rz, uVar5; - i4o = param_2[1]; - __asm__ __volatile__("" : : "r"(i4o)); - i2o = param_1[1]; uVar5 = 0; - if (i2o >= i4o) { - rx = param_1[0] - i2o * (param_2[0] - param_1[0]); - rz = param_1[2] - i2o * (param_2[2] - param_1[2]); - } else { - register int den __asm__("$3"); - int p2x = param_2[0], p2z = param_2[2]; - den = i2o - i4o; - rx = p2x + i4o * (p2x - param_1[0]) / den; - rz = p2z + i4o * (p2z - param_1[2]) / den; - } - if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } - else i2o = -0x7fff; - *param_3 = (short)i2o; - if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } - else i2o = -0x7fff; - param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; - if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } - if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } - if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } - if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } - return uVar5; -} - - -extern void ReadGeomOffset(s32 *a0, s32 *a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8004921C(s32 a0, s32 a1); -void func_8017C530(s32 a0, s32 a1) { - s32 ofx; - s32 ofy; - s32 sxy; - s32 p; - ReadGeomOffset(&ofx, &ofy); - func_8004921C(0, 0); - RotTransPers(a0, a1, &sxy, &p); - func_8004921C(ofx, ofy); -} - - -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017A4AC", func_8017C59C); - -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017A4AC", func_8017D468); - - -extern void (*D_80181718[])(void); - -void func_8017D49C(void *a0) { - D_80181718[*(u8 *)((s32)a0 + 0x15)](); -} - - - -// @class: plumbing -// @stuck: none — MATCH (simple two-call wrapper, $s0 holds param across calls by default regalloc) - -extern void func_8017D670(void *arg0); -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_800167B8(s32 a0); - -s32 func_8017D4D8(s32 param_1) -{ - ((void (*)(void *, s32))func_8016EDEC)(func_8017D670, 0x1000000); - func_800167B8(0); - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - return 0; -} - - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017D528(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_80181720[])(void); - -void func_8017D54C(void *a0) { - D_80181720[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8017D804(void *arg0); - -s32 func_8017D588(s32 param_1) { - ((void (*)(void *, s32))func_8016EDEC)((void *)func_8017D804, 0x1000000); - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - *(s32 *)(param_1 + 0x28) = 10; - 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_8017D5D4(u8 *a0) { - if (--(*(s32 *)(a0 + 0x28)) == -1) { - func_8002D4C8(0x1C, 0); - func_8001BFD0(); - func_8002D4C8(0x1D, 0); - func_800D0C48(2); - func_800D1E28(); - *(u8 *)(a0 + 0x15) += 1; - } - return 0; -} - - -extern void func_800D1EBC(void); - void func_8017D650(void) { - func_800D1EBC(); - } - - - -extern void (*D_8018172C[])(void); - -void func_8017D670(void *a0) { - D_8018172C[*(u8 *)((s32)a0 + 0x214)](); -} - - -void func_8017D6AC(u8 *a0) { - *(s32 *)(a0 + 0x204) = 0x20; - *(u8 *)(a0 + 0x214) += 1; - } - - -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017A4AC", func_8017D6C4); - -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017A4AC", func_8017D6F0); - -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017A4AC", func_8017D7B4); - - -extern void (*D_8018173C[])(void); - -void func_8017D804(void *a0) { - D_8018173C[*(u8 *)((s32)a0 + 0x214)](); -} - - -void func_8017D840(u8 *a0) { - *(u8 *)(a0 + 0x214) += 1; - } - - -extern void func_8016F0E4(void); - void func_8017D854(void) { - ((s32 (*)(void))func_8016F0E4)(); - } - - - -extern void (*D_801817F8[])(void); - -void func_8017D874(void *a0) { - D_801817F8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017A4AC", func_8017D8B0); - -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017A4AC", func_8017D910); - -extern u16 D_80126B66; - void func_8017D99C(s32 *a0) { - if (*(s16 *)((char *)a0 + 0xe) < *(s16 *)&D_80126B66) { - *(s16 *)((char *)a0 + 0x2) = 0; - } - } - - -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017A4AC", func_8017D9C4); - -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017A4AC", func_8017DA30); - -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017A4AC", func_8017DB2C); - - -extern void (*D_80181804[])(void); - -void func_8017DC54(void *a0) { - D_80181804[*(u16 *)((s32)a0 + 0x2)](); -} - - - - diff --git a/src/ov_SC02_004/ov_SC02_004_jr_8017AE2C.c b/src/ov_SC02_004/ov_SC02_004_jr_8017AE2C.c new file mode 100644 index 000000000..aeaf331db --- /dev/null +++ b/src/ov_SC02_004/ov_SC02_004_jr_8017AE2C.c @@ -0,0 +1,3696 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80180214; +extern u8 D_80180184; +extern u8 D_80180160; +extern u8 D_8018013C; +extern u8 D_801801F0; +extern u8 D_801801CC; +extern u8 D_801801A8; +extern u8 D_80180118; +extern void func_80145934(void); +extern u8 D_801802A4; +extern u8 D_80180280; +extern u8 D_8018025C; +extern u8 D_80180238; +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_8017F69C[]; +extern unsigned char D_8017F6CC[]; +extern unsigned char D_8017F71C[]; +extern unsigned char D_8017F74C[]; +extern unsigned char D_8017F77C[]; +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(void); +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_8017F7CC[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8017F894[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8017F91C[]; +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_8017F924; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801950B0; +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_801950B4; +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_8017F954; +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 void 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_8017F9FC[])(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_8017FA20[])(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_8017FA10; +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_8017FA34[])(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_8017FA40[]; +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_8017FA50[])(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_8017FA68[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8017FA58; +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_8017FA7C[])(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_8017FA98[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8017FA88; +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_8017FAAC[])(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_8017FAC0[])(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_8017FAD4; +extern void (*D_8017FAFC[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8017FADC; +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_8017FB48[])(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_8017FB4C[])(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(void *a0); +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_8017FFB0[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8017FFC0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801950E8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8017FFE8[])(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_8017FFC8; +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_8017FFD8; +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_80180028[])(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_80180030[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8017FFFC; +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_8018003C[])(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_8018000C; +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_801950F0; +extern s32 D_801950FC; +extern s32 D_80195100; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180078[])(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_8018004C[]; +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_801950F8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801802C8[])(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_801800E8[]; +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_8018036C[])(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_801804C0[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801802DC; +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_801804C8[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801802EC; +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_8018030C; +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_801804D0[])(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(void); +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_801804F8[])(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_80180504[])(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_80180378[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801805A8; +extern void func_8015D380(s32 a0); +extern unsigned char D_8017F68C[]; +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_801805BC[]; +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_801805F8[]; +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_80180640; +extern u16 D_80180642; +extern u16 D_80180644; +extern s32 D_80180648; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80180650; +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_8018035C; +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_801806D4[]; +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_80180784[])(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_801807B4[]; +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_80180818; +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_80195108[]; +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_8018083C[])(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_80195160[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80180884[])(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_80180874; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801949C4[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_8018088C[])(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_801808E0[])(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_801808A8; +extern s16 D_801808DC; +extern s16 D_801808DA; +extern s16 D_801808D8; +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_801808EC[])(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_801951C0; +extern u8 D_801951C1; +extern u8 D_801951C2; +extern u8 D_801951C3; +extern u8 D_801951C4; +extern u8 D_801951C5; +extern u8 D_801951C6; +extern u8 D_801951C7; +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_801808FC[])(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_80195200; +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_80180940[])(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_801809BC[]; +extern s32 D_801809DC[]; +extern u8 D_80180A58[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80180A78[]; +extern u8 D_80180A98[]; +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_80180B34[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80180BB0[])(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_801949D4; +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_80180BBC[])(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_80180BC4[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80180C8C[])(void); +extern void func_80166618(void *a0); +extern void (*D_80180C9C[])(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_80180CAC[])(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_80180CB8[])(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_80180C18[]; +extern u8 D_80180C2C[]; +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_80180CD0[])(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_80180CD8[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80180CE0[])(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_80180CE8[])(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_80180CF0[])(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_80180CF8[])(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_80180D00[])(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_80180DB4[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80180DBC[])(void); +extern void func_80169F00(void *a0); +extern char D_80180D6C[]; +extern char D_80180D2C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80180DF4[])(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_80180E00[])(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_80180E48[])(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_80180EC4[])(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_80195520; +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_80180EB8[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80180EFC[]; +extern unsigned short D_80180F04[]; +extern unsigned short D_80180F0C[]; +extern unsigned char D_80195528[]; +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_80195520; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80180F14[])(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_8019565C; +extern M2C_UNK D_80195660; +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_801955E8; +extern void (*D_80180F44[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80195664[]; +extern u8 D_8019566C[]; +extern u8 D_8019561C[]; +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_80180F4C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80180F68[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80180F70[])(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_80180FD8[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80180F7C; +extern u8 D_80180F88; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018100C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80181014[])(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_80181068[])(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_8018109C[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018108C[]; +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_801810B8; +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); +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_80181130[])(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_80181138[])(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_80181140[])(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_80181148[])(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_80181150[])(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_80181158[])(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_80181164[])(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_80181170[])(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_8018117C[])(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_8018118C[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018119C[])(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_801811A4[])(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_801811AC[])(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_801811B4[])(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_801811BC[])(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_801811C4[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801811CC[])(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_801811D4[])(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_801811DC[])(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_801811E4[])(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_801811EC[])(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_801811F4[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801811FC[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80181204[])(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_8018120C[])(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_80181214[])(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_8018121C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80181224[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018122C[])(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_80181234[])(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_8018123C[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80181244[])(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_8018124C[])(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_80181290[])(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_80181254; +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_801812C0[])(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_801812FC[])(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(s32); +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_80181354[])(); +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_80181364[])(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_8018136C[])(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_801814D4[])(); +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_801814E0[])(); +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_80194C1C; +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 int func_801789AC(void); +extern s16 D_80196350; +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_80195DA0; +extern short D_801963C4; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801961CC; +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_801961F4; +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_801961B0; +extern s32 func_8017A3B0(void); +extern short D_801961EC; +extern short D_801961E8; +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_80196320; +extern s16 D_80196322; +extern s16 D_8019632C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_80196320; + + 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_8019632C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_80196320+0xC == &D_8019632C; 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_80196320 + 0xC)) < 0x101) { + D_80196320 = 0; + D_80196322 = 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_8019632C); + 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_80196320 + 0xC)) < 0x101) { + D_80196320 = 0; + D_80196322 = 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_8019622C; + extern s16 D_8019622E; + extern s16 D_80196230; + extern s16 D_80196224; + extern s16 D_80196226; + extern s16 D_80196228; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019622C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019622E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80196230, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_80196224, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_80196226, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80196228, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801961B4; +extern u16 D_80196234; +extern u16 D_80196236; +extern u16 D_80196238; +extern s16 D_80196350; + +void func_8017B1D8(void) { + func_8012A418(); + D_80196350 = 0; + D_801961B4 = 0; + D_80196234 = D_80126B5E; + D_80196236 = D_80126B62; + D_80196238 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018161C[]; + extern s16 D_8019622C; + extern s16 D_80196224; + 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_8018161C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018161C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019622C; + s16 *p78C = &D_80196224; + *(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_80196350 = 1; + D_801961B4 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801961D4; + extern SV4_8017B368 D_801961DC; + extern s16 D_8019622C; + extern s16 D_80196224; + extern u16 D_8018161C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801961D4; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801961DC; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018161C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018161C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8019622C) = loc0; + (*(SV4_8017B368 *)&D_80196224) = loc1; + D_80196350 = 1; + D_801961B4 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018161C[]; + extern s16 D_8019622C; + extern s16 D_8019622E; + extern s16 D_80196230; + extern s16 D_80196224; + extern s16 D_80196226; + extern s16 D_80196228; + 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_8018161C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018161C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019622C; + s16 *p78C = &D_80196224; + *(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_8019622E; + v798 = D_80196230; + v78C = *p78C; + v78E = D_80196226; + v790 = D_80196228; + __asm__ __volatile__(""); + D_80196350 = 1; + D_801961B4 = 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_801961B4; +extern s16 D_8019622C; +extern s16 D_8019622E; +extern s16 D_80196230; +extern s16 D_80196224; +extern s16 D_80196226; +extern s16 D_80196228; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801961B4 = 0; + D_8019622C = (s16) D_80114F30; + D_8019622E = (s16) D_80114F34; + D_80196230 = (s16) D_80114F38; + D_80196224 = (s16) D_80114F24; + D_80196226 = (s16) D_80114F28; + D_80196228 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_80196244; +extern s16 D_80196246; +extern s16 D_80196248; +extern s16 D_8019624C; +extern s16 D_8019624E; +extern s16 D_80196250; + +void func_8017B824(void) { + D_80196244 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_80196246 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_80196248 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8019624C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8019624E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_80196250 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_80196244; +extern s16 D_80196246; +extern s16 D_80196248; +extern s16 D_8019624C; +extern s16 D_8019624E; +extern s16 D_80196250; + +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_80196244; + D_80114F34 = D_80196246; + D_80114F38 = D_80196248; + D_80114F24 = D_8019624C; + D_80114F28 = D_8019624E; + D_80114F2C = D_80196250; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8019622C), src[8..15] -> (*(S8_8017B8E8 *)&D_80196224) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8019622C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_80196224) = ((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_80196234; +extern u16 D_80196236; +extern u16 D_80196238; + +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_801961B4; +extern short D_8019623C; +extern short D_8019623E; +extern short D_80196240; +extern s16 D_8019622C; +extern s16 D_8019622E; +extern s16 D_80196230; +extern s16 D_80196224; +extern s16 D_80196226; +extern s16 D_80196228; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_80196234); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_80196236); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80196238); + (*(s16 *)&D_8019623C) = buf[0]; + (*(s16 *)&D_8019623E) = buf[1]; + (*(s16 *)&D_80196240) = buf[2]; + D_8019622C = D_80114F30 + buf[0]; + D_801961B4 = 0; + D_8019622E = D_80114F34 + buf[1]; + D_80196230 = D_80114F38 + buf[2]; + D_80196224 = D_80114F24 + buf[0]; + D_80196226 = D_80114F28 + buf[1]; + D_80196228 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801961D4; +extern SV4 D_801961DC; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801961DC) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801961D4 = 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_801961DC = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801961DC)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801961D4) = 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_801961DC) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801961FC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801961FC; + 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_801961B4; +extern s16 D_80196350; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801961B4 = D_801961B4 + 1; + if (D_801961B4 >= 0x1F) { + D_80196350 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801961B4; +extern s16 D_80196350; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801961B4 = D_801961B4 + 1; + if (0x18 < D_801961B4) { + func_8012A4BC(); + D_80196350 = 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_801961B4; +extern void (*D_801961F8)(void); +extern short D_8019623C; +extern short D_8019623E; +extern short D_80196240; +extern s16 D_80196350; + +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_801961B4 = D_801961B4 + 1; + if (D_801961B4 >= 0x19) { + if (D_801961F8 != 0) { + (*D_801961F8)(); + } else { + D_80114F30 = D_80114F30 + D_8019623C; + D_80114F34 = D_80114F34 + D_8019623E; + D_80114F38 = D_80114F38 + D_80196240; + D_80114F24 = D_80114F24 + D_8019623C; + D_80114F28 = D_80114F28 + D_8019623E; + D_80114F2C = D_80114F2C + D_80196240; + func_8012A4BC(); + } + D_80196350 = 0; + } +} + + + +extern void (*D_801816BC[])(void); + +void func_8017BE60(void *a0) { + D_801816BC[*(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) */ + +INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017AE2C", func_8017BEBC); + +extern void ReadRotMatrix(void *a0); +extern void PushMatrix(void); +extern void func_8004974C(void *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern void PopMatrix(void); +void func_8017C294(u16 *a0, void *a1) { + s32 mat[8]; + s32 buf[8]; + s16 sv[4]; + ReadRotMatrix((void *)mat); + PushMatrix(); + sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); + sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); + sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); + func_8004974C((void *)mat, (void *)buf); + ApplyMatrixSV((void *)buf, (void *)sv, a1); + PopMatrix(); +} + + +int func_8017C338(short *param_1, short *param_2, short *param_3, int param_4) { + register int i2o __asm__("$5"); + register int i4o __asm__("$9"); + short sVar1; int rx, rz, uVar5; + i4o = param_2[1]; + __asm__ __volatile__("" : : "r"(i4o)); + i2o = param_1[1]; uVar5 = 0; + if (i2o >= i4o) { + rx = param_1[0] - i2o * (param_2[0] - param_1[0]); + rz = param_1[2] - i2o * (param_2[2] - param_1[2]); + } else { + register int den __asm__("$3"); + int p2x = param_2[0], p2z = param_2[2]; + den = i2o - i4o; + rx = p2x + i4o * (p2x - param_1[0]) / den; + rz = p2z + i4o * (p2z - param_1[2]) / den; + } + if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } + else i2o = -0x7fff; + *param_3 = (short)i2o; + if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } + else i2o = -0x7fff; + param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; + if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } + if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } + if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } + if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } + return uVar5; +} + + +extern void ReadGeomOffset(s32 *a0, s32 *a1); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +extern void func_8004921C(s32 a0, s32 a1); +void func_8017C530(s32 a0, s32 a1) { + s32 ofx; + s32 ofy; + s32 sxy; + s32 p; + ReadGeomOffset(&ofx, &ofy); + func_8004921C(0, 0); + RotTransPers(a0, a1, &sxy, &p); + func_8004921C(ofx, ofy); +} + + +INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017AE2C", func_8017C59C); + +INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017AE2C", func_8017D468); + + +extern void (*D_80181718[])(void); + +void func_8017D49C(void *a0) { + D_80181718[*(u8 *)((s32)a0 + 0x15)](); +} + + + +// @class: plumbing +// @stuck: none — MATCH (simple two-call wrapper, $s0 holds param across calls by default regalloc) + +extern void func_8017D670(void *arg0); +extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); +extern void func_800167B8(s32 a0); + +s32 func_8017D4D8(s32 param_1) +{ + ((void (*)(void *, s32))func_8016EDEC)(func_8017D670, 0x1000000); + func_800167B8(0); + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + return 0; +} + + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017D528(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_80181720[])(void); + +void func_8017D54C(void *a0) { + D_80181720[*(u8 *)((s32)a0 + 0x15)](); +} + + + +extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); +extern void func_8017D804(void *arg0); + +s32 func_8017D588(s32 param_1) { + ((void (*)(void *, s32))func_8016EDEC)((void *)func_8017D804, 0x1000000); + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + *(s32 *)(param_1 + 0x28) = 10; + 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_8017D5D4(u8 *a0) { + if (--(*(s32 *)(a0 + 0x28)) == -1) { + func_8002D4C8(0x1C, 0); + func_8001BFD0(); + func_8002D4C8(0x1D, 0); + func_800D0C48(2); + func_800D1E28(); + *(u8 *)(a0 + 0x15) += 1; + } + return 0; +} + + +extern void func_800D1EBC(void); + void func_8017D650(void) { + func_800D1EBC(); + } + + + +extern void (*D_8018172C[])(void); + +void func_8017D670(void *a0) { + D_8018172C[*(u8 *)((s32)a0 + 0x214)](); +} + + +void func_8017D6AC(u8 *a0) { + *(s32 *)(a0 + 0x204) = 0x20; + *(u8 *)(a0 + 0x214) += 1; + } + + +INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017AE2C", func_8017D6C4); + +INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017AE2C", func_8017D6F0); + +INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017AE2C", func_8017D7B4); + + +extern void (*D_8018173C[])(void); + +void func_8017D804(void *a0) { + D_8018173C[*(u8 *)((s32)a0 + 0x214)](); +} + + +void func_8017D840(u8 *a0) { + *(u8 *)(a0 + 0x214) += 1; + } + + +extern void func_8016F0E4(void); + void func_8017D854(void) { + ((s32 (*)(void))func_8016F0E4)(); + } + + + +extern void (*D_801817F8[])(void); + +void func_8017D874(void *a0) { + D_801817F8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017AE2C", func_8017D8B0); + +INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017AE2C", func_8017D910); + +extern u16 D_80126B66; + void func_8017D99C(s32 *a0) { + if (*(s16 *)((char *)a0 + 0xe) < *(s16 *)&D_80126B66) { + *(s16 *)((char *)a0 + 0x2) = 0; + } + } + + +INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017AE2C", func_8017D9C4); + +INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017AE2C", func_8017DA30); + +INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017AE2C", func_8017DB2C); + + +extern void (*D_80181804[])(void); + +void func_8017DC54(void *a0) { + D_80181804[*(u16 *)((s32)a0 + 0x2)](); +} + + + + + diff --git a/src/ov_SC02_005/ov_SC02_005_jr_8017A4AC.c b/src/ov_SC02_005/ov_SC02_005_jr_8017A4AC.c index 82e02823b..7c34eed68 100644 --- a/src/ov_SC02_005/ov_SC02_005_jr_8017A4AC.c +++ b/src/ov_SC02_005/ov_SC02_005_jr_8017A4AC.c @@ -2969,2489 +2969,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801E42A4; - extern s16 D_801E42A6; - extern s16 D_801E42A8; - extern s16 D_801E429C; - extern s16 D_801E429E; - extern s16 D_801E42A0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801E42A4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801E42A6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801E42A8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801E429C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801E429E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801E42A0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801E422C; -extern u16 D_801E42AC; -extern u16 D_801E42AE; -extern u16 D_801E42B0; -extern s16 D_801E4BD8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801E4BD8 = 0; - D_801E422C = 0; - D_801E42AC = D_80126B5E; - D_801E42AE = D_80126B62; - D_801E42B0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80194220[]; - extern s16 D_801E42A4; - extern s16 D_801E429C; - 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_80194220[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80194220[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E42A4; - s16 *p78C = &D_801E429C; - *(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_801E4BD8 = 1; - D_801E422C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801E424C; - extern SV4_8017B368 D_801E4254; - extern s16 D_801E42A4; - extern s16 D_801E429C; - extern u16 D_80194220; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801E424C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801E4254; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80194220)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80194220)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801E42A4) = loc0; - (*(SV4_8017B368 *)&D_801E429C) = loc1; - D_801E4BD8 = 1; - D_801E422C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80194220[]; - extern s16 D_801E42A4; - extern s16 D_801E42A6; - extern s16 D_801E42A8; - extern s16 D_801E429C; - extern s16 D_801E429E; - extern s16 D_801E42A0; - 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_80194220[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80194220[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E42A4; - s16 *p78C = &D_801E429C; - *(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_801E42A6; - v798 = D_801E42A8; - v78C = *p78C; - v78E = D_801E429E; - v790 = D_801E42A0; - __asm__ __volatile__(""); - D_801E4BD8 = 1; - D_801E422C = 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_801E422C; -extern s16 D_801E42A4; -extern s16 D_801E42A6; -extern s16 D_801E42A8; -extern s16 D_801E429C; -extern s16 D_801E429E; -extern s16 D_801E42A0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801E422C = 0; - D_801E42A4 = (s16) D_80114F30; - D_801E42A6 = (s16) D_80114F34; - D_801E42A8 = (s16) D_80114F38; - D_801E429C = (s16) D_80114F24; - D_801E429E = (s16) D_80114F28; - D_801E42A0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801E42BC; -extern s16 D_801E42BE; -extern s16 D_801E42C0; -extern s16 D_801E42C4; -extern s16 D_801E42C6; -extern s16 D_801E42C8; - -void func_8017B824(void) { - D_801E42BC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801E42BE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801E42C0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801E42C4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801E42C6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801E42C8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801E42BC; -extern s16 D_801E42BE; -extern s16 D_801E42C0; -extern s16 D_801E42C4; -extern s16 D_801E42C6; -extern s16 D_801E42C8; - -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_801E42BC; - D_80114F34 = D_801E42BE; - D_80114F38 = D_801E42C0; - D_80114F24 = D_801E42C4; - D_80114F28 = D_801E42C6; - D_80114F2C = D_801E42C8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801E42A4), src[8..15] -> (*(S8_8017B8E8 *)&D_801E429C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801E42A4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801E429C) = ((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_801E42AC; -extern u16 D_801E42AE; -extern u16 D_801E42B0; - -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_801E422C; -extern short D_801E42B4; -extern short D_801E42B6; -extern short D_801E42B8; -extern s16 D_801E42A4; -extern s16 D_801E42A6; -extern s16 D_801E42A8; -extern s16 D_801E429C; -extern s16 D_801E429E; -extern s16 D_801E42A0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801E42AC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801E42AE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801E42B0); - (*(s16 *)&D_801E42B4) = buf[0]; - (*(s16 *)&D_801E42B6) = buf[1]; - (*(s16 *)&D_801E42B8) = buf[2]; - D_801E42A4 = D_80114F30 + buf[0]; - D_801E422C = 0; - D_801E42A6 = D_80114F34 + buf[1]; - D_801E42A8 = D_80114F38 + buf[2]; - D_801E429C = D_80114F24 + buf[0]; - D_801E429E = D_80114F28 + buf[1]; - D_801E42A0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801E424C; -extern SV4 D_801E4254; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801E4254) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801E424C = 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_801E4254 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801E4254)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801E424C) = 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_801E4254) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801E4274[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801E4274; - 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_801E422C; -extern s16 D_801E4BD8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801E422C = D_801E422C + 1; - if (D_801E422C >= 0x1F) { - D_801E4BD8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801E422C; -extern s16 D_801E4BD8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801E422C = D_801E422C + 1; - if (0x18 < D_801E422C) { - func_8012A4BC(); - D_801E4BD8 = 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_801E422C; -extern void (*D_801E4270)(void); -extern short D_801E42B4; -extern short D_801E42B6; -extern short D_801E42B8; -extern s16 D_801E4BD8; - -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_801E422C = D_801E422C + 1; - if (D_801E422C >= 0x19) { - if (D_801E4270 != 0) { - (*D_801E4270)(); - } else { - D_80114F30 = D_80114F30 + D_801E42B4; - D_80114F34 = D_80114F34 + D_801E42B6; - D_80114F38 = D_80114F38 + D_801E42B8; - D_80114F24 = D_80114F24 + D_801E42B4; - D_80114F28 = D_80114F28 + D_801E42B6; - D_80114F2C = D_80114F2C + D_801E42B8; - func_8012A4BC(); - } - D_801E4BD8 = 0; - } -} - - - -extern void (*D_801942C0[])(void); - -void func_8017BE60(void *a0) { - D_801942C0[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017BE9C); - -extern void func_8017BF14(s32 arg0, s32 arg1, s32 arg2, s32 arg3); - void func_8017BEC0(s32 arg0, s32 arg1, s16 arg2) { - func_8017BF14(arg0, arg1, arg2, 0); - } - - -extern void func_8017BF14(s32 arg0, s32 arg1, s32 arg2, s32 arg3); - void func_8017BEE8(void *a0, void *a1, s32 a2, s32 a3) { - ((void (*)(void *, void *, s32, s32))func_8017BF14)(a0, a1, (s16)a2, (s16)a3); - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017BF14); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017BF9C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017BFF0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017C048); - - -extern void (*D_80194320[])(void); - -void func_8017C0F4(void *a0) { - D_80194320[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017C130); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017C41C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017C8B0); - -extern void ReadRotMatrix(void *a0); -extern void PushMatrix(void); -extern void func_8004974C(void *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void PopMatrix(void); -void func_8017CC88(u16 *a0, void *a1) { - s32 mat[8]; - s32 buf[8]; - s16 sv[4]; - ReadRotMatrix((void *)mat); - PushMatrix(); - sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); - sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); - sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); - func_8004974C((void *)mat, (void *)buf); - ApplyMatrixSV((void *)buf, (void *)sv, a1); - PopMatrix(); -} - - -int func_8017CD2C(short *param_1, short *param_2, short *param_3, int param_4) { - register int i2o __asm__("$5"); - register int i4o __asm__("$9"); - short sVar1; int rx, rz, uVar5; - i4o = param_2[1]; - __asm__ __volatile__("" : : "r"(i4o)); - i2o = param_1[1]; uVar5 = 0; - if (i2o >= i4o) { - rx = param_1[0] - i2o * (param_2[0] - param_1[0]); - rz = param_1[2] - i2o * (param_2[2] - param_1[2]); - } else { - register int den __asm__("$3"); - int p2x = param_2[0], p2z = param_2[2]; - den = i2o - i4o; - rx = p2x + i4o * (p2x - param_1[0]) / den; - rz = p2z + i4o * (p2z - param_1[2]) / den; - } - if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } - else i2o = -0x7fff; - *param_3 = (short)i2o; - if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } - else i2o = -0x7fff; - param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; - if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } - if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } - if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } - if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } - return uVar5; -} - - -extern void ReadGeomOffset(s32 *a0, s32 *a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8004921C(s32 a0, s32 a1); -void func_8017CF24(s32 a0, s32 a1) { - s32 ofx; - s32 ofy; - s32 sxy; - s32 p; - ReadGeomOffset(&ofx, &ofy); - func_8004921C(0, 0); - RotTransPers(a0, a1, &sxy, &p); - func_8004921C(ofx, ofy); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017CF90); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017DE5C); - -extern void func_8012A018(s32 a, s32 b); - extern void func_8017E97C(); - void func_8017DF00(void) { - ((void (*)(void *, s32))func_8012A018)((void *)func_8017E97C, 0x2); - } - - -extern void func_8012A018(s32 a, s32 b); - extern void func_8017E97C(); - void func_8017DF28(void) { - ((void (*)(void *, s32))func_8012A018)((void *)func_8017E97C, 0x3); - } - - -extern void func_8012A018(s32 a, s32 b); - extern void func_8017E97C(void); - void func_8017DF50(void) { - ((void (*)(void *, s32))func_8012A018)((void *)func_8017E97C, 0x8); - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017DF78); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017E014); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017E0B4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017E190); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017E26C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017E348); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017E424); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017E454); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017E4F8); - -extern void func_8012A0E0(void); - void func_8017E5AC(void) { - ((s32 (*)(void))func_8012A0E0)(); - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017E5CC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017E664); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017E6FC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017E798); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017E898); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017E8E4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017E97C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017E9B8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017EA74); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017EA9C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017EAD4); - -void func_8017EB30(void) { -} - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017EB38); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017EB8C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017ECAC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017ED28); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017EDF8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017EFB4); - - -extern void (*D_8019439C[])(void); - -void func_8017F010(void *a0) { - D_8019439C[*(u8 *)((s32)a0 + 0x15)](); -} - - - -// @class: plumbing -// @stuck: none — MATCH (simple two-call wrapper, $s0 holds param across calls by default regalloc) - -extern void func_8017F428(void *arg0); -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_800167B8(s32 a0); - -s32 func_8017F04C(s32 param_1) -{ - ((void (*)(void *, s32))func_8016EDEC)(func_8017F428, 0x1000000); - func_800167B8(0); - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - return 0; -} - - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017F09C(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_801943A4[])(void); - -void func_8017F0C0(void *a0) { - D_801943A4[*(u8 *)((s32)a0 + 0x15)](); -} - - -s32 func_8017F0FC(u8 *a0) { - *(s32 *)(a0 + 0x28) = 0x14; - a0[0x15] += 1; - return 0; - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017F118); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017F194); - - -extern void (*D_80194454[])(void); - -void func_8017F1DC(void *a0) { - D_80194454[*(u8 *)((s32)a0 + 0x214)](); -} - - -extern void func_80171B44(s32 *a0); - void func_8017F218(u8 *a0) { - *(s8 *)(a0 + 0x214) += 1; - ((void (*)(void))func_80171B44)(); - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017F244); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017F2C4); - - -// @class: plumbing -// @stuck: none — MATCH (param_1 survives across func_8016F0E4 → lands in $s0; passed to func_80165770) - -extern void func_8016F0E4(void); -extern void func_80165770(void); -extern void func_80175414(s32); - -void func_8017F320(s32 param_1) -{ - func_8016F0E4(); - ((void (*)(s32))func_80165770)(param_1); - ((void (*)(void))func_80175414)(); -} - - - -extern void (*D_80194464[])(void); - -void func_8017F358(void *a0) { - D_80194464[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017F394); - - -// @class: plumbing -// @stuck: none — MATCH (expected); simple call + conditional u8 increment - -extern s32 func_80171B4C(s32 a0, s32 a1); - -void func_8017F3C4(int param_1) -{ - if (func_80171B4C(param_1, 0x2) != 0) { - *(unsigned char *)(param_1 + 0x214) += 1; - } - return; -} - - -extern void func_8016F0E4(void); - void func_8017F408(void) { - func_8016F0E4(); - } - - - -extern void (*D_80194470[])(void); - -void func_8017F428(void *a0) { - D_80194470[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017F464); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017F530); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017F5B0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017F63C); - - -extern s32 D_801270C8; -extern void func_8017F6A4(void); - -void func_8017F674(void) { - if (D_801270C8 == 6) { - func_8017F6A4(); - } -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017F6A4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017F6E8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017F748); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017F7CC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017F898); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017F924); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017F998); - -extern s32 D_801270C8; -extern void func_8017FA3C(void); - -void func_8017FA0C(void) { - if (*(s32 *)&D_801270C8 == 0xC) { - ((void (*)(void))func_8017FA3C)(); - } -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017FA3C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017FA94); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017FB14); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017FB80); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017FC64); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017FCFC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017FDB4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017FE08); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017FEA0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017FF2C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017FF8C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8017FFF0); - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80180060); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801800CC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018016C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801801DC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80180234); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801802CC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80180328); - - -extern void (*D_801944E8[])(void); - -void func_80180380(void *a0) { - D_801944E8[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801803BC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80180454); - -extern void func_8016EE94(); - extern char func_801804D4[]; - void func_801804AC(void) { - ((void (*)(char *, unsigned int))func_8016EE94)(func_801804D4, 0x1000000); - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801804D4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80180510); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80180574); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80180610); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018074C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801808B0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80180A3C); - -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); - extern s32 func_80180AA4(void); - void func_80180A7C(void) { - ((void (*)(s32, s32))func_8016EDEC)((s32)&func_80180AA4, 0x1000000); - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80180AA4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80180AE0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80180B18); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80180B90); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80180C04); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80180C3C); - - -extern void (*D_8019455C[])(void); - -void func_80180C64(void *a0) { - D_8019455C[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80180CA0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80180D18); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80180DB8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80180E08); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80180F5C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80180FA8); - -extern void func_8017E798(void *a0); -void func_80181028(void *a0) { - func_8017E798(a0); - *(u8 *)((s32)a0 + 0x214) += 1; -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80181060); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801810F0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018112C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018118C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80181238); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80181270); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801812B4); - - -extern void (*D_8019458C[])(void); - -void func_801812DC(void *a0) { - D_8019458C[*(u8 *)((s32)a0 + 0x214)](); -} - - -void func_80181318(void *a0) { - *(s32 *)((s32)a0 + 0x204) = 0x20; - *(u8 *)((s32)a0 + 0x214) += 1; - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80181330); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80181388); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801813F0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018141C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801814B4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80181570); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801815FC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018166C); - -s32 func_8018169C(s32 a0, s32 a1) { - s32 a2 = *(s32 *)((s32)a0 + 0x20); - u16 v1 = *(u16 *)((s32)a0 + 0x206); - u16 v0 = *(u16 *)((s32)a2 + 0x12); - *(u16 *)((s32)a2 + 0x12) = (v0 + v1) & 0xFFF; - return (*(s32 *)((s32)a0 + 0x204) -= a1); -} - - -s32 func_801816CC(s32 a0, s32 a1) { - s32 a2 = *(s32 *)((s32)a0 + 0x20); - u16 v1 = *(u16 *)((s32)a0 + 0x20A); - u16 v0 = *(u16 *)((s32)a2 + 0x10); - *(u16 *)((s32)a2 + 0x10) = (v0 - v1) & 0xFFF; - return (*(s32 *)((s32)a0 + 0x208) += a1); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801816FC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80181900); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80181984); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80181BE8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80181D30); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80181F04); - -void func_80181F68(void *a0) { - *(s16 *)((s32)a0 + 0x34) = 0; - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80181F70); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80181FA8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80181FE8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018203C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80182098); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801820E4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801821C8); - -extern void func_801862F0(void * arg0); - void func_80182284(s32 arg0) { - s32 temp_s0 = arg0; - ((void (*)(void))func_801862F0)(); - *(s16 *)(temp_s0 + 0x34) = 0x8; - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801822B4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801822EC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801824D0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80182740); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801827A8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80182810); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801828D8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80182918); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80182998); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80182A8C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80182D80); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80182DCC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80182E04); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80182E78); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80182EB0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80182F78); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80182FAC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018300C); - -void func_80183060(void *a0) { - *(short *)((char *)a0 + 0x34) = 0x3; - *(int *)((char *)a0 + 0x1c) = 0x20; - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80183074); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801830F4); - -void func_80183160(void *a0) { - *(s32 *)((char *)a0 + 0x1c) = 0x8; - *(s16 *)((char *)a0 + 0x34) = 0x6; - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80183174); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801831A4); - -void func_80183200(void *a0) { - *(s8 *)((s32)a0 + 0xc1) = 0; - *(s16 *)((s32)a0 + 0x5e) = 0; - *(u16 *)((s32)a0 + 0x5c) &= 0xfffe; - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80183218); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801834C8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80183524); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80183584); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80183610); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801838A8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80183B0C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80183C7C); - - -extern void (*D_80196320[])(void); - -void func_80183D18(void *a0) { - D_80196320[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80183D54); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80183D90); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80183FCC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801840E8); - -void func_8018415C(void *a0) { - s32 v0; - if (*(s16 *)((s32)a0 + 0xe) == 0) { - *(s16 *)((s32)a0 + 0xae) = -1; - v0 = *(u16 *)((s32)a0 + 0xfc); - *(u16 *)((s32)a0 + 0xfc) = v0 | 2; - } - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80184184); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801841E0); - - -extern void (*D_801963E8[])(void); - -void func_8018431C(void *a0) { - D_801963E8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80184358); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80184404); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80184480); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801844D4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018454C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801846CC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80184828); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801849E4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80184A34); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80184A8C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80184C20); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80184CA4); - -extern void func_8012AD44(s32 *a0, s16 a1); - void func_80184D24(void *arg0) { - ((void (*)(s32, s32))func_8012AD44)((s32)arg0, 0x7); - } - - - -extern void (*D_80196470[])(void); - -void func_80184D44(void *a0) { - D_80196470[*(u16 *)((s32)a0 + 0x2)](); -} - - - -void func_80184D80(void *a0) { - *(s8 *)((s32)a0 + 0xc1) = 0; - *(s16 *)((s32)a0 + 0x5e) = 0; - *(u16 *)((s32)a0 + 0x5c) &= 0xfffe; - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80184D98); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80184E30); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80184EC0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80185060); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801851E0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80185214); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801853CC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801853EC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018548C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018550C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801856E4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80185764); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80185858); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801858C4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018592C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80185A04); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80185A88); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80185B38); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80185D6C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80185D84); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80185DD0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80185E54); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80185E80); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801860F4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80186144); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80186178); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018622C); - -void func_801862E0(s32 *a0) { - s32 v0 = *(s32 *)((s32)a0 + 0xCC); - *(s16 *)((s32)a0 + 0x98) = 0; - *(s16 *)(v0 + 0x98) = 0; - } - - -void func_801862F0(void * arg0) { - *(short *)((char *)arg0 + 0x98) = 1; - *(short *)(*(int *)((char *)arg0 + 0xcc) + 0x98) = 1; - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80186304); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80186424); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018655C); - -extern s32 func_8012D714(s32 param_1, u32 param_2); - extern u16 D_80126B96; - void func_801865D0(void *arg0) { - if (func_8012D714((s32)arg0, 0x5)) { - D_80126B96 = 0x4005; - } - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80186600); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018675C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018687C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018692C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801869E0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80186A04); - -extern s32 D_801961B8; - extern s32 D_801961E0; - void func_80186ADC(s32 arg0) { - *(s32 *)(*(s32 *)(arg0 + 0x20) + 0x80) = &D_801961B8; - *(s32 *)(*(s32 *)(*(s32 *)(arg0 + 0xcc) + 0x20) + 0x80) = &D_801961E0; - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80186B08); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80186BB8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80186C0C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80186C70); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80186CA8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80186D00); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80186D74); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80186DE8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80186F14); - -void func_80186F58(void *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80186F60); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80186F9C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187070); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801870BC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801871E4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187280); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187348); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801873FC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187508); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187560); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187664); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801876B0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187768); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801877FC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801878C0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018791C); - -extern void func_80181900(void *a0); - void func_801879DC(void *a0) { - *(s32 *)((s32)a0 + 0xE8) |= 1; - *(s16 *)((s32)a0 + 0xE0) = -1; - ((void (*)(void *))func_80181900)(a0); - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187A0C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187A38); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187A8C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187AD0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187B0C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187B48); - -extern s32 func_80185D84(s32 a0); -extern s32 func_80181F70(void *a0); -void func_80187B7C(int param_1) -{ - if (((int (*)(void))func_80185D84)() != 0) { - ((void (*)(int))func_80181F70)(param_1); - } -} - - -extern void func_80181FA8(void); - void func_80187BB4(s32 arg0) { - if (*(s16 *)((char *)arg0 + 0x98) == 0) { - ((void (*)(void))func_80181FA8)(); - } - } - - -extern void func_80181FE8(void); - void func_80187BE4(s32 *a0) { - if (*(s32 *)((char *)a0 + 0x94) == 0xB) { - ((void (*)(void))func_80181FE8)(); - } - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187C14); - -extern s32 func_8012BEE8(s32 a0); -extern s32 func_80182098(void *a0); -void func_80187C9C(int param_1) -{ - if (((int (*)(void))func_8012BEE8)() != 0) { - ((void (*)(int))func_80182098)(param_1); - } -} - - -extern s32 func_8012CBCC(s32 a0); -extern s32 func_801820E4(void *a0); -void func_80187CD4(int param_1) -{ - if (((int (*)(void))func_8012CBCC)() != 0) { - ((void (*)(int))func_801820E4)(param_1); - } -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187D0C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187D4C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187D90); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187DCC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187E18); - - -extern void func_8012CBF4(s32 a0); - extern void func_80182E04(void *a0); - void func_80187F1C(void *a0) { - if ((((s32 (*)(s32))func_8012CBF4)((s32)a0) & 0x2000) != 0) { - ((void (*)(s32))func_80182E04)((s32)a0); - } - } - - - -extern s32 D_801270C8; -extern void func_80182EB0(void); - -void func_80187F58(void) { - if (D_801270C8 == 22) { - func_80182EB0(); - } -} - - -void func_80187F88(void) { -} - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187F90); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80187FCC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018802C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80188068); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801880AC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018810C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80188150); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80188194); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801881F4); - -extern s32 func_8012BEE8(s32 a0); -extern s32 func_80183174(void *a0); -void func_801882A8(int param_1) -{ - if (((int (*)(void))func_8012BEE8)() != 0) { - ((void (*)(int))func_80183174)(param_1); - } -} - - -void func_801882E0(void) { -} - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801882E8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80188324); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801883C4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80188404); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801884C8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018850C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801885BC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80188690); - -void func_801886BC(void) { -} - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801886C4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80188720); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018874C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801887CC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80188830); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801888EC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018893C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80188968); - - -extern void (*D_801964BC[])(void); - -void func_801889D4(void *a0) { - D_801964BC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80188A10); - -extern void func_8012AD44(s32 *a0, s16 a1); - void func_80188A5C(void *arg0) { - ((void (*)(s32, s32))func_8012AD44)((s32)arg0, 1); - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80188A7C); - - -extern void (*D_801964FC[])(void); - -void func_80188BB4(void *a0) { - D_801964FC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80188BF0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80188D1C); - -extern void func_80188F38(void); - void func_80188F08(u8 *a0) { - *(s8 *)(a0 + 0xC1) = 0; - *(s8 *)(a0 + 0xC2) = 0; - *(u16 *)(a0 + 0x5C) &= 0xFFFE; - func_80188F38(); - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80188F38); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80188FF0); - - -extern void (*D_801965B0[])(void); - -void func_80189204(void *a0) { - D_801965B0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80189240); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80189268); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801892CC); - - -extern void (*D_801965C0[])(void); - -void func_801894C8(void *a0) { - D_801965C0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80189504); - - -extern void (*D_801965D4[])(void); - -void func_801895A4(void *a0) { - D_801965D4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801895E0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018968C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801898F4); - - -extern void (*D_8019660C[])(void); - -void func_80189AF4(void *a0) { - D_8019660C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80189B30); - - -extern void (*D_801966A0[])(void); - -void func_80189C90(void *a0) { - D_801966A0[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801966B8[])(void); - -void func_80189CCC(void *a0) { - D_801966B8[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80196760[])(void); - -void func_80189D08(void *a0) { - D_80196760[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801967C4[])(void); - -void func_80189D44(void *a0) { - D_801967C4[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801967CC[])(void); - -void func_80189D80(void *a0) { - D_801967CC[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80196814[])(void); - -void func_80189DBC(void *a0) { - D_80196814[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80196868[])(void); - -void func_80189DF8(void *a0) { - D_80196868[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80189E34); - -extern s32 func_80132EF4(s32 a0, s32 a1); - void func_80189F44(s32 arg0) { - ((void (*)(s32, s32))func_80132EF4)(arg0, 0x16); - } - - -extern u8 *func_8012913C(s32 a0); - void func_80189F64(void) { - ((void (*)(s32))func_8012913C)(0x15); - } - - -extern s32 func_80132EF4(s32 a0, s32 a1); - void func_80189F84(s32 arg0) { - ((void (*)(s32, s32))func_80132EF4)(arg0, 0xC); - } - - -extern s32 func_80132EF4(s32 a0, s32 a1); - void func_80189FA4(void *a0) { - ((void (*)(void *, int))func_80132EF4)(a0, 0x13); - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80189FC4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018A0E4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018A174); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018A1D8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018A30C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018A3B4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018A47C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018A4C4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018A658); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018A6A0); - -void func_8018A7D0(void) { -} - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018A7D8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018A968); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018AA88); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018AAAC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018AB84); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018ABE0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018AC10); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018AC48); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018ACB4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018AD20); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018AD8C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018ADF0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018AEB4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018AF58); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018B058); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018B16C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018B2DC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018B300); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018B344); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018B368); - -void func_8018B408(void) { -} - -extern void func_80132784(s32 a0, s32 a1, u32 a2); - void func_8018B410(u8 *a0) { - ((void (*)(u8 *, u8 *, u16))func_80132784)(a0, *(u8 **)(a0 + 0x64), *(u16 *)(a0 + 0xfe)); - } - - -void func_8018B438(void) { -} - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018B440); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018B4D0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018B554); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018B5E0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018B638); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018B6A0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018B6E8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018B7A4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018B7F8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018B8CC); - -extern s32 D_801270C8; -extern void func_801292C8(u8 *a0); - -void func_8018B93C(void) { - if (*(s32 *)&D_801270C8 == 0x13) { - ((void (*)(void))func_801292C8)(); - } -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018B96C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018BA38); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018BAE4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018BB58); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018BB9C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018BC48); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018BCA4); - -extern s32 func_80128DB4(s32 a0, s32 *a1); - s32 func_8018BCEC(void *a0) { - ((void (*)(void *, void *))func_80128DB4)(*(void **)((char *)a0 + 0x20), (void *)((char *)a0 + 0x24)); - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018BD14); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018BD90); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018BDD0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018BE88); - -extern void func_8012AD44(s32 *a0, s16 a1); - void func_8018BF88(u8 *a0) { - *(s32 *)(a0 + 0x1c) = 0x20; - *(s16 *)(a0 + 0x102) |= 2; - ((void (*)(void *, s32))func_8012AD44)(a0, 0x3); - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018BFBC); - -extern void func_8012AD44(s32 *a0, s16 a1); - void func_8018BFDC(u8 *a0) { - *(u16 *)(a0 + 0x102) |= 0x1; - ((void (*)(void *, s32))func_8012AD44)(a0, 0x5); - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018C008); - - -extern void (*D_801968F4[])(void); - -void func_8018C08C(void *a0) { - D_801968F4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018C0C8); - - -extern void (*D_80196B80[])(void); - -void func_8018C108(void *a0) { - D_80196B80[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018C144); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018C1C0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018C204); - - -extern void (*D_80196B8C[])(void); - -void func_8018C274(void *a0) { - D_80196B8C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018C2B0); - - -extern void (*D_80196B98[])(void); - -void func_8018C358(void *a0) { - D_80196B98[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018C394); - -extern void func_8012AD44(s32 *a0, s16 a1); - void func_8018C3C4(void * arg0) { - *(s8 *)((char *)arg0 + 0xfc) = 0x8; - ((void (*)(s32, s32))func_8012AD44)((int)arg0, 0x2); - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018C3EC); - - -extern void (*D_80196BA0[])(void); - -void func_8018C418(void *a0) { - D_80196BA0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018C454); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018C598); - - -extern void (*D_80196BB0[])(void); - -void func_8018C66C(void *a0) { - D_80196BB0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018C6A8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018C758); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018C84C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018C928); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018C978); - -extern void func_8012C218(void *a0); - void func_8018CA1C(void) { - ((s32 (*)(void))func_8012C218)(); - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018CA3C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018CA74); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018CB70); - -extern void func_8012C218(void *a0); - void func_8018CBF8(s32 *a0) { - if (*(s16 *)((char *)a0 + 0x98) == 0) { - ((void (*)(void))func_8012C218)(); - } - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018CC28); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018CCF8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018CD80); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018CE04); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018CEE0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018CF58); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018D04C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018D144); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018D21C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018D270); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018D318); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018D43C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018D488); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018D4D8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018D574); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018D608); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018D6B0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018D73C); - -void func_8018D7DC(void *a0) { - *(s16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018D7F0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018D8A8); - -void func_8018D904(void *a0) { - *(s16 *)((s32)a0 + 0x2) += 1; - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018D918); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018D964); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018D9A4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018DA40); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018DA8C); - -void func_8018DAD8(void) { -} - - -extern void (*D_80196C9C[])(void); - -void func_8018DAE0(void *a0) { - D_80196C9C[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 D_80196C14; - -void func_8018DB1C(s32 arg0) { - *(s32 *)(arg0 + 0x58) = &D_80196C14; - *(s32 *)(arg0 + 0x1C) = 0x18; - *(s16 *)(arg0 + 0x2) += 1; -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018DB40); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018DCD8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018DDFC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018DE5C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018DEB8); - - -extern void (*D_80196CB0[])(void); - -void func_8018DF88(void *a0) { - D_80196CB0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018DFC4); - -void func_8018E22C(void) { -} - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018E234); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018E288); - - -extern void (*D_80196CC0[])(void); - -void func_8018E400(void *a0) { - D_80196CC0[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_8018E43C(void *a0) { - *(s16 *)((s32)a0 + 0x2) += 1; - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018E450); - -void func_8018E6D4(void) { -} - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018E6DC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018E730); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018E7E4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018EA04); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018EB60); - - -extern void (*D_80196CD4[])(void); - -void func_8018ECB8(void *a0) { - D_80196CD4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018ECF4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018ED84); - - -extern void (*D_80196CDC[])(void); - -void func_8018EDF8(void *a0) { - D_80196CDC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018EE34); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018EF20); - -extern void func_8012C218(void *a0); - void func_8018EF90(void) { - ((void (*)(void))func_8012C218)(); - } - - - -extern void (*D_80196CE8[])(void); - -void func_8018EFB0(void *a0) { - D_80196CE8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018EFEC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018F164); - -extern void func_8012C218(void *a0); - void func_8018F1D4(void) { - ((s32 (*)(void))func_8012C218)(); - } - - - -extern void (*D_80196CF4[])(void); - -void func_8018F1F4(void *a0) { - D_80196CF4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018F230); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018F2C4); - -extern void func_8013C414(void *a0, void *a1); -extern s32 D_8019AA5C; -extern s32 D_801D91D4; - -void func_8018F414(void) { - func_8013C414(&D_8019AA5C, &D_801D91D4); -} - - -extern void func_8013C414(void *a0, void *a1); - extern s32 D_8019AA5C; - extern s32 D_801DA5FC; - void func_8018F444(void) { - func_8013C414(&D_8019AA5C, &D_801DA5FC); - } - - -extern void func_8013C414(void *a0, void *a1); - extern s32 D_8019AA5C; - extern s32 D_801DB658; - void func_8018F474(void) { - func_8013C414(&D_8019AA5C, &D_801DB658); - } - - -extern void func_8013C414(void *a0, void *a1); -extern s32 D_8019AA5C; -extern s32 D_801DC180; - -void func_8018F4A4(void) { - func_8013C414(&D_8019AA5C, &D_801DC180); -} - - -extern void func_8013C414(void *a0, void *a1); -extern s32 D_8019AA5C; -extern s32 D_801DCD04; - -void func_8018F4D4(void) { - func_8013C414(&D_8019AA5C, &D_801DCD04); -} - - -extern void func_8013C414(void *a0, void *a1); -extern s32 D_8019AA5C; -extern s32 D_801DD2D4; - -void func_8018F504(void) { - func_8013C414(&D_8019AA5C, &D_801DD2D4); -} - - -extern void func_8013C414(void *a0, void *a1); - extern s32 D_8019AA5C; - extern s32 D_801DDD30; - void func_8018F534(void) { - func_8013C414(&D_8019AA5C, &D_801DDD30); - } - - - -extern void func_8013C414(void *a0, void *a1); -extern s32 D_8019AA5C; -extern s32 D_801DE674; - -void func_8018F564(void) { - func_8013C414(&D_8019AA5C, &D_801DE674); -} - - -extern void func_8013C414(void *a0, void *a1); - extern s32 D_8019AA5C; - extern s32 D_801DF3B4; - void func_8018F594(void) { - func_8013C414(&D_8019AA5C, &D_801DF3B4); - } - - -extern void func_8013C360(void *a0); - extern s32 D_801D91D4; - void func_8018F5C4(void) { - func_8013C360(&D_801D91D4); - } - - -extern void func_8013C360(void *a0); - extern s32 D_801DA5FC; - void func_8018F5EC(void) { - func_8013C360(&D_801DA5FC); - } - - -extern void func_8013C360(void *a0); - extern s32 D_801DB658; - void func_8018F614(void) { - func_8013C360(&D_801DB658); - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018F63C); - -extern void func_8013C360(void *a0); - extern s32 D_801DCD04; - void func_8018F664(void) { - func_8013C360(&D_801DCD04); - } - - -extern void func_8013C360(void *a0); - extern s32 D_801DD2D4; - void func_8018F68C(void) { - func_8013C360(&D_801DD2D4); - } - - -extern void func_8013C360(void *); - extern s32 D_801DDD30; - void func_8018F6B4(void) { - func_8013C360(&D_801DDD30); - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018F6DC); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018F704); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018F72C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018F894); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018F91C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018F944); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018FA34); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018FAE0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018FB8C); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018FC38); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018FCE4); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018FE18); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018FEA0); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8018FFC4); - -void func_80190068(s32 *a0) { - *(s16 *)((s32)a0 + 0x2) = 0xC; - } - - - -extern void (*D_80196CFC[])(void); - -void func_80190074(void *a0) { - D_80196CFC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801900B0); - - -extern s32 D_801E4C40; - -void func_801900E0(void) { - D_801E4C40 = 1280; -} - - - -extern s32 D_801E4C40; - -void func_801900F4(void) { - D_801E4C40 = 3796; -} - - - -extern void (*D_80196EA4[])(void); - -void func_80190108(void *a0) { - D_80196EA4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80190144); - -extern void func_80190384(void); - void func_80190344(void) { - func_80190384(); - } - - -extern void func_80146C3C(void); - void func_80190364(void) { - func_80146C3C(); - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80190384); - -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); - void func_801903DC(void *arg0) { - ((void (*)(s32, s32, s32, s32))func_80146994)(0x28, 0, arg0, 0); - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80190408); - - -extern void (*D_80196F00[])(void); - -void func_8019044C(void *a0) { - D_80196F00[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_801904B8(s32 arg); - extern void func_80146CA0(void *a0); - void func_80190488(s32 arg0) { - func_801904B8(arg0); - ((void (*)(s32))func_80146CA0)(arg0); - } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_801904B8); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_80190538); - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017A4AC", func_8019084C); - - - diff --git a/src/ov_SC02_005/ov_SC02_005_jr_8017AE2C.c b/src/ov_SC02_005/ov_SC02_005_jr_8017AE2C.c new file mode 100644 index 000000000..a3d15d051 --- /dev/null +++ b/src/ov_SC02_005/ov_SC02_005_jr_8017AE2C.c @@ -0,0 +1,5389 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80192E18; +extern u8 D_80192D88; +extern u8 D_80192D64; +extern u8 D_80192D40; +extern u8 D_80192DF4; +extern u8 D_80192DD0; +extern u8 D_80192DAC; +extern u8 D_80192D1C; +extern void func_80145934(void); +extern u8 D_80192EA8; +extern u8 D_80192E84; +extern u8 D_80192E60; +extern u8 D_80192E3C; +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_801922A0[]; +extern unsigned char D_801922D0[]; +extern unsigned char D_80192320[]; +extern unsigned char D_80192350[]; +extern unsigned char D_80192380[]; +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(void); +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_801923D0[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80192498[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80192520[]; +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_80192528; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801E3128; +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_801E312C; +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_80192558; +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 void 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_80192600[])(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_80192624[])(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_80192614; +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_80192638[])(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_80192644[]; +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_80192654[])(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_8019266C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8019265C; +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_80192680[])(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_8019269C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8019268C; +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_801926B0[])(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_801926C4[])(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_801926D8; +extern void (*D_80192700[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801926E0; +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_8019274C[])(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_80192750[])(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(void *a0); +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_80192BB4[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80192BC4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801E3160; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80192BEC[])(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_80192BCC; +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_80192BDC; +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_80192C2C[])(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_80192C34[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80192C00; +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_80192C40[])(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_80192C10; +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_801E3168; +extern s32 D_801E3174; +extern s32 D_801E3178; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80192C7C[])(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_80192C50[]; +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_801E3170; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80192ECC[])(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_80192CEC[]; +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_80192F70[])(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_801930C4[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80192EE0; +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_801930CC[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80192EF0; +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_80192F10; +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_801930D4[])(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(void); +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_801930FC[])(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_80193108[])(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_80192F7C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801931AC; +extern void func_8015D380(s32 a0); +extern unsigned char D_80192290[]; +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_801931C0[]; +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_801931FC[]; +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_80193244; +extern u16 D_80193246; +extern u16 D_80193248; +extern s32 D_8019324C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80193254; +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_80192F60; +extern void func_8015EE7C(s32 param_1); +extern void func_80159B70(void*); +extern void (*D_80192F7C[])(void*); +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_801932D8[]; +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_80193388[])(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_801933B8[]; +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_8019341C; +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_801E3180[]; +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_80193440[])(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_801E31D8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80193488[])(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_80193478; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801E26F8[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_80193490[])(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_801934E4[])(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_801934AC; +extern s16 D_801934E0; +extern s16 D_801934DE; +extern s16 D_801934DC; +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_801934F0[])(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_801E3238; +extern u8 D_801E3239; +extern u8 D_801E323A; +extern u8 D_801E323B; +extern u8 D_801E323C; +extern u8 D_801E323D; +extern u8 D_801E323E; +extern u8 D_801E323F; +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_80193500[])(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_801E3278; +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_80193544[])(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_801935C0[]; +extern s32 D_801935E0[]; +extern u8 D_8019365C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8019367C[]; +extern u8 D_8019369C[]; +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_80193738[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801937B4[])(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_801E2708; +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_801937C0[])(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_801937C8[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80193890[])(void); +extern void func_80166618(void *a0); +extern void (*D_801938A0[])(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_801938B0[])(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_801938BC[])(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_8019381C[]; +extern u8 D_80193830[]; +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_801938D4[])(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_801938DC[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_801938E4[])(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_801938EC[])(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_801938F4[])(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_801938FC[])(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_80193904[])(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_801939B8[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801939C0[])(void); +extern void func_80169F00(void *a0); +extern char D_80193970[]; +extern char D_80193930[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_801939F8[])(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_80193A04[])(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_80193A4C[])(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_80193AC8[])(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_801E3598; +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_80193ABC[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80193B00[]; +extern unsigned short D_80193B08[]; +extern unsigned short D_80193B10[]; +extern unsigned char D_801E35A0[]; +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_801E3598; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80193B18[])(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_801E36D4; +extern M2C_UNK D_801E36D8; +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_801E3660; +extern void (*D_80193B48[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801E36DC[]; +extern u8 D_801E36E4[]; +extern u8 D_801E3694[]; +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_80193B50[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80193B6C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80193B74[])(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_80193BDC[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80193B80; +extern u8 D_80193B8C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80193C10[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80193C18[])(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_80193C6C[])(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_80193CA0[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80193C90[]; +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_80193CBC; +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); +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_80193D34[])(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_80193D3C[])(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_80193D44[])(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_80193D4C[])(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_80193D54[])(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_80193D5C[])(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_80193D68[])(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_80193D74[])(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_80193D80[])(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_80193D90[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80193DA0[])(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_80193DA8[])(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_80193DB0[])(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_80193DB8[])(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_80193DC0[])(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_80193DC8[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80193DD0[])(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_80193DD8[])(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_80193DE0[])(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_80193DE8[])(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_80193DF0[])(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_80193DF8[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80193E00[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80193E08[])(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_80193E10[])(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_80193E18[])(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_80193E20[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80193E28[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80193E30[])(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_80193E38[])(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_80193E40[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80193E48[])(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_80193E50[])(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_80193E94[])(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_80193E58; +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_80193EC4[])(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_80193F00[])(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(s32); +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_80193F58[])(); +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_80193F68[])(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_80193F70[])(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_801940D8[])(); +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_801940E4[])(); +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_801E2950; +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 int func_801789AC(void); +extern s16 D_801E4BD8; +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_801E3E18; +extern short D_801E4C4C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801E4244; +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_801E426C; +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_801E4228; +extern s32 func_8017A3B0(void); +extern short D_801E4264; +extern short D_801E4260; +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_801E4BA8; +extern s16 D_801E4BAA; +extern s16 D_801E4BB4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801E4BA8; + + 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_801E4BB4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801E4BA8+0xC == &D_801E4BB4; 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_801E4BA8 + 0xC)) < 0x101) { + D_801E4BA8 = 0; + D_801E4BAA = 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_801E4BB4); + 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_801E4BA8 + 0xC)) < 0x101) { + D_801E4BA8 = 0; + D_801E4BAA = 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_801E42A4; + extern s16 D_801E42A6; + extern s16 D_801E42A8; + extern s16 D_801E429C; + extern s16 D_801E429E; + extern s16 D_801E42A0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801E42A4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801E42A6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801E42A8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801E429C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801E429E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801E42A0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801E422C; +extern u16 D_801E42AC; +extern u16 D_801E42AE; +extern u16 D_801E42B0; +extern s16 D_801E4BD8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801E4BD8 = 0; + D_801E422C = 0; + D_801E42AC = D_80126B5E; + D_801E42AE = D_80126B62; + D_801E42B0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80194220[]; + extern s16 D_801E42A4; + extern s16 D_801E429C; + 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_80194220[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80194220[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801E42A4; + s16 *p78C = &D_801E429C; + *(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_801E4BD8 = 1; + D_801E422C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801E424C; + extern SV4_8017B368 D_801E4254; + extern s16 D_801E42A4; + extern s16 D_801E429C; + extern u16 D_80194220; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801E424C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801E4254; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80194220)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80194220)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801E42A4) = loc0; + (*(SV4_8017B368 *)&D_801E429C) = loc1; + D_801E4BD8 = 1; + D_801E422C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80194220[]; + extern s16 D_801E42A4; + extern s16 D_801E42A6; + extern s16 D_801E42A8; + extern s16 D_801E429C; + extern s16 D_801E429E; + extern s16 D_801E42A0; + 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_80194220[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80194220[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801E42A4; + s16 *p78C = &D_801E429C; + *(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_801E42A6; + v798 = D_801E42A8; + v78C = *p78C; + v78E = D_801E429E; + v790 = D_801E42A0; + __asm__ __volatile__(""); + D_801E4BD8 = 1; + D_801E422C = 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_801E422C; +extern s16 D_801E42A4; +extern s16 D_801E42A6; +extern s16 D_801E42A8; +extern s16 D_801E429C; +extern s16 D_801E429E; +extern s16 D_801E42A0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801E422C = 0; + D_801E42A4 = (s16) D_80114F30; + D_801E42A6 = (s16) D_80114F34; + D_801E42A8 = (s16) D_80114F38; + D_801E429C = (s16) D_80114F24; + D_801E429E = (s16) D_80114F28; + D_801E42A0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801E42BC; +extern s16 D_801E42BE; +extern s16 D_801E42C0; +extern s16 D_801E42C4; +extern s16 D_801E42C6; +extern s16 D_801E42C8; + +void func_8017B824(void) { + D_801E42BC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801E42BE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801E42C0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801E42C4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801E42C6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801E42C8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801E42BC; +extern s16 D_801E42BE; +extern s16 D_801E42C0; +extern s16 D_801E42C4; +extern s16 D_801E42C6; +extern s16 D_801E42C8; + +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_801E42BC; + D_80114F34 = D_801E42BE; + D_80114F38 = D_801E42C0; + D_80114F24 = D_801E42C4; + D_80114F28 = D_801E42C6; + D_80114F2C = D_801E42C8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801E42A4), src[8..15] -> (*(S8_8017B8E8 *)&D_801E429C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801E42A4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801E429C) = ((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_801E42AC; +extern u16 D_801E42AE; +extern u16 D_801E42B0; + +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_801E422C; +extern short D_801E42B4; +extern short D_801E42B6; +extern short D_801E42B8; +extern s16 D_801E42A4; +extern s16 D_801E42A6; +extern s16 D_801E42A8; +extern s16 D_801E429C; +extern s16 D_801E429E; +extern s16 D_801E42A0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801E42AC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801E42AE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801E42B0); + (*(s16 *)&D_801E42B4) = buf[0]; + (*(s16 *)&D_801E42B6) = buf[1]; + (*(s16 *)&D_801E42B8) = buf[2]; + D_801E42A4 = D_80114F30 + buf[0]; + D_801E422C = 0; + D_801E42A6 = D_80114F34 + buf[1]; + D_801E42A8 = D_80114F38 + buf[2]; + D_801E429C = D_80114F24 + buf[0]; + D_801E429E = D_80114F28 + buf[1]; + D_801E42A0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801E424C; +extern SV4 D_801E4254; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801E4254) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801E424C = 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_801E4254 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801E4254)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801E424C) = 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_801E4254) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801E4274[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801E4274; + 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_801E422C; +extern s16 D_801E4BD8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801E422C = D_801E422C + 1; + if (D_801E422C >= 0x1F) { + D_801E4BD8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801E422C; +extern s16 D_801E4BD8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801E422C = D_801E422C + 1; + if (0x18 < D_801E422C) { + func_8012A4BC(); + D_801E4BD8 = 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_801E422C; +extern void (*D_801E4270)(void); +extern short D_801E42B4; +extern short D_801E42B6; +extern short D_801E42B8; +extern s16 D_801E4BD8; + +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_801E422C = D_801E422C + 1; + if (D_801E422C >= 0x19) { + if (D_801E4270 != 0) { + (*D_801E4270)(); + } else { + D_80114F30 = D_80114F30 + D_801E42B4; + D_80114F34 = D_80114F34 + D_801E42B6; + D_80114F38 = D_80114F38 + D_801E42B8; + D_80114F24 = D_80114F24 + D_801E42B4; + D_80114F28 = D_80114F28 + D_801E42B6; + D_80114F2C = D_80114F2C + D_801E42B8; + func_8012A4BC(); + } + D_801E4BD8 = 0; + } +} + + + +extern void (*D_801942C0[])(void); + +void func_8017BE60(void *a0) { + D_801942C0[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017BE9C); + +extern void func_8017BF14(s32 arg0, s32 arg1, s32 arg2, s32 arg3); + void func_8017BEC0(s32 arg0, s32 arg1, s16 arg2) { + func_8017BF14(arg0, arg1, arg2, 0); + } + + +extern void func_8017BF14(s32 arg0, s32 arg1, s32 arg2, s32 arg3); + void func_8017BEE8(void *a0, void *a1, s32 a2, s32 a3) { + ((void (*)(void *, void *, s32, s32))func_8017BF14)(a0, a1, (s16)a2, (s16)a3); + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017BF14); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017BF9C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017BFF0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017C048); + + +extern void (*D_80194320[])(void); + +void func_8017C0F4(void *a0) { + D_80194320[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017C130); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017C41C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017C8B0); + +extern void ReadRotMatrix(void *a0); +extern void PushMatrix(void); +extern void func_8004974C(void *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern void PopMatrix(void); +void func_8017CC88(u16 *a0, void *a1) { + s32 mat[8]; + s32 buf[8]; + s16 sv[4]; + ReadRotMatrix((void *)mat); + PushMatrix(); + sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); + sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); + sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); + func_8004974C((void *)mat, (void *)buf); + ApplyMatrixSV((void *)buf, (void *)sv, a1); + PopMatrix(); +} + + +int func_8017CD2C(short *param_1, short *param_2, short *param_3, int param_4) { + register int i2o __asm__("$5"); + register int i4o __asm__("$9"); + short sVar1; int rx, rz, uVar5; + i4o = param_2[1]; + __asm__ __volatile__("" : : "r"(i4o)); + i2o = param_1[1]; uVar5 = 0; + if (i2o >= i4o) { + rx = param_1[0] - i2o * (param_2[0] - param_1[0]); + rz = param_1[2] - i2o * (param_2[2] - param_1[2]); + } else { + register int den __asm__("$3"); + int p2x = param_2[0], p2z = param_2[2]; + den = i2o - i4o; + rx = p2x + i4o * (p2x - param_1[0]) / den; + rz = p2z + i4o * (p2z - param_1[2]) / den; + } + if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } + else i2o = -0x7fff; + *param_3 = (short)i2o; + if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } + else i2o = -0x7fff; + param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; + if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } + if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } + if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } + if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } + return uVar5; +} + + +extern void ReadGeomOffset(s32 *a0, s32 *a1); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +extern void func_8004921C(s32 a0, s32 a1); +void func_8017CF24(s32 a0, s32 a1) { + s32 ofx; + s32 ofy; + s32 sxy; + s32 p; + ReadGeomOffset(&ofx, &ofy); + func_8004921C(0, 0); + RotTransPers(a0, a1, &sxy, &p); + func_8004921C(ofx, ofy); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017CF90); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017DE5C); + +extern void func_8012A018(s32 a, s32 b); + extern void func_8017E97C(); + void func_8017DF00(void) { + ((void (*)(void *, s32))func_8012A018)((void *)func_8017E97C, 0x2); + } + + +extern void func_8012A018(s32 a, s32 b); + extern void func_8017E97C(); + void func_8017DF28(void) { + ((void (*)(void *, s32))func_8012A018)((void *)func_8017E97C, 0x3); + } + + +extern void func_8012A018(s32 a, s32 b); + extern void func_8017E97C(void); + void func_8017DF50(void) { + ((void (*)(void *, s32))func_8012A018)((void *)func_8017E97C, 0x8); + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017DF78); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017E014); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017E0B4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017E190); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017E26C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017E348); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017E424); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017E454); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017E4F8); + +extern void func_8012A0E0(void); + void func_8017E5AC(void) { + ((s32 (*)(void))func_8012A0E0)(); + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017E5CC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017E664); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017E6FC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017E798); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017E898); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017E8E4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017E97C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017E9B8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017EA74); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017EA9C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017EAD4); + +void func_8017EB30(void) { +} + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017EB38); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017EB8C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017ECAC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017ED28); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017EDF8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017EFB4); + + +extern void (*D_8019439C[])(void); + +void func_8017F010(void *a0) { + D_8019439C[*(u8 *)((s32)a0 + 0x15)](); +} + + + +// @class: plumbing +// @stuck: none — MATCH (simple two-call wrapper, $s0 holds param across calls by default regalloc) + +extern void func_8017F428(void *arg0); +extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); +extern void func_800167B8(s32 a0); + +s32 func_8017F04C(s32 param_1) +{ + ((void (*)(void *, s32))func_8016EDEC)(func_8017F428, 0x1000000); + func_800167B8(0); + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + return 0; +} + + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017F09C(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_801943A4[])(void); + +void func_8017F0C0(void *a0) { + D_801943A4[*(u8 *)((s32)a0 + 0x15)](); +} + + +s32 func_8017F0FC(u8 *a0) { + *(s32 *)(a0 + 0x28) = 0x14; + a0[0x15] += 1; + return 0; + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017F118); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017F194); + + +extern void (*D_80194454[])(void); + +void func_8017F1DC(void *a0) { + D_80194454[*(u8 *)((s32)a0 + 0x214)](); +} + + +extern void func_80171B44(s32 *a0); + void func_8017F218(u8 *a0) { + *(s8 *)(a0 + 0x214) += 1; + ((void (*)(void))func_80171B44)(); + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017F244); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017F2C4); + + +// @class: plumbing +// @stuck: none — MATCH (param_1 survives across func_8016F0E4 → lands in $s0; passed to func_80165770) + +extern void func_8016F0E4(void); +extern void func_80165770(void); +extern void func_80175414(s32); + +void func_8017F320(s32 param_1) +{ + func_8016F0E4(); + ((void (*)(s32))func_80165770)(param_1); + ((void (*)(void))func_80175414)(); +} + + + +extern void (*D_80194464[])(void); + +void func_8017F358(void *a0) { + D_80194464[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017F394); + + +// @class: plumbing +// @stuck: none — MATCH (expected); simple call + conditional u8 increment + +extern s32 func_80171B4C(s32 a0, s32 a1); + +void func_8017F3C4(int param_1) +{ + if (func_80171B4C(param_1, 0x2) != 0) { + *(unsigned char *)(param_1 + 0x214) += 1; + } + return; +} + + +extern void func_8016F0E4(void); + void func_8017F408(void) { + func_8016F0E4(); + } + + + +extern void (*D_80194470[])(void); + +void func_8017F428(void *a0) { + D_80194470[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017F464); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017F530); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017F5B0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017F63C); + + +extern s32 D_801270C8; +extern void func_8017F6A4(void); + +void func_8017F674(void) { + if (D_801270C8 == 6) { + func_8017F6A4(); + } +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017F6A4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017F6E8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017F748); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017F7CC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017F898); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017F924); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017F998); + +extern s32 D_801270C8; +extern void func_8017FA3C(void); + +void func_8017FA0C(void) { + if (*(s32 *)&D_801270C8 == 0xC) { + ((void (*)(void))func_8017FA3C)(); + } +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017FA3C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017FA94); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017FB14); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017FB80); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017FC64); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017FCFC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017FDB4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017FE08); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017FEA0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017FF2C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017FF8C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8017FFF0); + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80180060); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801800CC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018016C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801801DC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80180234); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801802CC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80180328); + + +extern void (*D_801944E8[])(void); + +void func_80180380(void *a0) { + D_801944E8[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801803BC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80180454); + +extern void func_8016EE94(); + extern char func_801804D4[]; + void func_801804AC(void) { + ((void (*)(char *, unsigned int))func_8016EE94)(func_801804D4, 0x1000000); + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801804D4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80180510); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80180574); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80180610); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018074C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801808B0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80180A3C); + +extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); + extern s32 func_80180AA4(void); + void func_80180A7C(void) { + ((void (*)(s32, s32))func_8016EDEC)((s32)&func_80180AA4, 0x1000000); + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80180AA4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80180AE0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80180B18); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80180B90); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80180C04); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80180C3C); + + +extern void (*D_8019455C[])(void); + +void func_80180C64(void *a0) { + D_8019455C[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80180CA0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80180D18); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80180DB8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80180E08); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80180F5C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80180FA8); + +extern void func_8017E798(void *a0); +void func_80181028(void *a0) { + func_8017E798(a0); + *(u8 *)((s32)a0 + 0x214) += 1; +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80181060); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801810F0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018112C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018118C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80181238); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80181270); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801812B4); + + +extern void (*D_8019458C[])(void); + +void func_801812DC(void *a0) { + D_8019458C[*(u8 *)((s32)a0 + 0x214)](); +} + + +void func_80181318(void *a0) { + *(s32 *)((s32)a0 + 0x204) = 0x20; + *(u8 *)((s32)a0 + 0x214) += 1; + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80181330); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80181388); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801813F0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018141C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801814B4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80181570); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801815FC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018166C); + +s32 func_8018169C(s32 a0, s32 a1) { + s32 a2 = *(s32 *)((s32)a0 + 0x20); + u16 v1 = *(u16 *)((s32)a0 + 0x206); + u16 v0 = *(u16 *)((s32)a2 + 0x12); + *(u16 *)((s32)a2 + 0x12) = (v0 + v1) & 0xFFF; + return (*(s32 *)((s32)a0 + 0x204) -= a1); +} + + +s32 func_801816CC(s32 a0, s32 a1) { + s32 a2 = *(s32 *)((s32)a0 + 0x20); + u16 v1 = *(u16 *)((s32)a0 + 0x20A); + u16 v0 = *(u16 *)((s32)a2 + 0x10); + *(u16 *)((s32)a2 + 0x10) = (v0 - v1) & 0xFFF; + return (*(s32 *)((s32)a0 + 0x208) += a1); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801816FC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80181900); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80181984); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80181BE8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80181D30); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80181F04); + +void func_80181F68(void *a0) { + *(s16 *)((s32)a0 + 0x34) = 0; + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80181F70); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80181FA8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80181FE8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018203C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80182098); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801820E4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801821C8); + +extern void func_801862F0(void * arg0); + void func_80182284(s32 arg0) { + s32 temp_s0 = arg0; + ((void (*)(void))func_801862F0)(); + *(s16 *)(temp_s0 + 0x34) = 0x8; + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801822B4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801822EC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801824D0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80182740); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801827A8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80182810); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801828D8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80182918); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80182998); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80182A8C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80182D80); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80182DCC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80182E04); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80182E78); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80182EB0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80182F78); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80182FAC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018300C); + +void func_80183060(void *a0) { + *(short *)((char *)a0 + 0x34) = 0x3; + *(int *)((char *)a0 + 0x1c) = 0x20; + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80183074); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801830F4); + +void func_80183160(void *a0) { + *(s32 *)((char *)a0 + 0x1c) = 0x8; + *(s16 *)((char *)a0 + 0x34) = 0x6; + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80183174); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801831A4); + +void func_80183200(void *a0) { + *(s8 *)((s32)a0 + 0xc1) = 0; + *(s16 *)((s32)a0 + 0x5e) = 0; + *(u16 *)((s32)a0 + 0x5c) &= 0xfffe; + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80183218); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801834C8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80183524); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80183584); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80183610); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801838A8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80183B0C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80183C7C); + + +extern void (*D_80196320[])(void); + +void func_80183D18(void *a0) { + D_80196320[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80183D54); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80183D90); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80183FCC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801840E8); + +void func_8018415C(void *a0) { + s32 v0; + if (*(s16 *)((s32)a0 + 0xe) == 0) { + *(s16 *)((s32)a0 + 0xae) = -1; + v0 = *(u16 *)((s32)a0 + 0xfc); + *(u16 *)((s32)a0 + 0xfc) = v0 | 2; + } + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80184184); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801841E0); + + +extern void (*D_801963E8[])(void); + +void func_8018431C(void *a0) { + D_801963E8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80184358); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80184404); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80184480); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801844D4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018454C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801846CC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80184828); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801849E4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80184A34); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80184A8C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80184C20); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80184CA4); + +extern void func_8012AD44(s32 *a0, s16 a1); + void func_80184D24(void *arg0) { + ((void (*)(s32, s32))func_8012AD44)((s32)arg0, 0x7); + } + + + +extern void (*D_80196470[])(void); + +void func_80184D44(void *a0) { + D_80196470[*(u16 *)((s32)a0 + 0x2)](); +} + + + +void func_80184D80(void *a0) { + *(s8 *)((s32)a0 + 0xc1) = 0; + *(s16 *)((s32)a0 + 0x5e) = 0; + *(u16 *)((s32)a0 + 0x5c) &= 0xfffe; + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80184D98); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80184E30); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80184EC0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80185060); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801851E0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80185214); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801853CC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801853EC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018548C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018550C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801856E4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80185764); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80185858); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801858C4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018592C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80185A04); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80185A88); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80185B38); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80185D6C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80185D84); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80185DD0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80185E54); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80185E80); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801860F4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80186144); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80186178); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018622C); + +void func_801862E0(s32 *a0) { + s32 v0 = *(s32 *)((s32)a0 + 0xCC); + *(s16 *)((s32)a0 + 0x98) = 0; + *(s16 *)(v0 + 0x98) = 0; + } + + +void func_801862F0(void * arg0) { + *(short *)((char *)arg0 + 0x98) = 1; + *(short *)(*(int *)((char *)arg0 + 0xcc) + 0x98) = 1; + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80186304); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80186424); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018655C); + +extern s32 func_8012D714(s32 param_1, u32 param_2); + extern u16 D_80126B96; + void func_801865D0(void *arg0) { + if (func_8012D714((s32)arg0, 0x5)) { + D_80126B96 = 0x4005; + } + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80186600); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018675C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018687C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018692C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801869E0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80186A04); + +extern s32 D_801961B8; + extern s32 D_801961E0; + void func_80186ADC(s32 arg0) { + *(s32 *)(*(s32 *)(arg0 + 0x20) + 0x80) = &D_801961B8; + *(s32 *)(*(s32 *)(*(s32 *)(arg0 + 0xcc) + 0x20) + 0x80) = &D_801961E0; + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80186B08); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80186BB8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80186C0C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80186C70); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80186CA8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80186D00); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80186D74); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80186DE8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80186F14); + +void func_80186F58(void *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80186F60); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80186F9C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187070); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801870BC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801871E4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187280); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187348); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801873FC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187508); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187560); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187664); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801876B0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187768); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801877FC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801878C0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018791C); + +extern void func_80181900(void *a0); + void func_801879DC(void *a0) { + *(s32 *)((s32)a0 + 0xE8) |= 1; + *(s16 *)((s32)a0 + 0xE0) = -1; + ((void (*)(void *))func_80181900)(a0); + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187A0C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187A38); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187A8C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187AD0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187B0C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187B48); + +extern s32 func_80185D84(s32 a0); +extern s32 func_80181F70(void *a0); +void func_80187B7C(int param_1) +{ + if (((int (*)(void))func_80185D84)() != 0) { + ((void (*)(int))func_80181F70)(param_1); + } +} + + +extern void func_80181FA8(void); + void func_80187BB4(s32 arg0) { + if (*(s16 *)((char *)arg0 + 0x98) == 0) { + ((void (*)(void))func_80181FA8)(); + } + } + + +extern void func_80181FE8(void); + void func_80187BE4(s32 *a0) { + if (*(s32 *)((char *)a0 + 0x94) == 0xB) { + ((void (*)(void))func_80181FE8)(); + } + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187C14); + +extern s32 func_8012BEE8(s32 a0); +extern s32 func_80182098(void *a0); +void func_80187C9C(int param_1) +{ + if (((int (*)(void))func_8012BEE8)() != 0) { + ((void (*)(int))func_80182098)(param_1); + } +} + + +extern s32 func_8012CBCC(s32 a0); +extern s32 func_801820E4(void *a0); +void func_80187CD4(int param_1) +{ + if (((int (*)(void))func_8012CBCC)() != 0) { + ((void (*)(int))func_801820E4)(param_1); + } +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187D0C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187D4C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187D90); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187DCC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187E18); + + +extern void func_8012CBF4(s32 a0); + extern void func_80182E04(void *a0); + void func_80187F1C(void *a0) { + if ((((s32 (*)(s32))func_8012CBF4)((s32)a0) & 0x2000) != 0) { + ((void (*)(s32))func_80182E04)((s32)a0); + } + } + + + +extern s32 D_801270C8; +extern void func_80182EB0(void); + +void func_80187F58(void) { + if (D_801270C8 == 22) { + func_80182EB0(); + } +} + + +void func_80187F88(void) { +} + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187F90); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80187FCC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018802C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80188068); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801880AC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018810C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80188150); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80188194); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801881F4); + +extern s32 func_8012BEE8(s32 a0); +extern s32 func_80183174(void *a0); +void func_801882A8(int param_1) +{ + if (((int (*)(void))func_8012BEE8)() != 0) { + ((void (*)(int))func_80183174)(param_1); + } +} + + +void func_801882E0(void) { +} + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801882E8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80188324); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801883C4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80188404); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801884C8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018850C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801885BC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80188690); + +void func_801886BC(void) { +} + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801886C4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80188720); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018874C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801887CC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80188830); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801888EC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018893C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80188968); + + +extern void (*D_801964BC[])(void); + +void func_801889D4(void *a0) { + D_801964BC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80188A10); + +extern void func_8012AD44(s32 *a0, s16 a1); + void func_80188A5C(void *arg0) { + ((void (*)(s32, s32))func_8012AD44)((s32)arg0, 1); + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80188A7C); + + +extern void (*D_801964FC[])(void); + +void func_80188BB4(void *a0) { + D_801964FC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80188BF0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80188D1C); + +extern void func_80188F38(void); + void func_80188F08(u8 *a0) { + *(s8 *)(a0 + 0xC1) = 0; + *(s8 *)(a0 + 0xC2) = 0; + *(u16 *)(a0 + 0x5C) &= 0xFFFE; + func_80188F38(); + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80188F38); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80188FF0); + + +extern void (*D_801965B0[])(void); + +void func_80189204(void *a0) { + D_801965B0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80189240); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80189268); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801892CC); + + +extern void (*D_801965C0[])(void); + +void func_801894C8(void *a0) { + D_801965C0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80189504); + + +extern void (*D_801965D4[])(void); + +void func_801895A4(void *a0) { + D_801965D4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801895E0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018968C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801898F4); + + +extern void (*D_8019660C[])(void); + +void func_80189AF4(void *a0) { + D_8019660C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80189B30); + + +extern void (*D_801966A0[])(void); + +void func_80189C90(void *a0) { + D_801966A0[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_801966B8[])(void); + +void func_80189CCC(void *a0) { + D_801966B8[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80196760[])(void); + +void func_80189D08(void *a0) { + D_80196760[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_801967C4[])(void); + +void func_80189D44(void *a0) { + D_801967C4[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_801967CC[])(void); + +void func_80189D80(void *a0) { + D_801967CC[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80196814[])(void); + +void func_80189DBC(void *a0) { + D_80196814[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80196868[])(void); + +void func_80189DF8(void *a0) { + D_80196868[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80189E34); + +extern s32 func_80132EF4(s32 a0, s32 a1); + void func_80189F44(s32 arg0) { + ((void (*)(s32, s32))func_80132EF4)(arg0, 0x16); + } + + +extern u8 *func_8012913C(s32 a0); + void func_80189F64(void) { + ((void (*)(s32))func_8012913C)(0x15); + } + + +extern s32 func_80132EF4(s32 a0, s32 a1); + void func_80189F84(s32 arg0) { + ((void (*)(s32, s32))func_80132EF4)(arg0, 0xC); + } + + +extern s32 func_80132EF4(s32 a0, s32 a1); + void func_80189FA4(void *a0) { + ((void (*)(void *, int))func_80132EF4)(a0, 0x13); + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80189FC4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018A0E4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018A174); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018A1D8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018A30C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018A3B4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018A47C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018A4C4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018A658); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018A6A0); + +void func_8018A7D0(void) { +} + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018A7D8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018A968); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018AA88); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018AAAC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018AB84); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018ABE0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018AC10); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018AC48); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018ACB4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018AD20); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018AD8C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018ADF0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018AEB4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018AF58); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018B058); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018B16C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018B2DC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018B300); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018B344); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018B368); + +void func_8018B408(void) { +} + +extern void func_80132784(s32 a0, s32 a1, u32 a2); + void func_8018B410(u8 *a0) { + ((void (*)(u8 *, u8 *, u16))func_80132784)(a0, *(u8 **)(a0 + 0x64), *(u16 *)(a0 + 0xfe)); + } + + +void func_8018B438(void) { +} + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018B440); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018B4D0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018B554); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018B5E0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018B638); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018B6A0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018B6E8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018B7A4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018B7F8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018B8CC); + +extern s32 D_801270C8; +extern void func_801292C8(u8 *a0); + +void func_8018B93C(void) { + if (*(s32 *)&D_801270C8 == 0x13) { + ((void (*)(void))func_801292C8)(); + } +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018B96C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018BA38); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018BAE4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018BB58); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018BB9C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018BC48); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018BCA4); + +extern s32 func_80128DB4(s32 a0, s32 *a1); + s32 func_8018BCEC(void *a0) { + ((void (*)(void *, void *))func_80128DB4)(*(void **)((char *)a0 + 0x20), (void *)((char *)a0 + 0x24)); + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018BD14); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018BD90); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018BDD0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018BE88); + +extern void func_8012AD44(s32 *a0, s16 a1); + void func_8018BF88(u8 *a0) { + *(s32 *)(a0 + 0x1c) = 0x20; + *(s16 *)(a0 + 0x102) |= 2; + ((void (*)(void *, s32))func_8012AD44)(a0, 0x3); + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018BFBC); + +extern void func_8012AD44(s32 *a0, s16 a1); + void func_8018BFDC(u8 *a0) { + *(u16 *)(a0 + 0x102) |= 0x1; + ((void (*)(void *, s32))func_8012AD44)(a0, 0x5); + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018C008); + + +extern void (*D_801968F4[])(void); + +void func_8018C08C(void *a0) { + D_801968F4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018C0C8); + + +extern void (*D_80196B80[])(void); + +void func_8018C108(void *a0) { + D_80196B80[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018C144); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018C1C0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018C204); + + +extern void (*D_80196B8C[])(void); + +void func_8018C274(void *a0) { + D_80196B8C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018C2B0); + + +extern void (*D_80196B98[])(void); + +void func_8018C358(void *a0) { + D_80196B98[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018C394); + +extern void func_8012AD44(s32 *a0, s16 a1); + void func_8018C3C4(void * arg0) { + *(s8 *)((char *)arg0 + 0xfc) = 0x8; + ((void (*)(s32, s32))func_8012AD44)((int)arg0, 0x2); + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018C3EC); + + +extern void (*D_80196BA0[])(void); + +void func_8018C418(void *a0) { + D_80196BA0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018C454); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018C598); + + +extern void (*D_80196BB0[])(void); + +void func_8018C66C(void *a0) { + D_80196BB0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018C6A8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018C758); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018C84C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018C928); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018C978); + +extern void func_8012C218(void *a0); + void func_8018CA1C(void) { + ((s32 (*)(void))func_8012C218)(); + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018CA3C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018CA74); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018CB70); + +extern void func_8012C218(void *a0); + void func_8018CBF8(s32 *a0) { + if (*(s16 *)((char *)a0 + 0x98) == 0) { + ((void (*)(void))func_8012C218)(); + } + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018CC28); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018CCF8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018CD80); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018CE04); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018CEE0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018CF58); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018D04C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018D144); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018D21C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018D270); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018D318); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018D43C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018D488); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018D4D8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018D574); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018D608); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018D6B0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018D73C); + +void func_8018D7DC(void *a0) { + *(s16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018D7F0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018D8A8); + +void func_8018D904(void *a0) { + *(s16 *)((s32)a0 + 0x2) += 1; + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018D918); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018D964); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018D9A4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018DA40); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018DA8C); + +void func_8018DAD8(void) { +} + + +extern void (*D_80196C9C[])(void); + +void func_8018DAE0(void *a0) { + D_80196C9C[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern s32 D_80196C14; + +void func_8018DB1C(s32 arg0) { + *(s32 *)(arg0 + 0x58) = &D_80196C14; + *(s32 *)(arg0 + 0x1C) = 0x18; + *(s16 *)(arg0 + 0x2) += 1; +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018DB40); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018DCD8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018DDFC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018DE5C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018DEB8); + + +extern void (*D_80196CB0[])(void); + +void func_8018DF88(void *a0) { + D_80196CB0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018DFC4); + +void func_8018E22C(void) { +} + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018E234); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018E288); + + +extern void (*D_80196CC0[])(void); + +void func_8018E400(void *a0) { + D_80196CC0[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_8018E43C(void *a0) { + *(s16 *)((s32)a0 + 0x2) += 1; + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018E450); + +void func_8018E6D4(void) { +} + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018E6DC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018E730); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018E7E4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018EA04); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018EB60); + + +extern void (*D_80196CD4[])(void); + +void func_8018ECB8(void *a0) { + D_80196CD4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018ECF4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018ED84); + + +extern void (*D_80196CDC[])(void); + +void func_8018EDF8(void *a0) { + D_80196CDC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018EE34); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018EF20); + +extern void func_8012C218(void *a0); + void func_8018EF90(void) { + ((void (*)(void))func_8012C218)(); + } + + + +extern void (*D_80196CE8[])(void); + +void func_8018EFB0(void *a0) { + D_80196CE8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018EFEC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018F164); + +extern void func_8012C218(void *a0); + void func_8018F1D4(void) { + ((s32 (*)(void))func_8012C218)(); + } + + + +extern void (*D_80196CF4[])(void); + +void func_8018F1F4(void *a0) { + D_80196CF4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018F230); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018F2C4); + +extern void func_8013C414(void *a0, void *a1); +extern s32 D_8019AA5C; +extern s32 D_801D91D4; + +void func_8018F414(void) { + func_8013C414(&D_8019AA5C, &D_801D91D4); +} + + +extern void func_8013C414(void *a0, void *a1); + extern s32 D_8019AA5C; + extern s32 D_801DA5FC; + void func_8018F444(void) { + func_8013C414(&D_8019AA5C, &D_801DA5FC); + } + + +extern void func_8013C414(void *a0, void *a1); + extern s32 D_8019AA5C; + extern s32 D_801DB658; + void func_8018F474(void) { + func_8013C414(&D_8019AA5C, &D_801DB658); + } + + +extern void func_8013C414(void *a0, void *a1); +extern s32 D_8019AA5C; +extern s32 D_801DC180; + +void func_8018F4A4(void) { + func_8013C414(&D_8019AA5C, &D_801DC180); +} + + +extern void func_8013C414(void *a0, void *a1); +extern s32 D_8019AA5C; +extern s32 D_801DCD04; + +void func_8018F4D4(void) { + func_8013C414(&D_8019AA5C, &D_801DCD04); +} + + +extern void func_8013C414(void *a0, void *a1); +extern s32 D_8019AA5C; +extern s32 D_801DD2D4; + +void func_8018F504(void) { + func_8013C414(&D_8019AA5C, &D_801DD2D4); +} + + +extern void func_8013C414(void *a0, void *a1); + extern s32 D_8019AA5C; + extern s32 D_801DDD30; + void func_8018F534(void) { + func_8013C414(&D_8019AA5C, &D_801DDD30); + } + + + +extern void func_8013C414(void *a0, void *a1); +extern s32 D_8019AA5C; +extern s32 D_801DE674; + +void func_8018F564(void) { + func_8013C414(&D_8019AA5C, &D_801DE674); +} + + +extern void func_8013C414(void *a0, void *a1); + extern s32 D_8019AA5C; + extern s32 D_801DF3B4; + void func_8018F594(void) { + func_8013C414(&D_8019AA5C, &D_801DF3B4); + } + + +extern void func_8013C360(void *a0); + extern s32 D_801D91D4; + void func_8018F5C4(void) { + func_8013C360(&D_801D91D4); + } + + +extern void func_8013C360(void *a0); + extern s32 D_801DA5FC; + void func_8018F5EC(void) { + func_8013C360(&D_801DA5FC); + } + + +extern void func_8013C360(void *a0); + extern s32 D_801DB658; + void func_8018F614(void) { + func_8013C360(&D_801DB658); + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018F63C); + +extern void func_8013C360(void *a0); + extern s32 D_801DCD04; + void func_8018F664(void) { + func_8013C360(&D_801DCD04); + } + + +extern void func_8013C360(void *a0); + extern s32 D_801DD2D4; + void func_8018F68C(void) { + func_8013C360(&D_801DD2D4); + } + + +extern void func_8013C360(void *); + extern s32 D_801DDD30; + void func_8018F6B4(void) { + func_8013C360(&D_801DDD30); + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018F6DC); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018F704); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018F72C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018F894); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018F91C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018F944); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018FA34); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018FAE0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018FB8C); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018FC38); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018FCE4); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018FE18); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018FEA0); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8018FFC4); + +void func_80190068(s32 *a0) { + *(s16 *)((s32)a0 + 0x2) = 0xC; + } + + + +extern void (*D_80196CFC[])(void); + +void func_80190074(void *a0) { + D_80196CFC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801900B0); + + +extern s32 D_801E4C40; + +void func_801900E0(void) { + D_801E4C40 = 1280; +} + + + +extern s32 D_801E4C40; + +void func_801900F4(void) { + D_801E4C40 = 3796; +} + + + +extern void (*D_80196EA4[])(void); + +void func_80190108(void *a0) { + D_80196EA4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80190144); + +extern void func_80190384(void); + void func_80190344(void) { + func_80190384(); + } + + +extern void func_80146C3C(void); + void func_80190364(void) { + func_80146C3C(); + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80190384); + +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); + void func_801903DC(void *arg0) { + ((void (*)(s32, s32, s32, s32))func_80146994)(0x28, 0, arg0, 0); + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80190408); + + +extern void (*D_80196F00[])(void); + +void func_8019044C(void *a0) { + D_80196F00[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern s32 func_801904B8(s32 arg); + extern void func_80146CA0(void *a0); + void func_80190488(s32 arg0) { + func_801904B8(arg0); + ((void (*)(s32))func_80146CA0)(arg0); + } + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_801904B8); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_80190538); + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017AE2C", func_8019084C); + + + + diff --git a/src/ov_SC02_011/ov_SC02_011_jr_8017A4AC.c b/src/ov_SC02_011/ov_SC02_011_jr_8017A4AC.c index 4410f47f6..d01ab5525 100644 --- a/src/ov_SC02_011/ov_SC02_011_jr_8017A4AC.c +++ b/src/ov_SC02_011/ov_SC02_011_jr_8017A4AC.c @@ -2960,2775 +2960,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801EB184; - extern s16 D_801EB186; - extern s16 D_801EB188; - extern s16 D_801EB17C; - extern s16 D_801EB17E; - extern s16 D_801EB180; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801EB184, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801EB186, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801EB188, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801EB17C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801EB17E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801EB180, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801EB10C; -extern u16 D_801EB18C; -extern u16 D_801EB18E; -extern u16 D_801EB190; -extern s16 D_801EBA08; - -void func_8017B1D8(void) { - func_8012A418(); - D_801EBA08 = 0; - D_801EB10C = 0; - D_801EB18C = D_80126B5E; - D_801EB18E = D_80126B62; - D_801EB190 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80194670[]; - extern s16 D_801EB184; - extern s16 D_801EB17C; - 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_80194670[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80194670[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801EB184; - s16 *p78C = &D_801EB17C; - *(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_801EBA08 = 1; - D_801EB10C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801EB12C; - extern SV4_8017B368 D_801EB134; - extern s16 D_801EB184; - extern s16 D_801EB17C; - extern u16 D_80194670; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801EB12C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801EB134; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80194670)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80194670)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801EB184) = loc0; - (*(SV4_8017B368 *)&D_801EB17C) = loc1; - D_801EBA08 = 1; - D_801EB10C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80194670[]; - extern s16 D_801EB184; - extern s16 D_801EB186; - extern s16 D_801EB188; - extern s16 D_801EB17C; - extern s16 D_801EB17E; - extern s16 D_801EB180; - 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_80194670[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80194670[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801EB184; - s16 *p78C = &D_801EB17C; - *(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_801EB186; - v798 = D_801EB188; - v78C = *p78C; - v78E = D_801EB17E; - v790 = D_801EB180; - __asm__ __volatile__(""); - D_801EBA08 = 1; - D_801EB10C = 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_801EB10C; -extern s16 D_801EB184; -extern s16 D_801EB186; -extern s16 D_801EB188; -extern s16 D_801EB17C; -extern s16 D_801EB17E; -extern s16 D_801EB180; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801EB10C = 0; - D_801EB184 = (s16) D_80114F30; - D_801EB186 = (s16) D_80114F34; - D_801EB188 = (s16) D_80114F38; - D_801EB17C = (s16) D_80114F24; - D_801EB17E = (s16) D_80114F28; - D_801EB180 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801EB19C; -extern s16 D_801EB19E; -extern s16 D_801EB1A0; -extern s16 D_801EB1A4; -extern s16 D_801EB1A6; -extern s16 D_801EB1A8; - -void func_8017B824(void) { - D_801EB19C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801EB19E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801EB1A0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801EB1A4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801EB1A6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801EB1A8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801EB19C; -extern s16 D_801EB19E; -extern s16 D_801EB1A0; -extern s16 D_801EB1A4; -extern s16 D_801EB1A6; -extern s16 D_801EB1A8; - -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_801EB19C; - D_80114F34 = D_801EB19E; - D_80114F38 = D_801EB1A0; - D_80114F24 = D_801EB1A4; - D_80114F28 = D_801EB1A6; - D_80114F2C = D_801EB1A8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801EB184), src[8..15] -> (*(S8_8017B8E8 *)&D_801EB17C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801EB184) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801EB17C) = ((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_801EB18C; -extern u16 D_801EB18E; -extern u16 D_801EB190; - -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_801EB10C; -extern short D_801EB194; -extern short D_801EB196; -extern short D_801EB198; -extern s16 D_801EB184; -extern s16 D_801EB186; -extern s16 D_801EB188; -extern s16 D_801EB17C; -extern s16 D_801EB17E; -extern s16 D_801EB180; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801EB18C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801EB18E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801EB190); - (*(s16 *)&D_801EB194) = buf[0]; - (*(s16 *)&D_801EB196) = buf[1]; - (*(s16 *)&D_801EB198) = buf[2]; - D_801EB184 = D_80114F30 + buf[0]; - D_801EB10C = 0; - D_801EB186 = D_80114F34 + buf[1]; - D_801EB188 = D_80114F38 + buf[2]; - D_801EB17C = D_80114F24 + buf[0]; - D_801EB17E = D_80114F28 + buf[1]; - D_801EB180 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801EB12C; -extern SV4 D_801EB134; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801EB134) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801EB12C = 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_801EB134 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801EB134)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801EB12C) = 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_801EB134) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801EB154[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801EB154; - 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_801EB10C; -extern s16 D_801EBA08; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801EB10C = D_801EB10C + 1; - if (D_801EB10C >= 0x1F) { - D_801EBA08 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801EB10C; -extern s16 D_801EBA08; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801EB10C = D_801EB10C + 1; - if (0x18 < D_801EB10C) { - func_8012A4BC(); - D_801EBA08 = 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_801EB10C; -extern void (*D_801EB150)(void); -extern short D_801EB194; -extern short D_801EB196; -extern short D_801EB198; -extern s16 D_801EBA08; - -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_801EB10C = D_801EB10C + 1; - if (D_801EB10C >= 0x19) { - if (D_801EB150 != 0) { - (*D_801EB150)(); - } else { - D_80114F30 = D_80114F30 + D_801EB194; - D_80114F34 = D_80114F34 + D_801EB196; - D_80114F38 = D_80114F38 + D_801EB198; - D_80114F24 = D_80114F24 + D_801EB194; - D_80114F28 = D_80114F28 + D_801EB196; - D_80114F2C = D_80114F2C + D_801EB198; - func_8012A4BC(); - } - D_801EBA08 = 0; - } -} - - - -extern void (*D_80194710[])(void); - -void func_8017BE60(void *a0) { - D_80194710[*(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 (*D_80194734[])(void); - -void func_8017BEBC(void *a0) { - D_80194734[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017BEF8); - -DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ - - -extern void (*D_8019473C[])(void); - -void func_8017C150(void *a0) { - D_8019473C[*(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_80194728; - -void func_8017C18C(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_80194728, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017C294); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017C360); - - -extern void (*D_80194750[])(void); - -void func_8017C4BC(void *a0) { - D_80194750[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017C4F8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017C558); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017C688); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017CA14); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017CC8C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017CDD4); - - -extern void (*D_80194868[])(void); - -void func_8017CF54(void *a0) { - D_80194868[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017CF90); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017CFDC); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017D0D0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017D150); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017D204); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017D270); - -extern void func_8012C218(void *a0); - void func_8017D2FC(void) { - ((void (*)(void))func_8012C218)(); - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017D31C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017D370); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017D50C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017D710); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017DB04); - - -extern void (*D_80194B68[])(void); - -void func_8017DC84(void *a0) { - D_80194B68[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017DCC0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017DD34); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017DE10); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017E024); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017E0F8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017E1C8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017E220); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017E318); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017E358); - - -extern void (*D_80194B8C[])(void); - -void func_8017E380(void *a0) { - D_80194B8C[*(u8 *)((s32)a0 + 0x214)](); -} - - -extern void func_80147060(u8 *a0); - extern void func_80171A1C(u8 *a0); - extern void func_8017E3F4(s32 a0); - void func_8017E3BC(s32 a0) { - s32 s0 = a0; - ((void (*)(s32 *))func_80147060)((s32 *)s0); - ((void (*)(s32))func_80171A1C)(s0); - ((void (*)(s32))func_8017E3F4)(s0); - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017E3F4); - -void func_8017E434(void) { -} - -extern void func_80174684(void *); - extern s32 func_8017E464; - void func_8017E43C(void) { - func_80174684(&func_8017E464); - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017E464); - -extern void func_80147060(u8 *a0); - extern void func_80171A1C(u8 *a0); - extern void func_8017E4D8(s32 a0); - void func_8017E4A0(s32 a0) { - s32 s0 = a0; - ((void (*)(s32 *))func_80147060)((s32 *)s0); - ((void (*)(s32))func_80171A1C)(s0); - ((void (*)(s32))func_8017E4D8)(s0); - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017E4D8); - -void func_8017E518(void) { -} - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017E520); - - -extern void (*D_80194C58[])(void); - -void func_8017E564(void *a0) { - D_80194C58[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017E5A0); - -extern void func_8017E5F0(void); -void func_8017E5C8(void) { - func_8017E5F0(); -} - - -void func_8017E5E8(void) { -} - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017E5F0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017E72C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017EAC0); - - -extern void (*D_80194C98[])(void); - -void func_8017EB00(void *a0) { - D_80194C98[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017EB3C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017ECB0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017ED98); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017F0E0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017F160); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017F1AC); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017F2AC); - - -extern void (*D_80194CB8[])(void); - -void func_8017F2F0(void *a0) { - D_80194CB8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017F32C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017F458); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017F534); - - -extern void (*D_80194CC8[])(void); - -void func_8017F578(void *a0) { - D_80194CC8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017F5B4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017F630); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017F67C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017F7B4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017FA94); - - -extern void (*D_80194CD4[])(void); - -void func_8017FAD8(void *a0) { - D_80194CD4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017FB14); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017FBF8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017FCA0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017FD2C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017FD9C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017FE64); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017FF34); - - -extern void (*D_80194E58[])(void); - -void func_8017FF9C(void *a0) { - D_80194E58[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8017FFD8); - - -extern s32 func_80171CC4(void *a0, void *a1); -extern void func_80171A1C(u8 *a0); -extern s16 D_80126B36; -void func_80180010(u8 *a0) { - s16 *p = &D_80126B36; - if (*p != 0) { - if (func_80171CC4(a0, p - 3) == 0) { - return; - } - } - func_80171A1C(a0); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80180060); - -extern void func_80171A1C(u8 *a0); - void func_801800C4(s32 *param) { - param[0x200 / sizeof(s32)] = 1; - ((void (*)(void))func_80171A1C)(); - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801800E8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018015C); - -DEFINE_func_80180210() /* dedup: shared engine-core @0x80180210 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80180218); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80180258); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801802C0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80180328); - -void func_80180418(void) { -} - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80180420); - - -extern void (*D_80194EB0[])(void); - -void func_8018045C(void *a0) { - D_80194EB0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80180498); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801804E8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80180544); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801805C8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80180730); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018077C); - - -extern void (*D_80194EC4[])(void); - -void func_80180A88(void *a0) { - D_80194EC4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80180AC4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80180B04); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80180B74); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80180C00); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80180CD4); - - -extern void (*D_80194ED8[])(void); - -void func_80180D28(void *a0) { - D_80194ED8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80180D64); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80180E18); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80180E74); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80180FE4); - - -extern void (*D_80194FA4[])(void); - -void func_80181A64(void *a0) { - D_80194FA4[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80181AA0); - - -extern s32 func_800167F0(s32 a0); - -s32 func_80181AE4(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_80194FAC[])(void); - -void func_80181B08(void *a0) { - D_80194FAC[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80181B44); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80181B84); - -extern void func_800D1EBC(void); - void func_80181BF8(void) { - func_800D1EBC(); - } - - - -extern void (*D_80194FB8[])(void); - -void func_80181C18(void *a0) { - D_80194FB8[*(u8 *)((s32)a0 + 0x15)](); -} - - - -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_80181C54(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 (*D_80194FC4[])(void); - -void func_80181CD0(void *a0) { - D_80194FC4[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80181D0C); - - -extern s32 func_800167F0(s32 a0); - -s32 func_80181D50(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern s32 D_80194FD4; - -void func_80181D74(void) { - ((void (*)(s32 *, s32))func_8016EE40)(&D_80194FD4, 0x1000000); -} - - -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_80194FE0; - -void func_80181D9C(void) { - ((void (*)(void *, s32))func_8016EE40)(&D_80194FE0, 0x1000000); -} - - - -extern void (*D_8019501C[])(void); - -void func_80181DC4(void *a0) { - D_8019501C[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80181E00); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80181E40); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80181EF4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80181F6C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80181FA0); - -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_80194FF4; - -void func_80182090(void) { - ((void (*)(void *, s32))func_8016EE40)(&D_80194FF4, 0x1000000); -} - - - -extern void (*D_80195030[])(void); - -void func_801820B8(void *a0) { - D_80195030[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801820F4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80182148); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801821AC); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801821FC); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80182268); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801822F4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80182344); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80182380); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801823B8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801823EC); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80182488); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80182564); - -extern void func_8012A568(void (*a0)(void)); - extern s32 func_801823EC(s32 a0); - void func_80182614(void) { - ((void (*)(void *))func_8012A568)((void *)func_801823EC); - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018263C); - - -extern void (*D_80195048[])(void); - -void func_801826D8(void *a0) { - D_80195048[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80182714); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80182A08); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80182A9C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80182AF8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80182B88); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80182D60); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80182DB8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80182E68); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80182EC8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80182FA8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80182FF0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80183054); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80183080); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018312C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80183178); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801834EC); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80183558); - -extern void func_8018452C(void); - void func_8018360C(short *param) { - param[1] = 0xB; - func_8018452C(); - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80183630); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80183954); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80183994); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80183B30); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80183C2C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801840C0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80184134); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018418C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80184414); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018446C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018452C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80184590); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801845C0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801845F4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80184738); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018479C); - -extern void func_8012A568(void (*a0)(void)); - extern s32 func_8018263C(s32); - void func_801847C8(void) { - ((void (*)(void *))func_8012A568)((void *)func_8018263C); - } - - -extern void func_8012A568(void (*a0)(void)); - extern s32 func_801823EC(s32 a0); - void func_801847F0(void) { - ((void (*)(void *))func_8012A568)((void *)func_801823EC); - } - - -extern void func_80184918(s32 arg0, s32 arg1); - void func_80184818(s32 arg0) { - func_80184918(arg0, 0x1D); - } - - -extern void func_80184918(s32 arg0, s32 arg1); - void func_80184838(s32 arg0) { - func_80184918(arg0, 0x1E); - } - - -extern void func_80029124(s32 arg0, s32 arg1); - void func_80184858(void) { - func_80029124(0x9E, 1); - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018487C); - -void func_8018490C(s32 *a0, s32 a1, s16 a2) { - *(s32 *)((s32)a0 + 0xCC) = a1; - *(s16 *)((s32)a0 + 0x102) = a2; - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80184918); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80184964); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801849D4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80184A28); - -extern s32 func_800D0CE0(void); - s32 func_80184A34(void) { - return func_800D0CE0() != 0; - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80184A54); - - -extern void (*D_801957F8[])(void); - -void func_80184ACC(void *a0) { - D_801957F8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80184B08); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80184C0C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80184C98); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80184D50); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80184E00); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80184F48); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80185048); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80185098); - - -extern void (*D_801958B8[])(void); - -void func_80185120(void *a0) { - D_801958B8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018515C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80185268); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801852B0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80185388); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801853CC); - -void func_80185464(void *a0) { - s16 v0; - v0 = *(s16 *)((char *)a0 + 0xfc); - if (!v0) { - *(s16 *)((char *)a0 + 0x2) = 2; - } - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80185480); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801854DC); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80185548); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018567C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018576C); - - -extern void (*D_801958E8[])(void); - -void func_801859E0(void *a0) { - D_801958E8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80185A1C); - -void func_80185A84(void) { -} - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80185A8C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80185AAC); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80185BA4); - -u16 func_80185BF4(s32 *a0) { - return *(u16*)((s32)a0 + 0x34); -} - - -extern void func_8001AAA0(s32 arg); - void func_80185C00(void) { - func_8001AAA0(0x2F); - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80185C20); - - -extern void (*D_80195948[])(void); - -void func_80185C40(void *a0) { - D_80195948[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80185C7C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80185E20); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80185FA0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80186070); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80186184); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801861FC); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80186250); - -s32 func_80186290(s32 arg0) { - return *(u16*)(arg0 + 0x2) == 0x6; - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801862A4); - -extern s32 func_80188168(void); - void func_80186354(void) { - func_80188168(); - } - - -extern s32 func_8013CAE8(void); - void func_80186374(void) { - func_8013CAE8(); - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80186394); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801863D4); - - -extern void (*D_80195CC4[])(void); - -void func_801863F4(void *a0) { - D_80195CC4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80186430); - -void func_80186548(s32 *a0) { - *(s32 *)((s32)a0 + 0x48) = 0x1400; - *(s32 *)((s32)a0 + 0x14) = 0; - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80186558); - -void func_801865B0(s32 arg0) { - s32 *p = *(s32 **)((s32)arg0 + 0xcc); - *(u16 *)((s32)p + 0x8) = *(u16 *)((s32)arg0 + 0x6); - *(s16 *)((s32)p + 0xa) = *(u16 *)((s32)arg0 + 0xa) - 0xe0; - *(s16 *)((s32)p + 0xc) = *(u16 *)((s32)arg0 + 0xe) - 0x10; - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801865E4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80186680); - -extern s32 func_8017E358(void); - void func_801866E8(void) { - func_8017E358(); - } - - -extern void func_8017E43C(void); - void func_80186708(void) { - func_8017E43C(); - } - - -void func_80186728(void *a0) { - *(short *)((char *)a0 + 0x2) = 0x2; - } - - -void func_80186734(void *a0) { - *(short *)((char *)a0 + 0x2) = 0x3; - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80186740); - - -extern void func_8002D4C8(s32 arg0, s32 arg1); - void func_80186790(void *a0) { - *(s16 *)((s32)a0 + 0x2) = 0x4; - func_8002D4C8(0x634, 0); - } - - -void func_801867BC(void *a0) { - *(short *)((char *)a0 + 0x2) = 0x5; - *(int *)((char *)a0 + 0x1c) = 0; - } - - - -// @class: struct -// @stuck: none — MATCH expected; param_1 survives jal in $s0, table fp-call with %lo-fold -extern void func_80186818(u8 *a0); -extern void (*D_80195D18[])(int); - -void func_801867CC(int param_1) -{ - ((void (*)(void))func_80186818)(); - D_80195D18[*(unsigned short *)(param_1 + 2)](param_1); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80186818); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80186868); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80186AA0); - - -extern void (*D_80195D40[])(void); - -void func_80186AE0(void *a0) { - D_80195D40[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80186B1C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80186BB0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80186C30); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80186CB4); - -void func_80186D3C(void) { -} - -void func_80186D44(void) { -} - -extern s32 func_80128ED8(void *a0, void *a1); - extern s32 D_801EB518; - void func_80186D4C(void *arg0) { - ((void (*)(s32, s32))func_80128ED8)(M2C_FIELD(arg0, s32 *, 0xCC), &D_801EB518); - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80186D78); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80186E24); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80186E94); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80186F24); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80186F74); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80187018); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018707C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801870D0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80187110); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801871CC); - -extern s32 func_80186740(void); - void func_80187234(void) { - func_80186740(); - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80187254); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801872B4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018734C); - - -extern void (*D_80195D50[])(void); - -void func_801873FC(void *a0) { - D_80195D50[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80187438); - -void func_801874A0(void) { -} - - -extern void (*D_80195D58[])(void); - -void func_801874A8(void *a0) { - D_80195D58[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801874E4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018754C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80187614); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80187654); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80187724); - - -extern void (*D_80195DC4[])(void); - -void func_80187784(void *a0) { - D_80195DC4[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_801877C0(void) { -} - -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012AD50(void *a0); -void func_801877C8(int param_1) -{ - if (((int (*)(void))func_8012BEE8)() != 0) { - ((void (*)(int))func_8012AD50)(param_1); - } -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80187800); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80187838); - - -extern void (*D_80195F14[])(void); - -void func_8018788C(void *a0) { - D_80195F14[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801878C8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018797C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80187CE8); - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) - -extern u16 D_801270C0; -extern void (*D_80195FD8[])(); - -void func_80187D90(int param_1) -{ - if (*(s16 *)&D_801270C0 != 3) { - D_80195FD8[*(u16 *)(param_1 + 2)](); - } -} - - -extern s32 func_8012AD50(void *a0); - void func_80187DDC(u8 *a0) { - *(u16 *)(a0 + 0x72) |= 0x1000; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80187E08); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80187FA0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80188034); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80188114); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80188168); - - -// @class: remat -// @stuck: none — MATCH. &D_800C7C60 CSE'd once via pointer local `p` so the same reg feeds the *p=0x18 store AND arg5; writing D_800C7C60=0x18 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_800AEFA0; -extern int D_801E8C34; - -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); - -int func_801881BC(int arg0) -{ - int *p = &D_800C7C60; - *p = 0x18; - D_800C7C64 = &D_800A2E20; - ((void (*)(int, int, int *, int, int *))func_8001ABBC)(0, 0, &D_800AEFA0, D_801E8C34, p); -} - - -extern s32 D_8012704C; - void func_80188214(void) { - D_8012704C = 0x1; - } - - - -extern s32 D_801EBA74; - -void func_80188228(void) { - D_801EBA74 = 640; -} - - - -extern s32 D_801EBA74; - -void func_8018823C(void) { - D_801EBA74 = 272; -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80188250); - -extern void func_8002D4C8(s32 arg0, s32 arg1); - void func_801883C8(void) { - func_8002D4C8(0x6AA, 0); - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801883EC); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80188430); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80188508); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80188554); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80188654); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801887C8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801887F8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018898C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80188A10); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80188D54); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80188D80); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80188DC8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80188DF4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80188E3C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80189050); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801890C8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801891E8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80189324); - - -extern void (*D_801960D4[])(void); - -void func_801894E0(void *a0) { - D_801960D4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018951C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801895A0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801895CC); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80189620); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018964C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80189674); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801896B4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018974C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801897A4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018983C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80189880); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801898C8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801899B4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80189A50); - - -extern void (*D_801961D4[])(void); - -void func_80189B28(void *a0) { - D_801961D4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80189B64); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80189C20); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80189C90); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80189E00); - -extern s32 func_800D0CE0(void); - extern void func_8012C218(void *a0); - void func_80189EF4(void *a0) { - if (((s32 (*)(s32))func_800D0CE0)((s32)a0) == 1) { - ((void (*)(s32))func_8012C218)((s32)a0); - } - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80189F30); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018A084); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018A184); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018A1A4); - -extern void func_8012A4BC(void); - void func_8018A264(void) { - ((s32 (*)(void))func_8012A4BC)(); - } - - - -extern void (*D_801D6268[])(void); - -void func_8018A284(void *a0) { - D_801D6268[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018A2C0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018A438); - - -extern void (*D_801D626C[])(void); - -void func_8018A5E4(void *a0) { - D_801D626C[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_8012AD50(void *a0); - void func_8018A620(void) { - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018A640); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018A698); - -void func_8018A708(void) { - - extern s16 D_801EB6E4; - s16 *p = &D_801EB6E4; - s32 i = 0xF; - do { - *p = 0; - p = (s16 *)((s32)p + 0xe); - i--; - } while (i >= 0); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018A72C); - - -extern s16 D_801EB6DC; - extern s16 D_801EB6DE; - extern s16 D_801EB6E0; - extern s16 D_801EB6E2; - void func_8018A7CC(s32 arg0, s32 arg1, s32 arg2) { - D_801EB6DC = *(u16 *)((s32)arg0 + 0x0); - D_801EB6DE = *(u16 *)((s32)arg0 + 0x2); - D_801EB6E0 = arg1; - D_801EB6E2 = arg2; - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018A7FC); - - -extern s16 D_801EB6E2; - void func_8018A874(s32 arg0) { - *(s16 *)((s32)&D_801EB6E2 + 0x0) += arg0; - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018A890); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018A8E8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018A9BC); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018A9F8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018AA44); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018AB20); - -void func_8018ADE4(void) { - - extern s16 D_801EB5DC; - s16 *p = &D_801EB5DC; - s32 i = 0xF; - do { - *p = 0; - p = (s16 *)((s32)p + 0x10); - i--; - } while (i >= 0); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018AE08); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018AE30); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018AEB8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018AF24); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018AF94); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018B00C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018B058); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018B174); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018B1B0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018B2C4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018B5A8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018B60C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018B76C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018B950); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018BA0C); - -extern void func_8012C098(void); - void func_8018BAB8(void) { - func_8012C098(); - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018BAD8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018BB44); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018BBCC); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018BC10); - - -void func_8018BCB4(s32 *a0) { - *(s32 *)((s32)a0 + 0x1C) = 6; - *(s16 *)((s32)a0 + 0x5C) = 0; - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018BCC4); - - -// @class: plumbing -// @stuck: none — MATCH (18 ins): if((b&1) && p!=&sym) call(param,&sym); $a0 live, $a1=&sym fall out -extern void func_8012A828(s32 a0, void *a1); -extern void D_801DEB58; - -void func_8018BD70(s32 arg0) -{ - if ((M2C_FIELD(arg0, u8 *, 0xC3) & 1) && (M2C_FIELD(arg0, void **, 0x90) != &D_801DEB58)) { - func_8012A828(arg0, &D_801DEB58); - } -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018BDB8); - - -extern void func_8012A828(s32 a0, void *a1); -extern u8 D_801DEFE0; - -void func_8018BE00(s32 a0) { - *(s16 *)(a0 + 0x2) = 2; - func_8012A828(a0, &D_801DEFE0); - *(s32 *)(a0 + 0x1C) = 0x14; -} - - - -// @class: schedule -// @stuck: none — MATCH (44 ins). Two §3-T4 branch-polarity inversions: outer if(param_2>=iVar2) makes the func_8018BEF0 else-block fall-through; inner if(param_3>=iVar2) return 0 makes the func_8012A828 body fall-through. No pins needed — natural $s1/$s0/$s2 alloc matched. -extern s32 func_8012BCCC(s32 a0); -extern void func_8018BEF0(s32 param_1); -extern void func_8012A828(s32 a0, void *a1); -extern u8 D_801DEF38; - -s32 func_8018BE40(s32 param_1, s32 param_2, s32 param_3) { - s32 iVar2; - s16 sVar1; - - iVar2 = func_8012BCCC(param_1); - if (param_2 >= iVar2) { - func_8018BEF0(param_1); - return 1; - } - sVar1 = *(s16 *)(param_1 + 0xdc) + 1; - *(s16 *)(param_1 + 0xdc) = sVar1; - if (sVar1 < 0x79) { - return 0; - } - if (param_3 >= iVar2) { - return 0; - } - *(s16 *)(param_1 + 2) = 1; - func_8012A828(param_1, &D_801DEF38); - return 1; -} - - - -// @class: plumbing -// @stuck: none — MATCH (straightforward; callee sigs canonical from overlay) -extern void func_8012A828(s32 a0, void *a1); -extern void func_80142414(s32 a0, s16 a1); -extern u8 D_801DECF8; - -void func_8018BEF0(s32 param_1) { - *(s16 *)(param_1 + 2) = 4; - func_8012A828(param_1, &D_801DECF8); - *(s32 *)(param_1 + 0x1c) = 0x1e; - if (*(s16 *)(param_1 + 0xfc) == 0) { - *(s16 *)(param_1 + 0xfc) = 1; - ((void (*)(s32, s32))func_80142414)(param_1, -0x96); - } -} - - -void func_8018BF4C(void *a0) { - *(short *)((char *)a0 + 0x2) = 5; - *(int *)((char *)a0 + 0x1c) = 0x14; - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018BF60); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018BFBC); - - -extern void (*D_801D6FDC[])(void); - -void func_8018C040(void *a0) { - D_801D6FDC[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801D7024[])(void); - -void func_8018C07C(void *a0) { - D_801D7024[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: plumbing -// @stuck: none — MATCH (clean if/else, sh into delay slot of func_8001CA88 call) - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern int func_8001CA88(int, void *); -extern void func_80143994(s32 a0, s32 a1); -extern int D_801D6FE4; - -void func_8018C0B8(int param_1) -{ - int iVar1; - - iVar1 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = iVar1; - if (iVar1 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - *(short *)(param_1 + 2) = 1; - func_8001CA88(*(int *)(param_1 + 0x20), &D_801D6FE4); - func_80143994(param_1, 0x1000); - } -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018C11C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018C174); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018C1E0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018C31C); - -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8018BF60(void *a0); -void func_8018C388(int param_1) -{ - if (((int (*)(void))func_8012BEE8)() != 0) { - ((void (*)(int))func_8018BF60)(param_1); - } -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018C3C0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018C424); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018C47C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018C534); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018C5A4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018C734); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018C7B8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018C874); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018C968); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018CA04); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018CA64); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018CAC4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018CB20); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018CB70); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018CBBC); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018CC6C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018CC9C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018CEB0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018CF04); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018CFAC); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018CFF4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018D0C8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018D128); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018D19C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018D1D8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018D218); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018D288); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018D370); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018D52C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018D574); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018D720); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018D820); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018D8B8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018DAA8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018DBF4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018DD60); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018DDD0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018DE30); - - -extern void (*D_801DF7B0[])(void); - -void func_8018DF08(void *a0) { - D_801DF7B0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018DF44); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018E014); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018E0AC); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018E208); - - -extern void (*D_801DF818[])(void); - -void func_8018E358(void *a0) { - D_801DF818[*(u16 *)((s32)a0 + 0x2)](); -} - - - -void func_8018E394(void *a0) { - *(s16 *)((char *)a0 + 0x2) = 1; - *(s32 *)((char *)a0 + 0x1c) = 2; - *(s8 *)((char *)a0 + 0xfc) = 1; - *(s8 *)((char *)a0 + 0xfe) = 2; - *(s8 *)((char *)a0 + 0xfd) = 0; - *(s8 *)((char *)a0 + 0xff) = 4; - *(s16 *)((char *)a0 + 0xdc) = 0; - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018E3C8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018E420); - - -extern void (*D_801DF84C[])(void); - -void func_8018E4BC(void *a0) { - D_801DF84C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018E4F8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018E5E4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018E678); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018E780); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018E8A0); - - -extern void (*D_801DF89C[])(void); - -void func_8018EBEC(void *a0) { - D_801DF89C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018EC28); - - -extern void (*D_801E33D8[])(void); - -void func_8018ECA8(void *a0) { - D_801E33D8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018ECE4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018EDB8); - -void func_8018EDE0(void) { -} - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018EDE8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018EF34); - - -extern void func_8012C218(void *a0); - s32 func_8018F054(void * arg0) - { - *(short *)((char *)arg0 + 0x2) = 2; - ((void (*)(s32 *))func_8012C218)(*(s32 **)((char *)arg0 + 0xcc)); - } - - -void func_8018F080(void *a0) { - *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 1; - } - - -void func_8018F090(void *a0) { - *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 2; - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018F0A0); - - -extern s32 D_80126B58; -extern void func_8014ADA8(s32 a0, s32 a1); - -void func_8018F0E0(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_8018F114(void) { - return ((s32 (*)(void))func_80174764)() == 1; -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018F138); - - -extern void (*D_801E3400[])(void); - -void func_8018F19C(void *a0) { - D_801E3400[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018F1D8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018F260); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018F320); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018F390); - - -extern s32 D_801EB908; -extern s32 func_8012C588(s32 a0, s32 a1); - -s32 func_8018F488(s32 a0, s32 a1) { - D_801EB908 = a1; - return func_8012C588(0x85, a0); -} - - -extern u8 D_801152A8[]; -extern s32 D_801EB908; -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_800D23D0(void *a0); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012C218(void *a0); -extern void func_8012F14C(s32); -extern s32 func_80134510(s32 arg); - -// @class: regalloc-order -// @stuck: none — MATCH (145/145 ins, match_one confirmed) - -typedef struct { short vx, vy, vz, pad; } SVECTOR_80184F08; -typedef struct { u8 b[8]; } S8_80184F08; - - - -s32 func_8018F4B8(s32 param_1) { - - extern M2C_UNK D_8019105C; - extern s32 func_8012C354(s32 a0, s32 a1); - extern void RotMatrixZ(s32, void *); - extern void MulMatrix0(s32, void *, s32); - extern s32 D_801E3AE4; - extern char * D_801E3B18; - extern char D_801EB8E8[]; - - S8_80184F08 s60; - SVECTOR_80184F08 sStack_58; - S8_80184F08 s50; - int auStack_48[8]; - s32 iVar5, iVar8; - char *puVar2, *puVar4; - u16 uVar3; - - if (((s32 (*)(s32, void *))func_8012C354)(param_1, &D_801E3AE4) == 0) { - ((void (*)(s32))func_8012C218)(param_1); - } - ((void(*)(s32, void *))func_8012A828)(param_1, &(*(s32 *)&D_8019105C)); - iVar5 = *(s32 *)(param_1 + 0x20); - *(s16 *)(param_1 + 0x70) = 0x80; - *(s32 *)(iVar5 + 4) |= 0x50000040; - *(u16 *)(iVar5 + 0x2c) |= 1; - iVar8 = *(s32 *)(*(s32 *)(param_1 + 0x64) + 0x20) + 0x34; - ((void (*)(s32, s32, void *))func_8012F14C)(iVar8, D_801EB908, &s60); - s50 = s60; - sStack_58.vz = 0x1800; - sStack_58.vy = 0x1800; - sStack_58.vx = 0x1800; - ((void (*)(void *, void *))func_80017DC4)(&sStack_58, auStack_48); - RotMatrixZ(rand() & 0xfff, auStack_48); - MulMatrix0(iVar8, auStack_48, iVar5 + 0x34); - ((void (*)(void *, s32))func_80017E68)(&s50, iVar5 + 0x34); - - /* pool-alloc: gcc routes the loaded pointer through a caller-saved reg ($v0) - before the callee-saved home ($s1) — pin it to reproduce the extra move. */ - { - register char *tmp __asm__("$2"); - tmp = D_801E3B18; - puVar2 = tmp; - } - puVar4 = puVar2 + 0x20; - D_801E3B18 = puVar4; - *(char **)(param_1 + 0xcc) = puVar2; - if (D_801EB8E8 < puVar4) { - D_801E3B18 = D_801EB8E8 - 0x120; - } - func_800D20C0(&s60, &sStack_58, 7); - func_800D23D0(&sStack_58); - ((void(*)(void *, void *))RotMatrixYXZ)(&sStack_58, puVar2); - ((void (*)(void *, s32))func_80017E68)(&s60, (s32)puVar2); - - uVar3 = *(u16 *)((char *)&s50 + 2); - if (((s32 (*)(void *))func_80134510)(&s50) != 0 && - (s32)(s16)uVar3 - (s32)*(s16 *)((char *)&s50 + 2) < 0x80) { - *(s16 *)((char *)&s50 + 2) = *(s16 *)((char *)&s50 + 2) - 4; - { - register char *tmp __asm__("$3"); - tmp = D_801E3B18; - puVar2 = tmp; - } - puVar4 = puVar2 + 0x20; - D_801E3B18 = puVar4; - *(char **)(param_1 + 0xd0) = puVar2; - if (D_801EB8E8 < puVar4) { - D_801E3B18 = D_801EB8E8 - 0x120; - } - func_800D23D0(&(*(s32 *)&D_801152A8)); - ((void(*)(void *, void *))RotMatrixYXZ)(&(*(s32 *)&D_801152A8), puVar2); - ((void (*)(void *, s32))func_80017E68)(&s50, (s32)puVar2); - } - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; -} - - -extern s32 func_80017758(void *a0, void *a1); -extern void func_8012C218(void *a0); - - -// @class: regalloc-order -// @stuck: none — MATCH (168 ins). Keys: (1) pin param->$s1 via `register int self __asm__("$17")=param_1` -// (natural alloc put the short loop-counter in $s1); (2) block2's guarded dest via a test-temp -// `td=load; if(td){dest=td; ...}` forces the range-split `lw $a1; addu $s3,$a1,$0` the target has; -// (3) counter is `short i` do-while (keeps the `addu $s2,$v0,$0` raw-copy + sll16/sra16 compare); -// (4) gcc-2.7.2 loads s8/s16 via lbu/lhu+shift-extend (not lb/lh) so `signed char *p; *(s16*)buf=*p++` -// emits lbu;sll24;sra24;sh; (5) else-branch zero-byte asm barrier forces `addu $a0,$s1,$0` (else gcc -// reuses the still-live incoming $a0 with a nop delay slot). - -s32 func_8018F6FC(s32 param_1) { - - extern signed char D_801E3AD0[]; - register int self __asm__("$17") = ((int)param_1); - int iVar6; - int iVar1; - unsigned char buf[0x34]; - signed char *p; - short i; - int dest; - int td; - unsigned short t; - - iVar1 = *(int *)(self + 0x1c); - iVar6 = *(int *)(self + 0x20); - *(int *)(self + 0x1c) = iVar1 + 1; - if (iVar1 < 2) { - p = D_801E3AD0; - i = 0; - dest = *(int *)(self + 0xcc); - t = *(unsigned short *)(self + 0x70); - *(short *)(buf + 0x0c) = 0; - *(short *)(buf + 0x0a) = 0; - *(short *)(buf + 0x08) = 0; - *(short *)(buf + 0x1c) = 0; - *(short *)(buf + 0x14) = 0; - *(short *)(buf + 0x04) = 0; - buf[0x22] = 0; - buf[0x21] = 0; - buf[0x20] = 0; - buf[0x2a] = 0; - buf[0x29] = 0; - buf[0x28] = 0; - buf[0x2e] = 0; - buf[0x2d] = 0; - buf[0x2c] = 0; - *(int *)(buf + 0x30) = 0x50000000; - buf[0x25] = t; - buf[0x26] = t; - buf[0x24] = t; - do { - *(short *)(buf + 0x00) = *p++; - *(short *)(buf + 0x02) = *p++; - *(short *)(buf + 0x10) = *p++; - *(short *)(buf + 0x12) = *p++; - *(short *)(buf + 0x18) = *p++; - *(short *)(buf + 0x1a) = *p--; - func_80017758(buf, (void *)dest); - i++; - } while (i < 4); - - td = *(int *)(self + 0xd0); - if (td != 0) { - dest = td; - p = D_801E3AD0; - i = 0; - t = *(unsigned short *)(self + 0x70); - *(short *)(buf + 0x0c) = 0; - *(short *)(buf + 0x0a) = 0; - *(short *)(buf + 0x08) = 0; - *(short *)(buf + 0x1c) = 0; - *(short *)(buf + 0x14) = 0; - *(short *)(buf + 0x04) = 0; - buf[0x22] = 0; - buf[0x21] = 0; - buf[0x20] = 0; - buf[0x2a] = 0; - buf[0x29] = 0; - buf[0x28] = 0; - buf[0x2e] = 0; - buf[0x2d] = 0; - buf[0x2c] = 0; - *(int *)(buf + 0x30) = 0x50000000; - buf[0x25] = t; - buf[0x26] = t; - buf[0x24] = t; - do { - *(short *)(buf + 0x00) = *p++; - *(short *)(buf + 0x02) = *p++; - *(short *)(buf + 0x10) = *p++; - *(short *)(buf + 0x12) = *p++; - *(short *)(buf + 0x18) = *p++; - *(short *)(buf + 0x1a) = *p--; - func_80017758(buf, (void *)dest); - i++; - } while (i < 4); - } - *(short *)(self + 0x70) = *(short *)(self + 0x70) >> 1; - *(unsigned short *)(iVar6 + 0x2c) |= 1; - } else { - __asm__ __volatile__("" : "=r"(self) : "0"(self)); - func_8012C218((void *)self); - } -} - - - -extern void (*D_801E3B1C[])(void); - -void func_8018F99C(void *a0) { - D_801E3B1C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018F9D8); - - -extern void (*D_801E4210[])(void); - -void func_8018FB50(void *a0) { - D_801E4210[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801E4224[])(void); - -void func_8018FB8C(void *a0) { - D_801E4224[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012CBF4(s32 a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C218(void *a0); - -extern s32 D_801E41FC; -extern s32 D_801E4208; -extern u8 D_800D3918[]; -extern s32 D_80126D50; - -void func_8018FBC8(s32 param_1) { - s32 s0 = param_1; - s32 v; - - func_8012B14C(s0, (s32)&D_801E41FC); - if (((s32 (*)(s32))func_8012CBF4)(s0) != 0) { - func_80146A6C(6, (void *)s0, *(s16 *)(s0 + 0x6), *(s16 *)(s0 + 0xA), - *(s16 *)(s0 + 0xE), 0, 0); - v = func_80132EF4(s0, 0x22); - if (v != 0) { - *(s16 *)(v + 0x34) = 0x2000; - } - } else { - if (func_8012D5E4(s0, (s32)&D_801E4208, (s32)&D_800D3918, 0x19) == 0 && - (*(s16 *)(s0 + 0x70) == 2 || D_80126D50 == 0) && - func_8012BEE8(s0) == 0) { - return; - } - } - func_8012C218((void *)s0); -} - - - -// @class: schedule -// @stuck: none — MATCH (71 ins). Tail schedule: read out.c into an explicit temp BEFORE the 0x5a/1 const stores so gcc hoists its lhu early (load-delay filled by li 0x5a) and stores out.c last from a held reg; without the temp gcc instead deferred out.b's store. in/out are two separate SV3{s16 a,b,c} stack slots (sp+0x10, sp+0x18) for ((void (*)(int, void *, void *))func_8012F214)(a0,&in,&out). 0x34 compare reads u16 (lhu, not lh). - -extern void func_8012B2CC(s32 a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012AD80(s32 a0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C218(void *a0); - -extern int D_801E4218; - -void func_8018FCA8(int param_1) -{ - SV3 in; - SV3 out; - short c; - - if (*(unsigned short *)(param_1 + 0x34) == 0) { - *(short *)(*(int *)(param_1 + 0x20) + 0x12) = - *(short *)(*(int *)(*(int *)(param_1 + 0x64) + 0x20) + 0x12); - ((void (*)(void))func_8012B2CC)(); - func_8012B23C(param_1); - ((void (*)(int, void *))func_8012B14C)(param_1, &D_801E4218); - in.a = 0; - in.b = 0; - in.c = 0x10; - ((void (*)(int, void *, void *))func_8012F214)(param_1, &in, &out); - *(short *)(param_1 + 6) = out.a; - *(short *)(param_1 + 0xa) = out.b; - c = out.c; - *(int *)(param_1 + 0x1c) = 0x5a; - *(short *)(param_1 + 0x34) = 1; - *(short *)(param_1 + 0xe) = c; - } - *(short *)(*(int *)(param_1 + 0x20) + 0x10) = - *(short *)(*(int *)(param_1 + 0x20) + 0x10) - 0x80; - *(short *)(*(int *)(param_1 + 0x20) + 0x12) = - *(short *)(*(int *)(param_1 + 0x20) + 0x12) + 4; - *(short *)(*(int *)(param_1 + 0x20) + 0x14) = - *(short *)(*(int *)(param_1 + 0x20) + 0x14) + 5; - func_8012AD80(param_1); - if (func_8012BEE8(param_1) != 0) { - ((void (*)(int))func_8012C218)(param_1); - } -} - - - -// @class: other -// @stuck: none — MATCH (expected); 16-bit sh stores via short* casts, s0=param_1 call-crossing - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); - -extern int D_801E44CC; - -void func_8018FDC4(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 { - ((int (*)(int, void *))func_8001C214)(v0, &D_801E44CC); - *(short *)(param_1 + 0x2) = 1; - *(short *)(param_1 + 0x34) = 0; - } -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018FE20); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8018FE94); - - -extern void (*D_801E4858[])(void); - -void func_801900B4(void *a0) { - D_801E4858[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801900F0); - - -extern void (*D_801E8654[])(void); - -void func_80190184(void *a0) { - D_801E8654[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801901C0); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80190298); - -void func_801902C0(void) { -} - -extern void func_80178CBC(s32 a0, s32 a1); - extern short D_801E8604; - void func_801902C8(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 4; - func_80178CBC((int)arg0, (int)&D_801E8604); - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801902F4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80190334); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801903F4); - -void func_80190460(void *a0) { - *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 1; - } - - -void func_80190470(void *a0) { - *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 2; - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80190480); - -extern void func_800296F8(void); - s32 func_80190498(s32 arg0) { - ((void (*)(s32))func_800296F8)(*(s32 *)(arg0 + 0xdc)); - } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801904BC); - - -extern void (*D_801E86CC[])(void); - -void func_80190610(void *a0) { - D_801E86CC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_8019064C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80190748); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_801909D8); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80190B6C); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80190BC4); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80190C40); - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017A4AC", func_80190C84); - - - diff --git a/src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.c b/src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.c new file mode 100644 index 000000000..4cd1873a5 --- /dev/null +++ b/src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.c @@ -0,0 +1,5667 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80193268; +extern u8 D_801931D8; +extern u8 D_801931B4; +extern u8 D_80193190; +extern u8 D_80193244; +extern u8 D_80193220; +extern u8 D_801931FC; +extern u8 D_8019316C; +extern void func_80145934(void); +extern u8 D_801932F8; +extern u8 D_801932D4; +extern u8 D_801932B0; +extern u8 D_8019328C; +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_801926F0[]; +extern unsigned char D_80192720[]; +extern unsigned char D_80192770[]; +extern unsigned char D_801927A0[]; +extern unsigned char D_801927D0[]; +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(void); +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_80192820[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_801928E8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80192970[]; +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_80192978; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801EA008; +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_801EA00C; +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_801929A8; +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 void 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_80192A50[])(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_80192A74[])(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_80192A64; +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_80192A88[])(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_80192A94[]; +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_80192AA4[])(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_80192ABC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80192AAC; +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_80192AD0[])(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_80192AEC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80192ADC; +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_80192B00[])(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_80192B14[])(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_80192B28; +extern void (*D_80192B50[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80192B30; +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_80192B9C[])(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_80192BA0[])(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(void *a0); +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_80193004[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80193014[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801EA040; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8019303C[])(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_8019301C; +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_8019302C; +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_8019307C[])(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_80193084[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80193050; +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_80193090[])(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_80193060; +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_801EA048; +extern s32 D_801EA054; +extern s32 D_801EA058; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801930CC[])(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_801930A0[]; +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_801EA050; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8019331C[])(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_8019313C[]; +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_801933C0[])(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_80193514[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80193330; +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_8019351C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80193340; +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_80193360; +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_80193524[])(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(void); +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_8019354C[])(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_80193558[])(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_801933CC[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801935FC; +extern void func_8015D380(s32 a0); +extern unsigned char D_801926E0[]; +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_80193610[]; +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_8019364C[]; +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_80193694; +extern u16 D_80193696; +extern u16 D_80193698; +extern s32 D_8019369C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_801936A4; +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_801933B0; +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_80193728[]; +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_801937D8[])(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_80193808[]; +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_8019386C; +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_801EA060[]; +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_80193890[])(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_801EA0B8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_801938D8[])(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_801938C8; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801E9854[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_801938E0[])(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_80193934[])(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_801938FC; +extern s16 D_80193930; +extern s16 D_8019392E; +extern s16 D_8019392C; +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_80193940[])(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_801EA118; +extern u8 D_801EA119; +extern u8 D_801EA11A; +extern u8 D_801EA11B; +extern u8 D_801EA11C; +extern u8 D_801EA11D; +extern u8 D_801EA11E; +extern u8 D_801EA11F; +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_80193950[])(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_801EA158; +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_80193994[])(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_80193A10[]; +extern s32 D_80193A30[]; +extern u8 D_80193AAC[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80193ACC[]; +extern u8 D_80193AEC[]; +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_80193B88[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80193C04[])(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_801E9864; +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_80193C10[])(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_80193C18[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80193CE0[])(void); +extern void func_80166618(void *a0); +extern void (*D_80193CF0[])(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_80193D00[])(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_80193D0C[])(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_80193C6C[]; +extern u8 D_80193C80[]; +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_80193D24[])(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_80193D2C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80193D34[])(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_80193D3C[])(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_80193D44[])(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_80193D4C[])(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_80193D54[])(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_80193E08[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80193E10[])(void); +extern void func_80169F00(void *a0); +extern char D_80193DC0[]; +extern char D_80193D80[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80193E48[])(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_80193E54[])(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_80193E9C[])(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_80193F18[])(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_801EA478; +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_80193F0C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80193F50[]; +extern unsigned short D_80193F58[]; +extern unsigned short D_80193F60[]; +extern unsigned char D_801EA480[]; +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_801EA478; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80193F68[])(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_801EA5B4; +extern M2C_UNK D_801EA5B8; +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_801EA540; +extern void (*D_80193F98[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801EA5BC[]; +extern u8 D_801EA5C4[]; +extern u8 D_801EA574[]; +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_80193FA0[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80193FBC[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80193FC4[])(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_8019402C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80193FD0; +extern u8 D_80193FDC; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80194060[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80194068[])(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_801940BC[])(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_801940F0[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801940E0[]; +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_8019410C; +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); +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_80194184[])(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_8019418C[])(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_80194194[])(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_8019419C[])(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_801941A4[])(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_801941AC[])(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_801941B8[])(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_801941C4[])(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_801941D0[])(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_801941E0[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801941F0[])(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_801941F8[])(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_80194200[])(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_80194208[])(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_80194210[])(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_80194218[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80194220[])(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_80194228[])(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_80194230[])(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_80194238[])(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_80194240[])(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_80194248[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80194250[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80194258[])(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_80194260[])(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_80194268[])(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_80194270[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80194278[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80194280[])(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_80194288[])(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_80194290[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80194298[])(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_801942A0[])(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_801942E4[])(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_801942A8; +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_80194314[])(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_80194350[])(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(s32); +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_801943A8[])(); +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_801943B8[])(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_801943C0[])(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_80194528[])(); +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_80194534[])(); +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_801E9AAC; +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 int func_801789AC(void); +extern s16 D_801EBA08; +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_801EACF8; +extern short D_801EBA7C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801EB124; +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_801EB14C; +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_801EB108; +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_801EB9D8; +extern s16 D_801EB9DA; +extern s16 D_801EB9E4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801EB9D8; + + 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_801EB9E4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801EB9D8+0xC == &D_801EB9E4; 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_801EB9D8 + 0xC)) < 0x101) { + D_801EB9D8 = 0; + D_801EB9DA = 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_801EB9E4); + 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_801EB9D8 + 0xC)) < 0x101) { + D_801EB9D8 = 0; + D_801EB9DA = 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_801EB184; + extern s16 D_801EB186; + extern s16 D_801EB188; + extern s16 D_801EB17C; + extern s16 D_801EB17E; + extern s16 D_801EB180; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801EB184, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801EB186, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801EB188, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801EB17C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801EB17E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801EB180, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801EB10C; +extern u16 D_801EB18C; +extern u16 D_801EB18E; +extern u16 D_801EB190; +extern s16 D_801EBA08; + +void func_8017B1D8(void) { + func_8012A418(); + D_801EBA08 = 0; + D_801EB10C = 0; + D_801EB18C = D_80126B5E; + D_801EB18E = D_80126B62; + D_801EB190 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80194670[]; + extern s16 D_801EB184; + extern s16 D_801EB17C; + 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_80194670[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80194670[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801EB184; + s16 *p78C = &D_801EB17C; + *(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_801EBA08 = 1; + D_801EB10C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801EB12C; + extern SV4_8017B368 D_801EB134; + extern s16 D_801EB184; + extern s16 D_801EB17C; + extern u16 D_80194670; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801EB12C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801EB134; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80194670)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80194670)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801EB184) = loc0; + (*(SV4_8017B368 *)&D_801EB17C) = loc1; + D_801EBA08 = 1; + D_801EB10C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80194670[]; + extern s16 D_801EB184; + extern s16 D_801EB186; + extern s16 D_801EB188; + extern s16 D_801EB17C; + extern s16 D_801EB17E; + extern s16 D_801EB180; + 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_80194670[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80194670[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801EB184; + s16 *p78C = &D_801EB17C; + *(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_801EB186; + v798 = D_801EB188; + v78C = *p78C; + v78E = D_801EB17E; + v790 = D_801EB180; + __asm__ __volatile__(""); + D_801EBA08 = 1; + D_801EB10C = 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_801EB10C; +extern s16 D_801EB184; +extern s16 D_801EB186; +extern s16 D_801EB188; +extern s16 D_801EB17C; +extern s16 D_801EB17E; +extern s16 D_801EB180; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801EB10C = 0; + D_801EB184 = (s16) D_80114F30; + D_801EB186 = (s16) D_80114F34; + D_801EB188 = (s16) D_80114F38; + D_801EB17C = (s16) D_80114F24; + D_801EB17E = (s16) D_80114F28; + D_801EB180 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801EB19C; +extern s16 D_801EB19E; +extern s16 D_801EB1A0; +extern s16 D_801EB1A4; +extern s16 D_801EB1A6; +extern s16 D_801EB1A8; + +void func_8017B824(void) { + D_801EB19C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801EB19E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801EB1A0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801EB1A4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801EB1A6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801EB1A8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801EB19C; +extern s16 D_801EB19E; +extern s16 D_801EB1A0; +extern s16 D_801EB1A4; +extern s16 D_801EB1A6; +extern s16 D_801EB1A8; + +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_801EB19C; + D_80114F34 = D_801EB19E; + D_80114F38 = D_801EB1A0; + D_80114F24 = D_801EB1A4; + D_80114F28 = D_801EB1A6; + D_80114F2C = D_801EB1A8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801EB184), src[8..15] -> (*(S8_8017B8E8 *)&D_801EB17C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801EB184) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801EB17C) = ((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_801EB18C; +extern u16 D_801EB18E; +extern u16 D_801EB190; + +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_801EB10C; +extern short D_801EB194; +extern short D_801EB196; +extern short D_801EB198; +extern s16 D_801EB184; +extern s16 D_801EB186; +extern s16 D_801EB188; +extern s16 D_801EB17C; +extern s16 D_801EB17E; +extern s16 D_801EB180; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801EB18C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801EB18E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801EB190); + (*(s16 *)&D_801EB194) = buf[0]; + (*(s16 *)&D_801EB196) = buf[1]; + (*(s16 *)&D_801EB198) = buf[2]; + D_801EB184 = D_80114F30 + buf[0]; + D_801EB10C = 0; + D_801EB186 = D_80114F34 + buf[1]; + D_801EB188 = D_80114F38 + buf[2]; + D_801EB17C = D_80114F24 + buf[0]; + D_801EB17E = D_80114F28 + buf[1]; + D_801EB180 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801EB12C; +extern SV4 D_801EB134; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801EB134) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801EB12C = 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_801EB134 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801EB134)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801EB12C) = 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_801EB134) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801EB154[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801EB154; + 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_801EB10C; +extern s16 D_801EBA08; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801EB10C = D_801EB10C + 1; + if (D_801EB10C >= 0x1F) { + D_801EBA08 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801EB10C; +extern s16 D_801EBA08; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801EB10C = D_801EB10C + 1; + if (0x18 < D_801EB10C) { + func_8012A4BC(); + D_801EBA08 = 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_801EB10C; +extern void (*D_801EB150)(void); +extern short D_801EB194; +extern short D_801EB196; +extern short D_801EB198; +extern s16 D_801EBA08; + +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_801EB10C = D_801EB10C + 1; + if (D_801EB10C >= 0x19) { + if (D_801EB150 != 0) { + (*D_801EB150)(); + } else { + D_80114F30 = D_80114F30 + D_801EB194; + D_80114F34 = D_80114F34 + D_801EB196; + D_80114F38 = D_80114F38 + D_801EB198; + D_80114F24 = D_80114F24 + D_801EB194; + D_80114F28 = D_80114F28 + D_801EB196; + D_80114F2C = D_80114F2C + D_801EB198; + func_8012A4BC(); + } + D_801EBA08 = 0; + } +} + + + +extern void (*D_80194710[])(void); + +void func_8017BE60(void *a0) { + D_80194710[*(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 (*D_80194734[])(void); + +void func_8017BEBC(void *a0) { + D_80194734[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017BEF8); + +DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ + + +extern void (*D_8019473C[])(void); + +void func_8017C150(void *a0) { + D_8019473C[*(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_80194728; + +void func_8017C18C(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_80194728, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017C294); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017C360); + + +extern void (*D_80194750[])(void); + +void func_8017C4BC(void *a0) { + D_80194750[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017C4F8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017C558); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017C688); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017CA14); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017CC8C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017CDD4); + + +extern void (*D_80194868[])(void); + +void func_8017CF54(void *a0) { + D_80194868[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017CF90); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017CFDC); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017D0D0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017D150); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017D204); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017D270); + +extern void func_8012C218(void *a0); + void func_8017D2FC(void) { + ((void (*)(void))func_8012C218)(); + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017D31C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017D370); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017D50C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017D710); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017DB04); + + +extern void (*D_80194B68[])(void); + +void func_8017DC84(void *a0) { + D_80194B68[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017DCC0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017DD34); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017DE10); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017E024); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017E0F8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017E1C8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017E220); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017E318); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017E358); + + +extern void (*D_80194B8C[])(void); + +void func_8017E380(void *a0) { + D_80194B8C[*(u8 *)((s32)a0 + 0x214)](); +} + + +extern void func_80147060(u8 *a0); + extern void func_80171A1C(u8 *a0); + extern void func_8017E3F4(s32 a0); + void func_8017E3BC(s32 a0) { + s32 s0 = a0; + ((void (*)(s32 *))func_80147060)((s32 *)s0); + ((void (*)(s32))func_80171A1C)(s0); + ((void (*)(s32))func_8017E3F4)(s0); + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017E3F4); + +void func_8017E434(void) { +} + +extern void func_80174684(void *); + extern s32 func_8017E464; + void func_8017E43C(void) { + func_80174684(&func_8017E464); + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017E464); + +extern void func_80147060(u8 *a0); + extern void func_80171A1C(u8 *a0); + extern void func_8017E4D8(s32 a0); + void func_8017E4A0(s32 a0) { + s32 s0 = a0; + ((void (*)(s32 *))func_80147060)((s32 *)s0); + ((void (*)(s32))func_80171A1C)(s0); + ((void (*)(s32))func_8017E4D8)(s0); + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017E4D8); + +void func_8017E518(void) { +} + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017E520); + + +extern void (*D_80194C58[])(void); + +void func_8017E564(void *a0) { + D_80194C58[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017E5A0); + +extern void func_8017E5F0(void); +void func_8017E5C8(void) { + func_8017E5F0(); +} + + +void func_8017E5E8(void) { +} + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017E5F0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017E72C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017EAC0); + + +extern void (*D_80194C98[])(void); + +void func_8017EB00(void *a0) { + D_80194C98[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017EB3C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017ECB0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017ED98); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017F0E0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017F160); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017F1AC); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017F2AC); + + +extern void (*D_80194CB8[])(void); + +void func_8017F2F0(void *a0) { + D_80194CB8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017F32C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017F458); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017F534); + + +extern void (*D_80194CC8[])(void); + +void func_8017F578(void *a0) { + D_80194CC8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017F5B4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017F630); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017F67C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017F7B4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017FA94); + + +extern void (*D_80194CD4[])(void); + +void func_8017FAD8(void *a0) { + D_80194CD4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017FB14); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017FBF8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017FCA0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017FD2C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017FD9C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017FE64); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017FF34); + + +extern void (*D_80194E58[])(void); + +void func_8017FF9C(void *a0) { + D_80194E58[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017FFD8); + + +extern s32 func_80171CC4(void *a0, void *a1); +extern void func_80171A1C(u8 *a0); +extern s16 D_80126B36; +void func_80180010(u8 *a0) { + s16 *p = &D_80126B36; + if (*p != 0) { + if (func_80171CC4(a0, p - 3) == 0) { + return; + } + } + func_80171A1C(a0); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80180060); + +extern void func_80171A1C(u8 *a0); + void func_801800C4(s32 *param) { + param[0x200 / sizeof(s32)] = 1; + ((void (*)(void))func_80171A1C)(); + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801800E8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018015C); + +DEFINE_func_80180210() /* dedup: shared engine-core @0x80180210 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80180218); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80180258); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801802C0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80180328); + +void func_80180418(void) { +} + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80180420); + + +extern void (*D_80194EB0[])(void); + +void func_8018045C(void *a0) { + D_80194EB0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80180498); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801804E8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80180544); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801805C8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80180730); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018077C); + + +extern void (*D_80194EC4[])(void); + +void func_80180A88(void *a0) { + D_80194EC4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80180AC4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80180B04); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80180B74); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80180C00); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80180CD4); + + +extern void (*D_80194ED8[])(void); + +void func_80180D28(void *a0) { + D_80194ED8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80180D64); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80180E18); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80180E74); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80180FE4); + + +extern void (*D_80194FA4[])(void); + +void func_80181A64(void *a0) { + D_80194FA4[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80181AA0); + + +extern s32 func_800167F0(s32 a0); + +s32 func_80181AE4(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_80194FAC[])(void); + +void func_80181B08(void *a0) { + D_80194FAC[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80181B44); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80181B84); + +extern void func_800D1EBC(void); + void func_80181BF8(void) { + func_800D1EBC(); + } + + + +extern void (*D_80194FB8[])(void); + +void func_80181C18(void *a0) { + D_80194FB8[*(u8 *)((s32)a0 + 0x15)](); +} + + + +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_80181C54(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 (*D_80194FC4[])(void); + +void func_80181CD0(void *a0) { + D_80194FC4[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80181D0C); + + +extern s32 func_800167F0(s32 a0); + +s32 func_80181D50(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); +extern s32 D_80194FD4; + +void func_80181D74(void) { + ((void (*)(s32 *, s32))func_8016EE40)(&D_80194FD4, 0x1000000); +} + + +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); +extern M2C_UNK D_80194FE0; + +void func_80181D9C(void) { + ((void (*)(void *, s32))func_8016EE40)(&D_80194FE0, 0x1000000); +} + + + +extern void (*D_8019501C[])(void); + +void func_80181DC4(void *a0) { + D_8019501C[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80181E00); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80181E40); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80181EF4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80181F6C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80181FA0); + +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); +extern M2C_UNK D_80194FF4; + +void func_80182090(void) { + ((void (*)(void *, s32))func_8016EE40)(&D_80194FF4, 0x1000000); +} + + + +extern void (*D_80195030[])(void); + +void func_801820B8(void *a0) { + D_80195030[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801820F4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182148); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801821AC); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801821FC); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182268); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801822F4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182344); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182380); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801823B8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801823EC); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182488); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182564); + +extern void func_8012A568(void (*a0)(void)); + extern s32 func_801823EC(s32 a0); + void func_80182614(void) { + ((void (*)(void *))func_8012A568)((void *)func_801823EC); + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018263C); + + +extern void (*D_80195048[])(void); + +void func_801826D8(void *a0) { + D_80195048[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182714); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182A08); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182A9C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182AF8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182B88); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182D60); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182DB8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182E68); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182EC8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182FA8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80182FF0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80183054); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80183080); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018312C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80183178); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801834EC); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80183558); + +extern void func_8018452C(void); + void func_8018360C(short *param) { + param[1] = 0xB; + func_8018452C(); + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80183630); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80183954); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80183994); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80183B30); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80183C2C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801840C0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184134); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018418C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184414); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018446C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018452C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184590); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801845C0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801845F4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184738); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018479C); + +extern void func_8012A568(void (*a0)(void)); + extern s32 func_8018263C(s32); + void func_801847C8(void) { + ((void (*)(void *))func_8012A568)((void *)func_8018263C); + } + + +extern void func_8012A568(void (*a0)(void)); + extern s32 func_801823EC(s32 a0); + void func_801847F0(void) { + ((void (*)(void *))func_8012A568)((void *)func_801823EC); + } + + +extern void func_80184918(s32 arg0, s32 arg1); + void func_80184818(s32 arg0) { + func_80184918(arg0, 0x1D); + } + + +extern void func_80184918(s32 arg0, s32 arg1); + void func_80184838(s32 arg0) { + func_80184918(arg0, 0x1E); + } + + +extern void func_80029124(s32 arg0, s32 arg1); + void func_80184858(void) { + func_80029124(0x9E, 1); + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018487C); + +void func_8018490C(s32 *a0, s32 a1, s16 a2) { + *(s32 *)((s32)a0 + 0xCC) = a1; + *(s16 *)((s32)a0 + 0x102) = a2; + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184918); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184964); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801849D4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184A28); + +extern s32 func_800D0CE0(void); + s32 func_80184A34(void) { + return func_800D0CE0() != 0; + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184A54); + + +extern void (*D_801957F8[])(void); + +void func_80184ACC(void *a0) { + D_801957F8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184B08); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184C0C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184C98); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184D50); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184E00); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80184F48); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80185048); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80185098); + + +extern void (*D_801958B8[])(void); + +void func_80185120(void *a0) { + D_801958B8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018515C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80185268); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801852B0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80185388); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801853CC); + +void func_80185464(void *a0) { + s16 v0; + v0 = *(s16 *)((char *)a0 + 0xfc); + if (!v0) { + *(s16 *)((char *)a0 + 0x2) = 2; + } + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80185480); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801854DC); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80185548); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018567C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018576C); + + +extern void (*D_801958E8[])(void); + +void func_801859E0(void *a0) { + D_801958E8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80185A1C); + +void func_80185A84(void) { +} + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80185A8C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80185AAC); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80185BA4); + +u16 func_80185BF4(s32 *a0) { + return *(u16*)((s32)a0 + 0x34); +} + + +extern void func_8001AAA0(s32 arg); + void func_80185C00(void) { + func_8001AAA0(0x2F); + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80185C20); + + +extern void (*D_80195948[])(void); + +void func_80185C40(void *a0) { + D_80195948[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80185C7C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80185E20); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80185FA0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186070); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186184); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801861FC); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186250); + +s32 func_80186290(s32 arg0) { + return *(u16*)(arg0 + 0x2) == 0x6; + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801862A4); + +extern s32 func_80188168(void); + void func_80186354(void) { + func_80188168(); + } + + +extern s32 func_8013CAE8(void); + void func_80186374(void) { + func_8013CAE8(); + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186394); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801863D4); + + +extern void (*D_80195CC4[])(void); + +void func_801863F4(void *a0) { + D_80195CC4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186430); + +void func_80186548(s32 *a0) { + *(s32 *)((s32)a0 + 0x48) = 0x1400; + *(s32 *)((s32)a0 + 0x14) = 0; + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186558); + +void func_801865B0(s32 arg0) { + s32 *p = *(s32 **)((s32)arg0 + 0xcc); + *(u16 *)((s32)p + 0x8) = *(u16 *)((s32)arg0 + 0x6); + *(s16 *)((s32)p + 0xa) = *(u16 *)((s32)arg0 + 0xa) - 0xe0; + *(s16 *)((s32)p + 0xc) = *(u16 *)((s32)arg0 + 0xe) - 0x10; + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801865E4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186680); + +extern s32 func_8017E358(void); + void func_801866E8(void) { + func_8017E358(); + } + + +extern void func_8017E43C(void); + void func_80186708(void) { + func_8017E43C(); + } + + +void func_80186728(void *a0) { + *(short *)((char *)a0 + 0x2) = 0x2; + } + + +void func_80186734(void *a0) { + *(short *)((char *)a0 + 0x2) = 0x3; + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186740); + + +extern void func_8002D4C8(s32 arg0, s32 arg1); + void func_80186790(void *a0) { + *(s16 *)((s32)a0 + 0x2) = 0x4; + func_8002D4C8(0x634, 0); + } + + +void func_801867BC(void *a0) { + *(short *)((char *)a0 + 0x2) = 0x5; + *(int *)((char *)a0 + 0x1c) = 0; + } + + + +// @class: struct +// @stuck: none — MATCH expected; param_1 survives jal in $s0, table fp-call with %lo-fold +extern void func_80186818(u8 *a0); +extern void (*D_80195D18[])(int); + +void func_801867CC(int param_1) +{ + ((void (*)(void))func_80186818)(); + D_80195D18[*(unsigned short *)(param_1 + 2)](param_1); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186818); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186868); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186AA0); + + +extern void (*D_80195D40[])(void); + +void func_80186AE0(void *a0) { + D_80195D40[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186B1C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186BB0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186C30); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186CB4); + +void func_80186D3C(void) { +} + +void func_80186D44(void) { +} + +extern s32 func_80128ED8(void *a0, void *a1); + extern s32 D_801EB518; + void func_80186D4C(void *arg0) { + ((void (*)(s32, s32))func_80128ED8)(M2C_FIELD(arg0, s32 *, 0xCC), &D_801EB518); + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186D78); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186E24); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186E94); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186F24); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186F74); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80187018); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018707C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801870D0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80187110); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801871CC); + +extern s32 func_80186740(void); + void func_80187234(void) { + func_80186740(); + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80187254); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801872B4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018734C); + + +extern void (*D_80195D50[])(void); + +void func_801873FC(void *a0) { + D_80195D50[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80187438); + +void func_801874A0(void) { +} + + +extern void (*D_80195D58[])(void); + +void func_801874A8(void *a0) { + D_80195D58[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801874E4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018754C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80187614); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80187654); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80187724); + + +extern void (*D_80195DC4[])(void); + +void func_80187784(void *a0) { + D_80195DC4[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_801877C0(void) { +} + +extern s32 func_8012BEE8(s32 a0); +extern s32 func_8012AD50(void *a0); +void func_801877C8(int param_1) +{ + if (((int (*)(void))func_8012BEE8)() != 0) { + ((void (*)(int))func_8012AD50)(param_1); + } +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80187800); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80187838); + + +extern void (*D_80195F14[])(void); + +void func_8018788C(void *a0) { + D_80195F14[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801878C8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018797C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80187CE8); + + +// @class: struct +// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) + +extern u16 D_801270C0; +extern void (*D_80195FD8[])(); + +void func_80187D90(int param_1) +{ + if (*(s16 *)&D_801270C0 != 3) { + D_80195FD8[*(u16 *)(param_1 + 2)](); + } +} + + +extern s32 func_8012AD50(void *a0); + void func_80187DDC(u8 *a0) { + *(u16 *)(a0 + 0x72) |= 0x1000; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80187E08); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80187FA0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188034); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188114); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188168); + + +// @class: remat +// @stuck: none — MATCH. &D_800C7C60 CSE'd once via pointer local `p` so the same reg feeds the *p=0x18 store AND arg5; writing D_800C7C60=0x18 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_800AEFA0; +extern int D_801E8C34; + +extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); + +int func_801881BC(int arg0) +{ + int *p = &D_800C7C60; + *p = 0x18; + D_800C7C64 = &D_800A2E20; + ((void (*)(int, int, int *, int, int *))func_8001ABBC)(0, 0, &D_800AEFA0, D_801E8C34, p); +} + + +extern s32 D_8012704C; + void func_80188214(void) { + D_8012704C = 0x1; + } + + + +extern s32 D_801EBA74; + +void func_80188228(void) { + D_801EBA74 = 640; +} + + + +extern s32 D_801EBA74; + +void func_8018823C(void) { + D_801EBA74 = 272; +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188250); + +extern void func_8002D4C8(s32 arg0, s32 arg1); + void func_801883C8(void) { + func_8002D4C8(0x6AA, 0); + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801883EC); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188430); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188508); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188554); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188654); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801887C8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801887F8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018898C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188A10); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188D54); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188D80); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188DC8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188DF4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188E3C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80189050); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801890C8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801891E8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80189324); + + +extern void (*D_801960D4[])(void); + +void func_801894E0(void *a0) { + D_801960D4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018951C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801895A0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801895CC); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80189620); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018964C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80189674); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801896B4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018974C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801897A4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018983C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80189880); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801898C8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801899B4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80189A50); + + +extern void (*D_801961D4[])(void); + +void func_80189B28(void *a0) { + D_801961D4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80189B64); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80189C20); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80189C90); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80189E00); + +extern s32 func_800D0CE0(void); + extern void func_8012C218(void *a0); + void func_80189EF4(void *a0) { + if (((s32 (*)(s32))func_800D0CE0)((s32)a0) == 1) { + ((void (*)(s32))func_8012C218)((s32)a0); + } + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80189F30); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018A084); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018A184); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018A1A4); + +extern void func_8012A4BC(void); + void func_8018A264(void) { + ((s32 (*)(void))func_8012A4BC)(); + } + + + +extern void (*D_801D6268[])(void); + +void func_8018A284(void *a0) { + D_801D6268[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018A2C0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018A438); + + +extern void (*D_801D626C[])(void); + +void func_8018A5E4(void *a0) { + D_801D626C[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern s32 func_8012AD50(void *a0); + void func_8018A620(void) { + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018A640); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018A698); + +void func_8018A708(void) { + + extern s16 D_801EB6E4; + s16 *p = &D_801EB6E4; + s32 i = 0xF; + do { + *p = 0; + p = (s16 *)((s32)p + 0xe); + i--; + } while (i >= 0); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018A72C); + + +extern s16 D_801EB6DC; + extern s16 D_801EB6DE; + extern s16 D_801EB6E0; + extern s16 D_801EB6E2; + void func_8018A7CC(s32 arg0, s32 arg1, s32 arg2) { + D_801EB6DC = *(u16 *)((s32)arg0 + 0x0); + D_801EB6DE = *(u16 *)((s32)arg0 + 0x2); + D_801EB6E0 = arg1; + D_801EB6E2 = arg2; + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018A7FC); + + +extern s16 D_801EB6E2; + void func_8018A874(s32 arg0) { + *(s16 *)((s32)&D_801EB6E2 + 0x0) += arg0; + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018A890); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018A8E8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018A9BC); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018A9F8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018AA44); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018AB20); + +void func_8018ADE4(void) { + + extern s16 D_801EB5DC; + s16 *p = &D_801EB5DC; + s32 i = 0xF; + do { + *p = 0; + p = (s16 *)((s32)p + 0x10); + i--; + } while (i >= 0); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018AE08); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018AE30); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018AEB8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018AF24); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018AF94); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018B00C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018B058); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018B174); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018B1B0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018B2C4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018B5A8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018B60C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018B76C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018B950); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018BA0C); + +extern void func_8012C098(void); + void func_8018BAB8(void) { + func_8012C098(); + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018BAD8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018BB44); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018BBCC); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018BC10); + + +void func_8018BCB4(s32 *a0) { + *(s32 *)((s32)a0 + 0x1C) = 6; + *(s16 *)((s32)a0 + 0x5C) = 0; + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018BCC4); + + +// @class: plumbing +// @stuck: none — MATCH (18 ins): if((b&1) && p!=&sym) call(param,&sym); $a0 live, $a1=&sym fall out +extern void func_8012A828(s32 a0, void *a1); +extern void D_801DEB58; + +void func_8018BD70(s32 arg0) +{ + if ((M2C_FIELD(arg0, u8 *, 0xC3) & 1) && (M2C_FIELD(arg0, void **, 0x90) != &D_801DEB58)) { + func_8012A828(arg0, &D_801DEB58); + } +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018BDB8); + + +extern void func_8012A828(s32 a0, void *a1); +extern u8 D_801DEFE0; + +void func_8018BE00(s32 a0) { + *(s16 *)(a0 + 0x2) = 2; + func_8012A828(a0, &D_801DEFE0); + *(s32 *)(a0 + 0x1C) = 0x14; +} + + + +// @class: schedule +// @stuck: none — MATCH (44 ins). Two §3-T4 branch-polarity inversions: outer if(param_2>=iVar2) makes the func_8018BEF0 else-block fall-through; inner if(param_3>=iVar2) return 0 makes the func_8012A828 body fall-through. No pins needed — natural $s1/$s0/$s2 alloc matched. +extern s32 func_8012BCCC(s32 a0); +extern void func_8018BEF0(s32 param_1); +extern void func_8012A828(s32 a0, void *a1); +extern u8 D_801DEF38; + +s32 func_8018BE40(s32 param_1, s32 param_2, s32 param_3) { + s32 iVar2; + s16 sVar1; + + iVar2 = func_8012BCCC(param_1); + if (param_2 >= iVar2) { + func_8018BEF0(param_1); + return 1; + } + sVar1 = *(s16 *)(param_1 + 0xdc) + 1; + *(s16 *)(param_1 + 0xdc) = sVar1; + if (sVar1 < 0x79) { + return 0; + } + if (param_3 >= iVar2) { + return 0; + } + *(s16 *)(param_1 + 2) = 1; + func_8012A828(param_1, &D_801DEF38); + return 1; +} + + + +// @class: plumbing +// @stuck: none — MATCH (straightforward; callee sigs canonical from overlay) +extern void func_8012A828(s32 a0, void *a1); +extern void func_80142414(s32 a0, s16 a1); +extern u8 D_801DECF8; + +void func_8018BEF0(s32 param_1) { + *(s16 *)(param_1 + 2) = 4; + func_8012A828(param_1, &D_801DECF8); + *(s32 *)(param_1 + 0x1c) = 0x1e; + if (*(s16 *)(param_1 + 0xfc) == 0) { + *(s16 *)(param_1 + 0xfc) = 1; + ((void (*)(s32, s32))func_80142414)(param_1, -0x96); + } +} + + +void func_8018BF4C(void *a0) { + *(short *)((char *)a0 + 0x2) = 5; + *(int *)((char *)a0 + 0x1c) = 0x14; + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018BF60); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018BFBC); + + +extern void (*D_801D6FDC[])(void); + +void func_8018C040(void *a0) { + D_801D6FDC[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_801D7024[])(void); + +void func_8018C07C(void *a0) { + D_801D7024[*(u16 *)((s32)a0 + 0x2)](); +} + + + +// @class: plumbing +// @stuck: none — MATCH (clean if/else, sh into delay slot of func_8001CA88 call) + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern int func_8001CA88(int, void *); +extern void func_80143994(s32 a0, s32 a1); +extern int D_801D6FE4; + +void func_8018C0B8(int param_1) +{ + int iVar1; + + iVar1 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = iVar1; + if (iVar1 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + *(short *)(param_1 + 2) = 1; + func_8001CA88(*(int *)(param_1 + 0x20), &D_801D6FE4); + func_80143994(param_1, 0x1000); + } +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018C11C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018C174); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018C1E0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018C31C); + +extern s32 func_8012BEE8(s32 a0); +extern s32 func_8018BF60(void *a0); +void func_8018C388(int param_1) +{ + if (((int (*)(void))func_8012BEE8)() != 0) { + ((void (*)(int))func_8018BF60)(param_1); + } +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018C3C0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018C424); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018C47C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018C534); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018C5A4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018C734); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018C7B8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018C874); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018C968); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018CA04); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018CA64); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018CAC4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018CB20); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018CB70); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018CBBC); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018CC6C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018CC9C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018CEB0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018CF04); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018CFAC); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018CFF4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018D0C8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018D128); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018D19C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018D1D8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018D218); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018D288); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018D370); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018D52C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018D574); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018D720); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018D820); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018D8B8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018DAA8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018DBF4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018DD60); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018DDD0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018DE30); + + +extern void (*D_801DF7B0[])(void); + +void func_8018DF08(void *a0) { + D_801DF7B0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018DF44); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018E014); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018E0AC); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018E208); + + +extern void (*D_801DF818[])(void); + +void func_8018E358(void *a0) { + D_801DF818[*(u16 *)((s32)a0 + 0x2)](); +} + + + +void func_8018E394(void *a0) { + *(s16 *)((char *)a0 + 0x2) = 1; + *(s32 *)((char *)a0 + 0x1c) = 2; + *(s8 *)((char *)a0 + 0xfc) = 1; + *(s8 *)((char *)a0 + 0xfe) = 2; + *(s8 *)((char *)a0 + 0xfd) = 0; + *(s8 *)((char *)a0 + 0xff) = 4; + *(s16 *)((char *)a0 + 0xdc) = 0; + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018E3C8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018E420); + + +extern void (*D_801DF84C[])(void); + +void func_8018E4BC(void *a0) { + D_801DF84C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018E4F8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018E5E4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018E678); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018E780); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018E8A0); + + +extern void (*D_801DF89C[])(void); + +void func_8018EBEC(void *a0) { + D_801DF89C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018EC28); + + +extern void (*D_801E33D8[])(void); + +void func_8018ECA8(void *a0) { + D_801E33D8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018ECE4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018EDB8); + +void func_8018EDE0(void) { +} + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018EDE8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018EF34); + + +extern void func_8012C218(void *a0); + s32 func_8018F054(void * arg0) + { + *(short *)((char *)arg0 + 0x2) = 2; + ((void (*)(s32 *))func_8012C218)(*(s32 **)((char *)arg0 + 0xcc)); + } + + +void func_8018F080(void *a0) { + *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 1; + } + + +void func_8018F090(void *a0) { + *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 2; + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018F0A0); + + +extern s32 D_80126B58; +extern void func_8014ADA8(s32 a0, s32 a1); + +void func_8018F0E0(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_8018F114(void) { + return ((s32 (*)(void))func_80174764)() == 1; +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018F138); + + +extern void (*D_801E3400[])(void); + +void func_8018F19C(void *a0) { + D_801E3400[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018F1D8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018F260); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018F320); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018F390); + + +extern s32 D_801EB908; +extern s32 func_8012C588(s32 a0, s32 a1); + +s32 func_8018F488(s32 a0, s32 a1) { + D_801EB908 = a1; + return func_8012C588(0x85, a0); +} + + +extern u8 D_801152A8[]; +extern s32 D_801EB908; +extern s32 func_80017DC4(void *a0, void *a1); +extern void func_80017E68(void *a0, void *a1); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8012C218(void *a0); +extern void func_8012F14C(s32); +extern s32 func_80134510(s32 arg); + +// @class: regalloc-order +// @stuck: none — MATCH (145/145 ins, match_one confirmed) + +typedef struct { short vx, vy, vz, pad; } SVECTOR_80184F08; +typedef struct { u8 b[8]; } S8_80184F08; + + + +s32 func_8018F4B8(s32 param_1) { + + extern M2C_UNK D_8019105C; + extern s32 func_8012C354(s32 a0, s32 a1); + extern void RotMatrixZ(s32, void *); + extern void MulMatrix0(s32, void *, s32); + extern s32 D_801E3AE4; + extern char * D_801E3B18; + extern char D_801EB8E8[]; + + S8_80184F08 s60; + SVECTOR_80184F08 sStack_58; + S8_80184F08 s50; + int auStack_48[8]; + s32 iVar5, iVar8; + char *puVar2, *puVar4; + u16 uVar3; + + if (((s32 (*)(s32, void *))func_8012C354)(param_1, &D_801E3AE4) == 0) { + ((void (*)(s32))func_8012C218)(param_1); + } + ((void(*)(s32, void *))func_8012A828)(param_1, &(*(s32 *)&D_8019105C)); + iVar5 = *(s32 *)(param_1 + 0x20); + *(s16 *)(param_1 + 0x70) = 0x80; + *(s32 *)(iVar5 + 4) |= 0x50000040; + *(u16 *)(iVar5 + 0x2c) |= 1; + iVar8 = *(s32 *)(*(s32 *)(param_1 + 0x64) + 0x20) + 0x34; + ((void (*)(s32, s32, void *))func_8012F14C)(iVar8, D_801EB908, &s60); + s50 = s60; + sStack_58.vz = 0x1800; + sStack_58.vy = 0x1800; + sStack_58.vx = 0x1800; + ((void (*)(void *, void *))func_80017DC4)(&sStack_58, auStack_48); + RotMatrixZ(rand() & 0xfff, auStack_48); + MulMatrix0(iVar8, auStack_48, iVar5 + 0x34); + ((void (*)(void *, s32))func_80017E68)(&s50, iVar5 + 0x34); + + /* pool-alloc: gcc routes the loaded pointer through a caller-saved reg ($v0) + before the callee-saved home ($s1) — pin it to reproduce the extra move. */ + { + register char *tmp __asm__("$2"); + tmp = D_801E3B18; + puVar2 = tmp; + } + puVar4 = puVar2 + 0x20; + D_801E3B18 = puVar4; + *(char **)(param_1 + 0xcc) = puVar2; + if (D_801EB8E8 < puVar4) { + D_801E3B18 = D_801EB8E8 - 0x120; + } + func_800D20C0(&s60, &sStack_58, 7); + func_800D23D0(&sStack_58); + ((void(*)(void *, void *))RotMatrixYXZ)(&sStack_58, puVar2); + ((void (*)(void *, s32))func_80017E68)(&s60, (s32)puVar2); + + uVar3 = *(u16 *)((char *)&s50 + 2); + if (((s32 (*)(void *))func_80134510)(&s50) != 0 && + (s32)(s16)uVar3 - (s32)*(s16 *)((char *)&s50 + 2) < 0x80) { + *(s16 *)((char *)&s50 + 2) = *(s16 *)((char *)&s50 + 2) - 4; + { + register char *tmp __asm__("$3"); + tmp = D_801E3B18; + puVar2 = tmp; + } + puVar4 = puVar2 + 0x20; + D_801E3B18 = puVar4; + *(char **)(param_1 + 0xd0) = puVar2; + if (D_801EB8E8 < puVar4) { + D_801E3B18 = D_801EB8E8 - 0x120; + } + func_800D23D0(&(*(s32 *)&D_801152A8)); + ((void(*)(void *, void *))RotMatrixYXZ)(&(*(s32 *)&D_801152A8), puVar2); + ((void (*)(void *, s32))func_80017E68)(&s50, (s32)puVar2); + } + *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; +} + + +extern s32 func_80017758(void *a0, void *a1); +extern void func_8012C218(void *a0); + + +// @class: regalloc-order +// @stuck: none — MATCH (168 ins). Keys: (1) pin param->$s1 via `register int self __asm__("$17")=param_1` +// (natural alloc put the short loop-counter in $s1); (2) block2's guarded dest via a test-temp +// `td=load; if(td){dest=td; ...}` forces the range-split `lw $a1; addu $s3,$a1,$0` the target has; +// (3) counter is `short i` do-while (keeps the `addu $s2,$v0,$0` raw-copy + sll16/sra16 compare); +// (4) gcc-2.7.2 loads s8/s16 via lbu/lhu+shift-extend (not lb/lh) so `signed char *p; *(s16*)buf=*p++` +// emits lbu;sll24;sra24;sh; (5) else-branch zero-byte asm barrier forces `addu $a0,$s1,$0` (else gcc +// reuses the still-live incoming $a0 with a nop delay slot). + +s32 func_8018F6FC(s32 param_1) { + + extern signed char D_801E3AD0[]; + register int self __asm__("$17") = ((int)param_1); + int iVar6; + int iVar1; + unsigned char buf[0x34]; + signed char *p; + short i; + int dest; + int td; + unsigned short t; + + iVar1 = *(int *)(self + 0x1c); + iVar6 = *(int *)(self + 0x20); + *(int *)(self + 0x1c) = iVar1 + 1; + if (iVar1 < 2) { + p = D_801E3AD0; + i = 0; + dest = *(int *)(self + 0xcc); + t = *(unsigned short *)(self + 0x70); + *(short *)(buf + 0x0c) = 0; + *(short *)(buf + 0x0a) = 0; + *(short *)(buf + 0x08) = 0; + *(short *)(buf + 0x1c) = 0; + *(short *)(buf + 0x14) = 0; + *(short *)(buf + 0x04) = 0; + buf[0x22] = 0; + buf[0x21] = 0; + buf[0x20] = 0; + buf[0x2a] = 0; + buf[0x29] = 0; + buf[0x28] = 0; + buf[0x2e] = 0; + buf[0x2d] = 0; + buf[0x2c] = 0; + *(int *)(buf + 0x30) = 0x50000000; + buf[0x25] = t; + buf[0x26] = t; + buf[0x24] = t; + do { + *(short *)(buf + 0x00) = *p++; + *(short *)(buf + 0x02) = *p++; + *(short *)(buf + 0x10) = *p++; + *(short *)(buf + 0x12) = *p++; + *(short *)(buf + 0x18) = *p++; + *(short *)(buf + 0x1a) = *p--; + func_80017758(buf, (void *)dest); + i++; + } while (i < 4); + + td = *(int *)(self + 0xd0); + if (td != 0) { + dest = td; + p = D_801E3AD0; + i = 0; + t = *(unsigned short *)(self + 0x70); + *(short *)(buf + 0x0c) = 0; + *(short *)(buf + 0x0a) = 0; + *(short *)(buf + 0x08) = 0; + *(short *)(buf + 0x1c) = 0; + *(short *)(buf + 0x14) = 0; + *(short *)(buf + 0x04) = 0; + buf[0x22] = 0; + buf[0x21] = 0; + buf[0x20] = 0; + buf[0x2a] = 0; + buf[0x29] = 0; + buf[0x28] = 0; + buf[0x2e] = 0; + buf[0x2d] = 0; + buf[0x2c] = 0; + *(int *)(buf + 0x30) = 0x50000000; + buf[0x25] = t; + buf[0x26] = t; + buf[0x24] = t; + do { + *(short *)(buf + 0x00) = *p++; + *(short *)(buf + 0x02) = *p++; + *(short *)(buf + 0x10) = *p++; + *(short *)(buf + 0x12) = *p++; + *(short *)(buf + 0x18) = *p++; + *(short *)(buf + 0x1a) = *p--; + func_80017758(buf, (void *)dest); + i++; + } while (i < 4); + } + *(short *)(self + 0x70) = *(short *)(self + 0x70) >> 1; + *(unsigned short *)(iVar6 + 0x2c) |= 1; + } else { + __asm__ __volatile__("" : "=r"(self) : "0"(self)); + func_8012C218((void *)self); + } +} + + + +extern void (*D_801E3B1C[])(void); + +void func_8018F99C(void *a0) { + D_801E3B1C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018F9D8); + + +extern void (*D_801E4210[])(void); + +void func_8018FB50(void *a0) { + D_801E4210[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_801E4224[])(void); + +void func_8018FB8C(void *a0) { + D_801E4224[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void func_8012B14C(s32 a0, s32 a1); +extern void func_8012CBF4(s32 a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80132EF4(s32 a0, s32 a1); +extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8012BEE8(s32 a0); +extern void func_8012C218(void *a0); + +extern s32 D_801E41FC; +extern s32 D_801E4208; +extern u8 D_800D3918[]; +extern s32 D_80126D50; + +void func_8018FBC8(s32 param_1) { + s32 s0 = param_1; + s32 v; + + func_8012B14C(s0, (s32)&D_801E41FC); + if (((s32 (*)(s32))func_8012CBF4)(s0) != 0) { + func_80146A6C(6, (void *)s0, *(s16 *)(s0 + 0x6), *(s16 *)(s0 + 0xA), + *(s16 *)(s0 + 0xE), 0, 0); + v = func_80132EF4(s0, 0x22); + if (v != 0) { + *(s16 *)(v + 0x34) = 0x2000; + } + } else { + if (func_8012D5E4(s0, (s32)&D_801E4208, (s32)&D_800D3918, 0x19) == 0 && + (*(s16 *)(s0 + 0x70) == 2 || D_80126D50 == 0) && + func_8012BEE8(s0) == 0) { + return; + } + } + func_8012C218((void *)s0); +} + + + +// @class: schedule +// @stuck: none — MATCH (71 ins). Tail schedule: read out.c into an explicit temp BEFORE the 0x5a/1 const stores so gcc hoists its lhu early (load-delay filled by li 0x5a) and stores out.c last from a held reg; without the temp gcc instead deferred out.b's store. in/out are two separate SV3{s16 a,b,c} stack slots (sp+0x10, sp+0x18) for ((void (*)(int, void *, void *))func_8012F214)(a0,&in,&out). 0x34 compare reads u16 (lhu, not lh). + +extern void func_8012B2CC(s32 a0); +extern void func_8012B23C(s32 a0); +extern void func_8012B14C(s32 a0, s32 a1); +extern void func_8012F214(s32 a0, s32 a1, s32 a2); +extern void func_8012AD80(s32 a0); +extern s32 func_8012BEE8(s32 a0); +extern void func_8012C218(void *a0); + +extern int D_801E4218; + +void func_8018FCA8(int param_1) +{ + SV3 in; + SV3 out; + short c; + + if (*(unsigned short *)(param_1 + 0x34) == 0) { + *(short *)(*(int *)(param_1 + 0x20) + 0x12) = + *(short *)(*(int *)(*(int *)(param_1 + 0x64) + 0x20) + 0x12); + ((void (*)(void))func_8012B2CC)(); + func_8012B23C(param_1); + ((void (*)(int, void *))func_8012B14C)(param_1, &D_801E4218); + in.a = 0; + in.b = 0; + in.c = 0x10; + ((void (*)(int, void *, void *))func_8012F214)(param_1, &in, &out); + *(short *)(param_1 + 6) = out.a; + *(short *)(param_1 + 0xa) = out.b; + c = out.c; + *(int *)(param_1 + 0x1c) = 0x5a; + *(short *)(param_1 + 0x34) = 1; + *(short *)(param_1 + 0xe) = c; + } + *(short *)(*(int *)(param_1 + 0x20) + 0x10) = + *(short *)(*(int *)(param_1 + 0x20) + 0x10) - 0x80; + *(short *)(*(int *)(param_1 + 0x20) + 0x12) = + *(short *)(*(int *)(param_1 + 0x20) + 0x12) + 4; + *(short *)(*(int *)(param_1 + 0x20) + 0x14) = + *(short *)(*(int *)(param_1 + 0x20) + 0x14) + 5; + func_8012AD80(param_1); + if (func_8012BEE8(param_1) != 0) { + ((void (*)(int))func_8012C218)(param_1); + } +} + + + +// @class: other +// @stuck: none — MATCH (expected); 16-bit sh stores via short* casts, s0=param_1 call-crossing + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32 a0, s32 a1); + +extern int D_801E44CC; + +void func_8018FDC4(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 { + ((int (*)(int, void *))func_8001C214)(v0, &D_801E44CC); + *(short *)(param_1 + 0x2) = 1; + *(short *)(param_1 + 0x34) = 0; + } +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018FE20); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018FE94); + + +extern void (*D_801E4858[])(void); + +void func_801900B4(void *a0) { + D_801E4858[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801900F0); + + +extern void (*D_801E8654[])(void); + +void func_80190184(void *a0) { + D_801E8654[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801901C0); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80190298); + +void func_801902C0(void) { +} + +extern void func_80178CBC(s32 a0, s32 a1); + extern short D_801E8604; + void func_801902C8(void * arg0) { + *(short *)((char *)arg0 + 0x2) = 4; + func_80178CBC((int)arg0, (int)&D_801E8604); + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801902F4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80190334); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801903F4); + +void func_80190460(void *a0) { + *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 1; + } + + +void func_80190470(void *a0) { + *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 2; + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80190480); + +extern void func_800296F8(void); + s32 func_80190498(s32 arg0) { + ((void (*)(s32))func_800296F8)(*(s32 *)(arg0 + 0xdc)); + } + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801904BC); + + +extern void (*D_801E86CC[])(void); + +void func_80190610(void *a0) { + D_801E86CC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8019064C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80190748); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801909D8); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80190B6C); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80190BC4); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80190C40); + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80190C84); + + + + diff --git a/src/ov_SC02_015/ov_SC02_015_jr_8017A4AC.c b/src/ov_SC02_015/ov_SC02_015_jr_8017A4AC.c index 3fbb797c0..636969e44 100644 --- a/src/ov_SC02_015/ov_SC02_015_jr_8017A4AC.c +++ b/src/ov_SC02_015/ov_SC02_015_jr_8017A4AC.c @@ -2965,775 +2965,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_80190304; - extern s16 D_80190306; - extern s16 D_80190308; - extern s16 D_801902FC; - extern s16 D_801902FE; - extern s16 D_80190300; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80190304, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80190306, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80190308, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801902FC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801902FE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80190300, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8019028C; -extern u16 D_8019030C; -extern u16 D_8019030E; -extern u16 D_80190310; -extern s16 D_80190628; - -void func_8017B1D8(void) { - func_8012A418(); - D_80190628 = 0; - D_8019028C = 0; - D_8019030C = D_80126B5E; - D_8019030E = D_80126B62; - D_80190310 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80181B84[]; - extern s16 D_80190304; - extern s16 D_801902FC; - 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_80181B84[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80181B84[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80190304; - s16 *p78C = &D_801902FC; - *(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_80190628 = 1; - D_8019028C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801902AC; - extern SV4_8017B368 D_801902B4; - extern s16 D_80190304; - extern s16 D_801902FC; - extern u16 D_80181B84; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801902AC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801902B4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80181B84)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80181B84)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_80190304) = loc0; - (*(SV4_8017B368 *)&D_801902FC) = loc1; - D_80190628 = 1; - D_8019028C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80181B84[]; - extern s16 D_80190304; - extern s16 D_80190306; - extern s16 D_80190308; - extern s16 D_801902FC; - extern s16 D_801902FE; - extern s16 D_80190300; - 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_80181B84[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80181B84[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80190304; - s16 *p78C = &D_801902FC; - *(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_80190306; - v798 = D_80190308; - v78C = *p78C; - v78E = D_801902FE; - v790 = D_80190300; - __asm__ __volatile__(""); - D_80190628 = 1; - D_8019028C = 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_8019028C; -extern s16 D_80190304; -extern s16 D_80190306; -extern s16 D_80190308; -extern s16 D_801902FC; -extern s16 D_801902FE; -extern s16 D_80190300; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8019028C = 0; - D_80190304 = (s16) D_80114F30; - D_80190306 = (s16) D_80114F34; - D_80190308 = (s16) D_80114F38; - D_801902FC = (s16) D_80114F24; - D_801902FE = (s16) D_80114F28; - D_80190300 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8019031C; -extern s16 D_8019031E; -extern s16 D_80190320; -extern s16 D_80190324; -extern s16 D_80190326; -extern s16 D_80190328; - -void func_8017B824(void) { - D_8019031C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8019031E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_80190320 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_80190324 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_80190326 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_80190328 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8019031C; -extern s16 D_8019031E; -extern s16 D_80190320; -extern s16 D_80190324; -extern s16 D_80190326; -extern s16 D_80190328; - -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_8019031C; - D_80114F34 = D_8019031E; - D_80114F38 = D_80190320; - D_80114F24 = D_80190324; - D_80114F28 = D_80190326; - D_80114F2C = D_80190328; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_80190304), src[8..15] -> (*(S8_8017B8E8 *)&D_801902FC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_80190304) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801902FC) = ((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_8019030C; -extern u16 D_8019030E; -extern u16 D_80190310; - -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_8019028C; -extern short D_80190314; -extern short D_80190316; -extern short D_80190318; -extern s16 D_80190304; -extern s16 D_80190306; -extern s16 D_80190308; -extern s16 D_801902FC; -extern s16 D_801902FE; -extern s16 D_80190300; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019030C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019030E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80190310); - (*(s16 *)&D_80190314) = buf[0]; - (*(s16 *)&D_80190316) = buf[1]; - (*(s16 *)&D_80190318) = buf[2]; - D_80190304 = D_80114F30 + buf[0]; - D_8019028C = 0; - D_80190306 = D_80114F34 + buf[1]; - D_80190308 = D_80114F38 + buf[2]; - D_801902FC = D_80114F24 + buf[0]; - D_801902FE = D_80114F28 + buf[1]; - D_80190300 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801902AC; -extern SV4 D_801902B4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801902B4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801902AC = 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_801902B4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801902B4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801902AC) = 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_801902B4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801902D4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801902D4; - 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_8019028C; -extern s16 D_80190628; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8019028C = D_8019028C + 1; - if (D_8019028C >= 0x1F) { - D_80190628 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8019028C; -extern s16 D_80190628; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8019028C = D_8019028C + 1; - if (0x18 < D_8019028C) { - func_8012A4BC(); - D_80190628 = 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_8019028C; -extern void (*D_801902D0)(void); -extern short D_80190314; -extern short D_80190316; -extern short D_80190318; -extern s16 D_80190628; - -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_8019028C = D_8019028C + 1; - if (D_8019028C >= 0x19) { - if (D_801902D0 != 0) { - (*D_801902D0)(); - } else { - D_80114F30 = D_80114F30 + D_80190314; - D_80114F34 = D_80114F34 + D_80190316; - D_80114F38 = D_80114F38 + D_80190318; - D_80114F24 = D_80114F24 + D_80190314; - D_80114F28 = D_80114F28 + D_80190316; - D_80114F2C = D_80114F2C + D_80190318; - func_8012A4BC(); - } - D_80190628 = 0; - } -} - - - -extern void (*D_80181C24[])(void); - -void func_8017BE60(void *a0) { - D_80181C24[*(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 (*D_80181C48[])(void); - -void func_8017BEBC(void *a0) { - D_80181C48[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017BEF8); - -DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ - - -extern void (*D_80181C50[])(void); - -void func_8017C150(void *a0) { - D_80181C50[*(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_80181C3C; - -void func_8017C18C(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_80181C3C, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017C294); - - -extern void (*D_80181CA8[])(void); - -void func_8017D174(void *a0) { - D_80181CA8[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017D1B0); - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017D1F4(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_80181CB0[])(void); - -void func_8017D218(void *a0) { - D_80181CB0[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017D254); - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017D294); - -extern s32 func_800D1EBC(void); - void func_8017D328(void) { - func_800D1EBC(); - } - - - -extern void (*D_80181CBC[])(void); - -void func_8017D348(void *a0) { - D_80181CBC[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017D384); - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017D418); - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017D440); - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017D468); - - -extern void (*D_80181CE8[])(void); - -void func_8017D500(void *a0) { - D_80181CE8[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017D53C); - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017D5C8); - - -extern void (*D_80181D80[])(void); - -void func_8017D7A4(void *a0) { - D_80181D80[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017D7E0); - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017D878); - - -extern void (*D_80181D88[])(void); - -void func_8017D988(void *a0) { - D_80181D88[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_8012AD50(void *a0); - void func_8017D9C4(void) { - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017D9E4); - - -extern void (*D_80181D94[])(void); - -void func_8017DB0C(void *a0) { - D_80181D94[*(u16 *)((s32)a0 + 0x2)](); -} - - - -void func_8017DB48(void *a0) { - *(short *)((char *)a0 + 0x2) = *(unsigned short *)((char *)a0 + 0x2) + 1; - *(int *)((char *)a0 + 0x14) = 0x20000; - } - - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017DB60); - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017DC24); - - -extern void (*D_80181DB4[])(void); - -void func_8017DE44(void *a0) { - D_80181DB4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017DE80); - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017DF44); - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017DFF8); - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017E034); - - -extern void (*D_80181E64[])(void); - -void func_8017E060(void *a0) { - D_80181E64[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017E09C); - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017E0E8); - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017A4AC", func_8017E148); - -s32 func_8017E1F0(void) { - return 0x19; - } - - - diff --git a/src/ov_SC02_015/ov_SC02_015_jr_8017AE2C.c b/src/ov_SC02_015/ov_SC02_015_jr_8017AE2C.c new file mode 100644 index 000000000..bf9956d4c --- /dev/null +++ b/src/ov_SC02_015/ov_SC02_015_jr_8017AE2C.c @@ -0,0 +1,3671 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018077C; +extern u8 D_801806EC; +extern u8 D_801806C8; +extern u8 D_801806A4; +extern u8 D_80180758; +extern u8 D_80180734; +extern u8 D_80180710; +extern u8 D_80180680; +extern void func_80145934(void); +extern u8 D_8018080C; +extern u8 D_801807E8; +extern u8 D_801807C4; +extern u8 D_801807A0; +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_8017FC04[]; +extern unsigned char D_8017FC34[]; +extern unsigned char D_8017FC84[]; +extern unsigned char D_8017FCB4[]; +extern unsigned char D_8017FCE4[]; +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(void); +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_8017FD34[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8017FDFC[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8017FE84[]; +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_8017FE8C; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8018F188; +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_8018F18C; +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_8017FEBC; +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 void 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_8017FF64[])(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_8017FF88[])(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_8017FF78; +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_8017FF9C[])(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_8017FFA8[]; +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_8017FFB8[])(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_8017FFD0[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8017FFC0; +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_8017FFE4[])(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 func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8017FFF0; +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_80180014[])(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_80180028[])(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_8018003C; +extern void (*D_80180064[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80180044; +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_801800B0[])(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_801800B4[])(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(void *a0); +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_80180518[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80180528[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8018F1C0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180550[])(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_80180530; +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_80180540; +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_80180590[])(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_80180598[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180564; +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_801805A4[])(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_80180574; +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_8018F1C8; +extern s32 D_8018F1D4; +extern s32 D_8018F1D8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801805E0[])(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_801805B4[]; +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_8018F1D0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80180830[])(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_80180650[]; +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_801808D4[])(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_80180A28[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80180844; +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_80180A30[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80180854; +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_80180874; +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_80180A38[])(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(void); +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_80180A60[])(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_80180A6C[])(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_801808E0[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80180B10; +extern void func_8015D380(s32 a0); +extern unsigned char D_8017FBF4[]; +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_80180B24[]; +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_80180B60[]; +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_80180BA8; +extern u16 D_80180BAA; +extern u16 D_80180BAC; +extern s32 D_80180BB0; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80180BB8; +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_801808C4; +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_80180C3C[]; +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_80180CEC[])(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_80180D1C[]; +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_80180D80; +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_8018F1E0[]; +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_80180DA4[])(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_8018F238[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80180DEC[])(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_80180DDC; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8018EAAC[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_80180DF4[])(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_80180E48[])(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_80180E10; +extern s16 D_80180E44; +extern s16 D_80180E42; +extern s16 D_80180E40; +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_80180E54[])(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_8018F298; +extern u8 D_8018F299; +extern u8 D_8018F29A; +extern u8 D_8018F29B; +extern u8 D_8018F29C; +extern u8 D_8018F29D; +extern u8 D_8018F29E; +extern u8 D_8018F29F; +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_80180E64[])(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_8018F2D8; +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_80180EA8[])(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_80180F24[]; +extern s32 D_80180F44[]; +extern u8 D_80180FC0[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80180FE0[]; +extern u8 D_80181000[]; +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_8018109C[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80181118[])(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_8018EABC; +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_80181124[])(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_8018112C[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801811F4[])(void); +extern void func_80166618(void *a0); +extern void (*D_80181204[])(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_80181214[])(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_80181220[])(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_80181180[]; +extern u8 D_80181194[]; +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_80181238[])(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_80181240[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80181248[])(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_80181250[])(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_80181258[])(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_80181260[])(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_80181268[])(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_8018131C[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80181324[])(void); +extern void func_80169F00(void *a0); +extern char D_801812D4[]; +extern char D_80181294[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018135C[])(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_80181368[])(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_801813B0[])(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_8018142C[])(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_8018F5F8; +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_80181420[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80181464[]; +extern unsigned short D_8018146C[]; +extern unsigned short D_80181474[]; +extern unsigned char D_8018F600[]; +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_8018F5F8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018147C[])(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_8018F734; +extern M2C_UNK D_8018F738; +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_8018F6C0; +extern void (*D_801814AC[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018F73C[]; +extern u8 D_8018F744[]; +extern u8 D_8018F6F4[]; +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_801814B4[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801814D0[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801814D8[])(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_80181540[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801814E4; +extern u8 D_801814F0; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80181574[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018157C[])(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_801815D0[])(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_80181604[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801815F4[]; +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_80181620; +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); +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_80181698[])(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_801816A0[])(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_801816A8[])(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_801816B0[])(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_801816B8[])(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_801816C0[])(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_801816CC[])(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_801816D8[])(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_801816E4[])(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_801816F4[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80181704[])(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_8018170C[])(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_80181714[])(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_8018171C[])(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_80181724[])(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_8018172C[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80181734[])(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_8018173C[])(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_80181744[])(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_8018174C[])(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_80181754[])(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_8018175C[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80181764[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018176C[])(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_80181774[])(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_8018177C[])(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_80181784[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018178C[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80181794[])(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_8018179C[])(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_801817A4[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801817AC[])(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_801817B4[])(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_801817F8[])(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_801817BC; +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_80181828[])(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_80181864[])(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(s32); +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_801818BC[])(); +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_801818CC[])(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_801818D4[])(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_80181A3C[])(); +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_80181A48[])(); +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_8018ED04; +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 int func_801789AC(void); +extern s16 D_80190628; +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_8018FE78; +extern short D_8019069C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801902A4; +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_801902CC; +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_80190288; +extern s32 func_8017A3B0(void); +extern short D_801902C4; +extern short D_801902C0; +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_801905F8; +extern s16 D_801905FA; +extern s16 D_80190604; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801905F8; + + 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_80190604); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801905F8+0xC == &D_80190604; 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_801905F8 + 0xC)) < 0x101) { + D_801905F8 = 0; + D_801905FA = 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_80190604); + 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_801905F8 + 0xC)) < 0x101) { + D_801905F8 = 0; + D_801905FA = 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_80190304; + extern s16 D_80190306; + extern s16 D_80190308; + extern s16 D_801902FC; + extern s16 D_801902FE; + extern s16 D_80190300; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80190304, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80190306, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80190308, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801902FC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801902FE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80190300, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8019028C; +extern u16 D_8019030C; +extern u16 D_8019030E; +extern u16 D_80190310; +extern s16 D_80190628; + +void func_8017B1D8(void) { + func_8012A418(); + D_80190628 = 0; + D_8019028C = 0; + D_8019030C = D_80126B5E; + D_8019030E = D_80126B62; + D_80190310 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80181B84[]; + extern s16 D_80190304; + extern s16 D_801902FC; + 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_80181B84[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80181B84[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80190304; + s16 *p78C = &D_801902FC; + *(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_80190628 = 1; + D_8019028C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801902AC; + extern SV4_8017B368 D_801902B4; + extern s16 D_80190304; + extern s16 D_801902FC; + extern u16 D_80181B84; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801902AC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801902B4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80181B84)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80181B84)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_80190304) = loc0; + (*(SV4_8017B368 *)&D_801902FC) = loc1; + D_80190628 = 1; + D_8019028C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80181B84[]; + extern s16 D_80190304; + extern s16 D_80190306; + extern s16 D_80190308; + extern s16 D_801902FC; + extern s16 D_801902FE; + extern s16 D_80190300; + 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_80181B84[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80181B84[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80190304; + s16 *p78C = &D_801902FC; + *(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_80190306; + v798 = D_80190308; + v78C = *p78C; + v78E = D_801902FE; + v790 = D_80190300; + __asm__ __volatile__(""); + D_80190628 = 1; + D_8019028C = 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_8019028C; +extern s16 D_80190304; +extern s16 D_80190306; +extern s16 D_80190308; +extern s16 D_801902FC; +extern s16 D_801902FE; +extern s16 D_80190300; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8019028C = 0; + D_80190304 = (s16) D_80114F30; + D_80190306 = (s16) D_80114F34; + D_80190308 = (s16) D_80114F38; + D_801902FC = (s16) D_80114F24; + D_801902FE = (s16) D_80114F28; + D_80190300 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8019031C; +extern s16 D_8019031E; +extern s16 D_80190320; +extern s16 D_80190324; +extern s16 D_80190326; +extern s16 D_80190328; + +void func_8017B824(void) { + D_8019031C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8019031E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_80190320 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_80190324 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_80190326 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_80190328 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8019031C; +extern s16 D_8019031E; +extern s16 D_80190320; +extern s16 D_80190324; +extern s16 D_80190326; +extern s16 D_80190328; + +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_8019031C; + D_80114F34 = D_8019031E; + D_80114F38 = D_80190320; + D_80114F24 = D_80190324; + D_80114F28 = D_80190326; + D_80114F2C = D_80190328; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_80190304), src[8..15] -> (*(S8_8017B8E8 *)&D_801902FC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_80190304) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801902FC) = ((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_8019030C; +extern u16 D_8019030E; +extern u16 D_80190310; + +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_8019028C; +extern short D_80190314; +extern short D_80190316; +extern short D_80190318; +extern s16 D_80190304; +extern s16 D_80190306; +extern s16 D_80190308; +extern s16 D_801902FC; +extern s16 D_801902FE; +extern s16 D_80190300; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019030C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019030E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80190310); + (*(s16 *)&D_80190314) = buf[0]; + (*(s16 *)&D_80190316) = buf[1]; + (*(s16 *)&D_80190318) = buf[2]; + D_80190304 = D_80114F30 + buf[0]; + D_8019028C = 0; + D_80190306 = D_80114F34 + buf[1]; + D_80190308 = D_80114F38 + buf[2]; + D_801902FC = D_80114F24 + buf[0]; + D_801902FE = D_80114F28 + buf[1]; + D_80190300 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801902AC; +extern SV4 D_801902B4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801902B4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801902AC = 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_801902B4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801902B4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801902AC) = 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_801902B4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801902D4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801902D4; + 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_8019028C; +extern s16 D_80190628; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8019028C = D_8019028C + 1; + if (D_8019028C >= 0x1F) { + D_80190628 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8019028C; +extern s16 D_80190628; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8019028C = D_8019028C + 1; + if (0x18 < D_8019028C) { + func_8012A4BC(); + D_80190628 = 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_8019028C; +extern void (*D_801902D0)(void); +extern short D_80190314; +extern short D_80190316; +extern short D_80190318; +extern s16 D_80190628; + +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_8019028C = D_8019028C + 1; + if (D_8019028C >= 0x19) { + if (D_801902D0 != 0) { + (*D_801902D0)(); + } else { + D_80114F30 = D_80114F30 + D_80190314; + D_80114F34 = D_80114F34 + D_80190316; + D_80114F38 = D_80114F38 + D_80190318; + D_80114F24 = D_80114F24 + D_80190314; + D_80114F28 = D_80114F28 + D_80190316; + D_80114F2C = D_80114F2C + D_80190318; + func_8012A4BC(); + } + D_80190628 = 0; + } +} + + + +extern void (*D_80181C24[])(void); + +void func_8017BE60(void *a0) { + D_80181C24[*(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 (*D_80181C48[])(void); + +void func_8017BEBC(void *a0) { + D_80181C48[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017BEF8); + +DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ + + +extern void (*D_80181C50[])(void); + +void func_8017C150(void *a0) { + D_80181C50[*(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_80181C3C; + +void func_8017C18C(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_80181C3C, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017C294); + + +extern void (*D_80181CA8[])(void); + +void func_8017D174(void *a0) { + D_80181CA8[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017D1B0); + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017D1F4(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_80181CB0[])(void); + +void func_8017D218(void *a0) { + D_80181CB0[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017D254); + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017D294); + +extern s32 func_800D1EBC(void); + void func_8017D328(void) { + func_800D1EBC(); + } + + + +extern void (*D_80181CBC[])(void); + +void func_8017D348(void *a0) { + D_80181CBC[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017D384); + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017D418); + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017D440); + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017D468); + + +extern void (*D_80181CE8[])(void); + +void func_8017D500(void *a0) { + D_80181CE8[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017D53C); + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017D5C8); + + +extern void (*D_80181D80[])(void); + +void func_8017D7A4(void *a0) { + D_80181D80[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017D7E0); + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017D878); + + +extern void (*D_80181D88[])(void); + +void func_8017D988(void *a0) { + D_80181D88[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern s32 func_8012AD50(void *a0); + void func_8017D9C4(void) { + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017D9E4); + + +extern void (*D_80181D94[])(void); + +void func_8017DB0C(void *a0) { + D_80181D94[*(u16 *)((s32)a0 + 0x2)](); +} + + + +void func_8017DB48(void *a0) { + *(short *)((char *)a0 + 0x2) = *(unsigned short *)((char *)a0 + 0x2) + 1; + *(int *)((char *)a0 + 0x14) = 0x20000; + } + + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017DB60); + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017DC24); + + +extern void (*D_80181DB4[])(void); + +void func_8017DE44(void *a0) { + D_80181DB4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017DE80); + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017DF44); + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017DFF8); + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017E034); + + +extern void (*D_80181E64[])(void); + +void func_8017E060(void *a0) { + D_80181E64[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017E09C); + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017E0E8); + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8017AE2C", func_8017E148); + +s32 func_8017E1F0(void) { + return 0x19; + } + + + + diff --git a/src/ov_SC02_016/ov_SC02_016_jr_8017A4AC.c b/src/ov_SC02_016/ov_SC02_016_jr_8017A4AC.c index 1958eaa88..c83e243c5 100644 --- a/src/ov_SC02_016/ov_SC02_016_jr_8017A4AC.c +++ b/src/ov_SC02_016/ov_SC02_016_jr_8017A4AC.c @@ -2967,717 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801B3F1C; - extern s16 D_801B3F1E; - extern s16 D_801B3F20; - extern s16 D_801B3F14; - extern s16 D_801B3F16; - extern s16 D_801B3F18; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B3F1C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B3F1E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B3F20, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B3F14, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B3F16, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B3F18, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801B3EA4; -extern u16 D_801B3F24; -extern u16 D_801B3F26; -extern u16 D_801B3F28; -extern s16 D_801B4A60; - -void func_8017B1D8(void) { - func_8012A418(); - D_801B4A60 = 0; - D_801B3EA4 = 0; - D_801B3F24 = D_80126B5E; - D_801B3F26 = D_80126B62; - D_801B3F28 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80187DBC[]; - extern s16 D_801B3F1C; - extern s16 D_801B3F14; - 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_80187DBC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80187DBC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B3F1C; - s16 *p78C = &D_801B3F14; - *(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_801B4A60 = 1; - D_801B3EA4 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B3EC4; - extern SV4_8017B368 D_801B3ECC; - extern s16 D_801B3F1C; - extern s16 D_801B3F14; - extern u16 D_80187DBC; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801B3EC4; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801B3ECC; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80187DBC)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80187DBC)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801B3F1C) = loc0; - (*(SV4_8017B368 *)&D_801B3F14) = loc1; - D_801B4A60 = 1; - D_801B3EA4 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80187DBC[]; - extern s16 D_801B3F1C; - extern s16 D_801B3F1E; - extern s16 D_801B3F20; - extern s16 D_801B3F14; - extern s16 D_801B3F16; - extern s16 D_801B3F18; - 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_80187DBC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80187DBC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B3F1C; - s16 *p78C = &D_801B3F14; - *(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_801B3F1E; - v798 = D_801B3F20; - v78C = *p78C; - v78E = D_801B3F16; - v790 = D_801B3F18; - __asm__ __volatile__(""); - D_801B4A60 = 1; - D_801B3EA4 = 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_801B3EA4; -extern s16 D_801B3F1C; -extern s16 D_801B3F1E; -extern s16 D_801B3F20; -extern s16 D_801B3F14; -extern s16 D_801B3F16; -extern s16 D_801B3F18; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801B3EA4 = 0; - D_801B3F1C = (s16) D_80114F30; - D_801B3F1E = (s16) D_80114F34; - D_801B3F20 = (s16) D_80114F38; - D_801B3F14 = (s16) D_80114F24; - D_801B3F16 = (s16) D_80114F28; - D_801B3F18 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801B3F34; -extern s16 D_801B3F36; -extern s16 D_801B3F38; -extern s16 D_801B3F3C; -extern s16 D_801B3F3E; -extern s16 D_801B3F40; - -void func_8017B824(void) { - D_801B3F34 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801B3F36 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801B3F38 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801B3F3C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801B3F3E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801B3F40 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801B3F34; -extern s16 D_801B3F36; -extern s16 D_801B3F38; -extern s16 D_801B3F3C; -extern s16 D_801B3F3E; -extern s16 D_801B3F40; - -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_801B3F34; - D_80114F34 = D_801B3F36; - D_80114F38 = D_801B3F38; - D_80114F24 = D_801B3F3C; - D_80114F28 = D_801B3F3E; - D_80114F2C = D_801B3F40; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801B3F1C), src[8..15] -> (*(S8_8017B8E8 *)&D_801B3F14) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801B3F1C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801B3F14) = ((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_801B3F24; -extern u16 D_801B3F26; -extern u16 D_801B3F28; - -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_801B3EA4; -extern short D_801B3F2C; -extern short D_801B3F2E; -extern short D_801B3F30; -extern s16 D_801B3F1C; -extern s16 D_801B3F1E; -extern s16 D_801B3F20; -extern s16 D_801B3F14; -extern s16 D_801B3F16; -extern s16 D_801B3F18; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B3F24); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B3F26); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B3F28); - (*(s16 *)&D_801B3F2C) = buf[0]; - (*(s16 *)&D_801B3F2E) = buf[1]; - (*(s16 *)&D_801B3F30) = buf[2]; - D_801B3F1C = D_80114F30 + buf[0]; - D_801B3EA4 = 0; - D_801B3F1E = D_80114F34 + buf[1]; - D_801B3F20 = D_80114F38 + buf[2]; - D_801B3F14 = D_80114F24 + buf[0]; - D_801B3F16 = D_80114F28 + buf[1]; - D_801B3F18 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801B3EC4; -extern SV4 D_801B3ECC; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B3ECC) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801B3EC4 = 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_801B3ECC = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B3ECC)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801B3EC4) = 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_801B3ECC) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801B3EEC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801B3EEC; - 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_801B3EA4; -extern s16 D_801B4A60; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801B3EA4 = D_801B3EA4 + 1; - if (D_801B3EA4 >= 0x1F) { - D_801B4A60 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801B3EA4; -extern s16 D_801B4A60; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801B3EA4 = D_801B3EA4 + 1; - if (0x18 < D_801B3EA4) { - func_8012A4BC(); - D_801B4A60 = 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_801B3EA4; -extern void (*D_801B3EE8)(void); -extern short D_801B3F2C; -extern short D_801B3F2E; -extern short D_801B3F30; -extern s16 D_801B4A60; - -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_801B3EA4 = D_801B3EA4 + 1; - if (D_801B3EA4 >= 0x19) { - if (D_801B3EE8 != 0) { - (*D_801B3EE8)(); - } else { - D_80114F30 = D_80114F30 + D_801B3F2C; - D_80114F34 = D_80114F34 + D_801B3F2E; - D_80114F38 = D_80114F38 + D_801B3F30; - D_80114F24 = D_80114F24 + D_801B3F2C; - D_80114F28 = D_80114F28 + D_801B3F2E; - D_80114F2C = D_80114F2C + D_801B3F30; - func_8012A4BC(); - } - D_801B4A60 = 0; - } -} - - - -extern void (*D_80187E5C[])(void); - -void func_8017BE60(void *a0) { - D_80187E5C[*(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 (*D_80187E80[])(void); - -void func_8017BEBC(void *a0) { - D_80187E80[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017BEF8); - -DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ - - -extern void (*D_80187E88[])(void); - -void func_8017C150(void *a0) { - D_80187E88[*(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_80187E74; - -void func_8017C18C(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_80187E74, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017C294); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017C3C4); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017C750); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017C9C8); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017CB10); - - -extern void (*D_80187FA0[])(void); - -void func_8017CC90(void *a0) { - D_80187FA0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017CCCC); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017CD18); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017CE0C); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017CE8C); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017CF40); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017CFAC); - -extern void func_8012C218(void *a0); - void func_8017D038(void) { - ((void (*)(void))func_8012C218)(); - } - - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017D058); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017D0AC); - - -extern void (*D_80187FF8[])(void); - -void func_8017D0E8(void *a0) { - D_80187FF8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017D124); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017D174); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017D1D0); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017D254); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017D3BC); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017D408); - - -extern void (*D_8018800C[])(void); - -void func_8017D714(void *a0) { - D_8018800C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017D750); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017D790); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017D800); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017D88C); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017D960); - - -extern void (*D_80188020[])(void); - -void func_8017D9B4(void *a0) { - D_80188020[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017D9F0); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017DAA4); - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017A4AC", func_8017DB00); diff --git a/src/ov_SC02_016/ov_SC02_016_jr_8017AE2C.c b/src/ov_SC02_016/ov_SC02_016_jr_8017AE2C.c new file mode 100644 index 000000000..fb69a5960 --- /dev/null +++ b/src/ov_SC02_016/ov_SC02_016_jr_8017AE2C.c @@ -0,0 +1,3615 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801869B4; +extern u8 D_80186924; +extern u8 D_80186900; +extern u8 D_801868DC; +extern u8 D_80186990; +extern u8 D_8018696C; +extern u8 D_80186948; +extern u8 D_801868B8; +extern void func_80145934(void); +extern u8 D_80186A44; +extern u8 D_80186A20; +extern u8 D_801869FC; +extern u8 D_801869D8; +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_80185E3C[]; +extern unsigned char D_80185E6C[]; +extern unsigned char D_80185EBC[]; +extern unsigned char D_80185EEC[]; +extern unsigned char D_80185F1C[]; +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(void); +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_80185F6C[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80186034[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801860BC[]; +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_801860C4; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801B2DA0; +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_801B2DA4; +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_801860F4; +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 void 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_8018619C[])(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_801861C0[])(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_801861B0; +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_801861D4[])(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_801861E0[]; +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_801861F0[])(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_80186208[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801861F8; +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_8018621C[])(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_80186238[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80186228; +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_8018624C[])(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_80186260[])(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_80186274; +extern void (*D_8018629C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018627C; +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_801862E8[])(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_801862EC[])(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(void *a0); +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_80186750[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80186760[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801B2DD8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80186788[])(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_80186768; +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_80186778; +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_801867C8[])(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_801867D0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018679C; +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_801867DC[])(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_801867AC; +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_801B2DE0; +extern s32 D_801B2DEC; +extern s32 D_801B2DF0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80186818[])(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_801867EC[]; +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_801B2DE8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80186A68[])(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_80186888[]; +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_80186B0C[])(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_80186C60[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80186A7C; +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_80186C68[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80186A8C; +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_80186AAC; +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_80186C70[])(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(void); +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_80186C98[])(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_80186CA4[])(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_80186B18[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80186D48; +extern void func_8015D380(s32 a0); +extern unsigned char D_80185E2C[]; +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_80186D5C[]; +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_80186D98[]; +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_80186DE0; +extern u16 D_80186DE2; +extern u16 D_80186DE4; +extern s32 D_80186DE8; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80186DF0; +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_80186AFC; +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_80186E74[]; +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_80186F24[])(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_80186F54[]; +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_80186FB8; +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_801B2DF8[]; +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_80186FDC[])(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_801B2E50[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80187024[])(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_80187014; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801B268C[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_8018702C[])(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_80187080[])(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_80187048; +extern s16 D_8018707C; +extern s16 D_8018707A; +extern s16 D_80187078; +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_8018708C[])(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_801B2EB0; +extern u8 D_801B2EB1; +extern u8 D_801B2EB2; +extern u8 D_801B2EB3; +extern u8 D_801B2EB4; +extern u8 D_801B2EB5; +extern u8 D_801B2EB6; +extern u8 D_801B2EB7; +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_8018709C[])(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_801B2EF0; +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_801870E0[])(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_8018715C[]; +extern s32 D_8018717C[]; +extern u8 D_801871F8[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80187218[]; +extern u8 D_80187238[]; +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_801872D4[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80187350[])(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_801B269C; +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_8018735C[])(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_80187364[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018742C[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018743C[])(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_8018744C[])(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_80187458[])(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_801873B8[]; +extern u8 D_801873CC[]; +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_80187470[])(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_80187478[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80187480[])(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_80187488[])(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_80187490[])(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_80187498[])(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_801874A0[])(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_80187554[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018755C[])(void); +extern void func_80169F00(void *a0); +extern char D_8018750C[]; +extern char D_801874CC[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80187594[])(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_801875A0[])(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_801875E8[])(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_80187664[])(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_801B3210; +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_80187658[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018769C[]; +extern unsigned short D_801876A4[]; +extern unsigned short D_801876AC[]; +extern unsigned char D_801B3218[]; +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_801B3210; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801876B4[])(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_801B334C; +extern M2C_UNK D_801B3350; +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_801B32D8; +extern void (*D_801876E4[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801B3354[]; +extern u8 D_801B335C[]; +extern u8 D_801B330C[]; +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_801876EC[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80187708[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80187710[])(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_80187778[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018771C; +extern u8 D_80187728; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801877AC[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801877B4[])(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_80187808[])(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_8018783C[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018782C[]; +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_80187858; +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); +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_801878D0[])(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_801878D8[])(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_801878E0[])(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_801878E8[])(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_801878F0[])(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_801878F8[])(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_80187904[])(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_80187910[])(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_8018791C[])(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_8018792C[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018793C[])(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_80187944[])(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_8018794C[])(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_80187954[])(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_8018795C[])(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_80187964[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018796C[])(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_80187974[])(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_8018797C[])(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_80187984[])(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_8018798C[])(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_80187994[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018799C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801879A4[])(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_801879AC[])(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_801879B4[])(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_801879BC[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801879C4[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801879CC[])(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_801879D4[])(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_801879DC[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801879E4[])(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_801879EC[])(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_80187A30[])(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_801879F4; +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_80187A60[])(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_80187A9C[])(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(s32); +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_80187AF4[])(); +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_80187B04[])(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_80187B0C[])(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_80187C74[])(); +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_80187C80[])(); +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_801B28E4; +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 int func_801789AC(void); +extern s16 D_801B4A60; +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_801B3A90; +extern short D_801B4AD4; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801B3EBC; +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_801B3EE4; +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_801B3EA0; +extern s32 func_8017A3B0(void); +extern short D_801B3EDC; +extern short D_801B3ED8; +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_801B4A30; +extern s16 D_801B4A32; +extern s16 D_801B4A3C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801B4A30; + + 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_801B4A3C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801B4A30+0xC == &D_801B4A3C; 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_801B4A30 + 0xC)) < 0x101) { + D_801B4A30 = 0; + D_801B4A32 = 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_801B4A3C); + 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_801B4A30 + 0xC)) < 0x101) { + D_801B4A30 = 0; + D_801B4A32 = 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_801B3F1C; + extern s16 D_801B3F1E; + extern s16 D_801B3F20; + extern s16 D_801B3F14; + extern s16 D_801B3F16; + extern s16 D_801B3F18; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B3F1C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B3F1E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B3F20, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B3F14, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B3F16, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B3F18, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801B3EA4; +extern u16 D_801B3F24; +extern u16 D_801B3F26; +extern u16 D_801B3F28; +extern s16 D_801B4A60; + +void func_8017B1D8(void) { + func_8012A418(); + D_801B4A60 = 0; + D_801B3EA4 = 0; + D_801B3F24 = D_80126B5E; + D_801B3F26 = D_80126B62; + D_801B3F28 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80187DBC[]; + extern s16 D_801B3F1C; + extern s16 D_801B3F14; + 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_80187DBC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80187DBC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B3F1C; + s16 *p78C = &D_801B3F14; + *(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_801B4A60 = 1; + D_801B3EA4 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B3EC4; + extern SV4_8017B368 D_801B3ECC; + extern s16 D_801B3F1C; + extern s16 D_801B3F14; + extern u16 D_80187DBC; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801B3EC4; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801B3ECC; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80187DBC)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80187DBC)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801B3F1C) = loc0; + (*(SV4_8017B368 *)&D_801B3F14) = loc1; + D_801B4A60 = 1; + D_801B3EA4 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80187DBC[]; + extern s16 D_801B3F1C; + extern s16 D_801B3F1E; + extern s16 D_801B3F20; + extern s16 D_801B3F14; + extern s16 D_801B3F16; + extern s16 D_801B3F18; + 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_80187DBC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80187DBC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B3F1C; + s16 *p78C = &D_801B3F14; + *(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_801B3F1E; + v798 = D_801B3F20; + v78C = *p78C; + v78E = D_801B3F16; + v790 = D_801B3F18; + __asm__ __volatile__(""); + D_801B4A60 = 1; + D_801B3EA4 = 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_801B3EA4; +extern s16 D_801B3F1C; +extern s16 D_801B3F1E; +extern s16 D_801B3F20; +extern s16 D_801B3F14; +extern s16 D_801B3F16; +extern s16 D_801B3F18; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801B3EA4 = 0; + D_801B3F1C = (s16) D_80114F30; + D_801B3F1E = (s16) D_80114F34; + D_801B3F20 = (s16) D_80114F38; + D_801B3F14 = (s16) D_80114F24; + D_801B3F16 = (s16) D_80114F28; + D_801B3F18 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801B3F34; +extern s16 D_801B3F36; +extern s16 D_801B3F38; +extern s16 D_801B3F3C; +extern s16 D_801B3F3E; +extern s16 D_801B3F40; + +void func_8017B824(void) { + D_801B3F34 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801B3F36 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801B3F38 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801B3F3C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801B3F3E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801B3F40 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801B3F34; +extern s16 D_801B3F36; +extern s16 D_801B3F38; +extern s16 D_801B3F3C; +extern s16 D_801B3F3E; +extern s16 D_801B3F40; + +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_801B3F34; + D_80114F34 = D_801B3F36; + D_80114F38 = D_801B3F38; + D_80114F24 = D_801B3F3C; + D_80114F28 = D_801B3F3E; + D_80114F2C = D_801B3F40; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801B3F1C), src[8..15] -> (*(S8_8017B8E8 *)&D_801B3F14) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801B3F1C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801B3F14) = ((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_801B3F24; +extern u16 D_801B3F26; +extern u16 D_801B3F28; + +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_801B3EA4; +extern short D_801B3F2C; +extern short D_801B3F2E; +extern short D_801B3F30; +extern s16 D_801B3F1C; +extern s16 D_801B3F1E; +extern s16 D_801B3F20; +extern s16 D_801B3F14; +extern s16 D_801B3F16; +extern s16 D_801B3F18; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B3F24); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B3F26); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B3F28); + (*(s16 *)&D_801B3F2C) = buf[0]; + (*(s16 *)&D_801B3F2E) = buf[1]; + (*(s16 *)&D_801B3F30) = buf[2]; + D_801B3F1C = D_80114F30 + buf[0]; + D_801B3EA4 = 0; + D_801B3F1E = D_80114F34 + buf[1]; + D_801B3F20 = D_80114F38 + buf[2]; + D_801B3F14 = D_80114F24 + buf[0]; + D_801B3F16 = D_80114F28 + buf[1]; + D_801B3F18 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801B3EC4; +extern SV4 D_801B3ECC; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B3ECC) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801B3EC4 = 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_801B3ECC = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B3ECC)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801B3EC4) = 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_801B3ECC) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801B3EEC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801B3EEC; + 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_801B3EA4; +extern s16 D_801B4A60; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801B3EA4 = D_801B3EA4 + 1; + if (D_801B3EA4 >= 0x1F) { + D_801B4A60 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801B3EA4; +extern s16 D_801B4A60; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801B3EA4 = D_801B3EA4 + 1; + if (0x18 < D_801B3EA4) { + func_8012A4BC(); + D_801B4A60 = 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_801B3EA4; +extern void (*D_801B3EE8)(void); +extern short D_801B3F2C; +extern short D_801B3F2E; +extern short D_801B3F30; +extern s16 D_801B4A60; + +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_801B3EA4 = D_801B3EA4 + 1; + if (D_801B3EA4 >= 0x19) { + if (D_801B3EE8 != 0) { + (*D_801B3EE8)(); + } else { + D_80114F30 = D_80114F30 + D_801B3F2C; + D_80114F34 = D_80114F34 + D_801B3F2E; + D_80114F38 = D_80114F38 + D_801B3F30; + D_80114F24 = D_80114F24 + D_801B3F2C; + D_80114F28 = D_80114F28 + D_801B3F2E; + D_80114F2C = D_80114F2C + D_801B3F30; + func_8012A4BC(); + } + D_801B4A60 = 0; + } +} + + + +extern void (*D_80187E5C[])(void); + +void func_8017BE60(void *a0) { + D_80187E5C[*(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 (*D_80187E80[])(void); + +void func_8017BEBC(void *a0) { + D_80187E80[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017BEF8); + +DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ + + +extern void (*D_80187E88[])(void); + +void func_8017C150(void *a0) { + D_80187E88[*(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_80187E74; + +void func_8017C18C(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_80187E74, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017C294); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017C3C4); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017C750); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017C9C8); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017CB10); + + +extern void (*D_80187FA0[])(void); + +void func_8017CC90(void *a0) { + D_80187FA0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017CCCC); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017CD18); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017CE0C); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017CE8C); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017CF40); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017CFAC); + +extern void func_8012C218(void *a0); + void func_8017D038(void) { + ((void (*)(void))func_8012C218)(); + } + + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017D058); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017D0AC); + + +extern void (*D_80187FF8[])(void); + +void func_8017D0E8(void *a0) { + D_80187FF8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017D124); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017D174); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017D1D0); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017D254); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017D3BC); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017D408); + + +extern void (*D_8018800C[])(void); + +void func_8017D714(void *a0) { + D_8018800C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017D750); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017D790); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017D800); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017D88C); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017D960); + + +extern void (*D_80188020[])(void); + +void func_8017D9B4(void *a0) { + D_80188020[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017D9F0); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017DAA4); + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017AE2C", func_8017DB00); + diff --git a/src/ov_SC02_017/ov_SC02_017_jr_8017A4AC.c b/src/ov_SC02_017/ov_SC02_017_jr_8017A4AC.c index 3965a7ed9..7ef9d13ea 100644 --- a/src/ov_SC02_017/ov_SC02_017_jr_8017A4AC.c +++ b/src/ov_SC02_017/ov_SC02_017_jr_8017A4AC.c @@ -2960,731 +2960,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801EF744; - extern s16 D_801EF746; - extern s16 D_801EF748; - extern s16 D_801EF73C; - extern s16 D_801EF73E; - extern s16 D_801EF740; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801EF744, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801EF746, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801EF748, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801EF73C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801EF73E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801EF740, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801EF6CC; -extern u16 D_801EF74C; -extern u16 D_801EF74E; -extern u16 D_801EF750; -extern s16 D_801EFCC0; - -void func_8017B1D8(void) { - func_8012A418(); - D_801EFCC0 = 0; - D_801EF6CC = 0; - D_801EF74C = D_80126B5E; - D_801EF74E = D_80126B62; - D_801EF750 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018DE14[]; - extern s16 D_801EF744; - extern s16 D_801EF73C; - 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_8018DE14[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018DE14[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801EF744; - s16 *p78C = &D_801EF73C; - *(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_801EFCC0 = 1; - D_801EF6CC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801EF6EC; - extern SV4_8017B368 D_801EF6F4; - extern s16 D_801EF744; - extern s16 D_801EF73C; - extern u16 D_8018DE14; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801EF6EC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801EF6F4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018DE14)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018DE14)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801EF744) = loc0; - (*(SV4_8017B368 *)&D_801EF73C) = loc1; - D_801EFCC0 = 1; - D_801EF6CC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018DE14[]; - extern s16 D_801EF744; - extern s16 D_801EF746; - extern s16 D_801EF748; - extern s16 D_801EF73C; - extern s16 D_801EF73E; - extern s16 D_801EF740; - 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_8018DE14[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018DE14[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801EF744; - s16 *p78C = &D_801EF73C; - *(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_801EF746; - v798 = D_801EF748; - v78C = *p78C; - v78E = D_801EF73E; - v790 = D_801EF740; - __asm__ __volatile__(""); - D_801EFCC0 = 1; - D_801EF6CC = 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_801EF6CC; -extern s16 D_801EF744; -extern s16 D_801EF746; -extern s16 D_801EF748; -extern s16 D_801EF73C; -extern s16 D_801EF73E; -extern s16 D_801EF740; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801EF6CC = 0; - D_801EF744 = (s16) D_80114F30; - D_801EF746 = (s16) D_80114F34; - D_801EF748 = (s16) D_80114F38; - D_801EF73C = (s16) D_80114F24; - D_801EF73E = (s16) D_80114F28; - D_801EF740 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801EF75C; -extern s16 D_801EF75E; -extern s16 D_801EF760; -extern s16 D_801EF764; -extern s16 D_801EF766; -extern s16 D_801EF768; - -void func_8017B824(void) { - D_801EF75C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801EF75E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801EF760 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801EF764 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801EF766 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801EF768 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801EF75C; -extern s16 D_801EF75E; -extern s16 D_801EF760; -extern s16 D_801EF764; -extern s16 D_801EF766; -extern s16 D_801EF768; - -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_801EF75C; - D_80114F34 = D_801EF75E; - D_80114F38 = D_801EF760; - D_80114F24 = D_801EF764; - D_80114F28 = D_801EF766; - D_80114F2C = D_801EF768; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801EF744), src[8..15] -> (*(S8_8017B8E8 *)&D_801EF73C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801EF744) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801EF73C) = ((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_801EF74C; -extern u16 D_801EF74E; -extern u16 D_801EF750; - -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_801EF6CC; -extern short D_801EF754; -extern short D_801EF756; -extern short D_801EF758; -extern s16 D_801EF744; -extern s16 D_801EF746; -extern s16 D_801EF748; -extern s16 D_801EF73C; -extern s16 D_801EF73E; -extern s16 D_801EF740; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801EF74C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801EF74E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801EF750); - (*(s16 *)&D_801EF754) = buf[0]; - (*(s16 *)&D_801EF756) = buf[1]; - (*(s16 *)&D_801EF758) = buf[2]; - D_801EF744 = D_80114F30 + buf[0]; - D_801EF6CC = 0; - D_801EF746 = D_80114F34 + buf[1]; - D_801EF748 = D_80114F38 + buf[2]; - D_801EF73C = D_80114F24 + buf[0]; - D_801EF73E = D_80114F28 + buf[1]; - D_801EF740 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801EF6EC; -extern SV4 D_801EF6F4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801EF6F4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801EF6EC = 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_801EF6F4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801EF6F4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801EF6EC) = 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_801EF6F4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801EF714[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801EF714; - 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_801EF6CC; -extern s16 D_801EFCC0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801EF6CC = D_801EF6CC + 1; - if (D_801EF6CC >= 0x1F) { - D_801EFCC0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801EF6CC; -extern s16 D_801EFCC0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801EF6CC = D_801EF6CC + 1; - if (0x18 < D_801EF6CC) { - func_8012A4BC(); - D_801EFCC0 = 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_801EF6CC; -extern void (*D_801EF710)(void); -extern short D_801EF754; -extern short D_801EF756; -extern short D_801EF758; -extern s16 D_801EFCC0; - -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_801EF6CC = D_801EF6CC + 1; - if (D_801EF6CC >= 0x19) { - if (D_801EF710 != 0) { - (*D_801EF710)(); - } else { - D_80114F30 = D_80114F30 + D_801EF754; - D_80114F34 = D_80114F34 + D_801EF756; - D_80114F38 = D_80114F38 + D_801EF758; - D_80114F24 = D_80114F24 + D_801EF754; - D_80114F28 = D_80114F28 + D_801EF756; - D_80114F2C = D_80114F2C + D_801EF758; - func_8012A4BC(); - } - D_801EFCC0 = 0; - } -} - - - -extern void (*D_8018DEB4[])(void); - -void func_8017BE60(void *a0) { - D_8018DEB4[*(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 (*D_8018DED8[])(void); - -void func_8017BEBC(void *a0) { - D_8018DED8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017BEF8); - -DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ - - -extern void (*D_8018DEE0[])(void); - -void func_8017C150(void *a0) { - D_8018DEE0[*(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_8018DECC; - -void func_8017C18C(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_8018DECC, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017C294); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017C3C4); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017C750); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017C9C8); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017CB10); - - -extern void (*D_8018DFF8[])(void); - -void func_8017CC90(void *a0) { - D_8018DFF8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017CCCC); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017CD18); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017CE0C); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017CE8C); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017CF40); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017CFAC); - -extern void func_8012C218(void *a0); - void func_8017D038(void) { - ((void (*)(void))func_8012C218)(); - } - - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017D058); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017D0AC); - - -extern void (*D_8018E050[])(void); - -void func_8017D0E8(void *a0) { - D_8018E050[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017D124); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017D174); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017D1D0); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017D254); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017D3BC); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017D408); - - -extern void (*D_8018E064[])(void); - -void func_8017D714(void *a0) { - D_8018E064[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017D750); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017D790); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017D800); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017D88C); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017D960); - - -extern void (*D_8018E078[])(void); - -void func_8017D9B4(void *a0) { - D_8018E078[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017D9F0); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017DAA4); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017DB00); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017DC70); - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017DD3C); - - -extern void (*D_8018E08C[])(void); - -void func_8017DE98(void *a0) { - D_8018E08C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017A4AC", func_8017DED4); diff --git a/src/ov_SC02_017/ov_SC02_017_jr_8017AE2C.c b/src/ov_SC02_017/ov_SC02_017_jr_8017AE2C.c new file mode 100644 index 000000000..16801f686 --- /dev/null +++ b/src/ov_SC02_017/ov_SC02_017_jr_8017AE2C.c @@ -0,0 +1,3623 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018CA0C; +extern u8 D_8018C97C; +extern u8 D_8018C958; +extern u8 D_8018C934; +extern u8 D_8018C9E8; +extern u8 D_8018C9C4; +extern u8 D_8018C9A0; +extern u8 D_8018C910; +extern void func_80145934(void); +extern u8 D_8018CA9C; +extern u8 D_8018CA78; +extern u8 D_8018CA54; +extern u8 D_8018CA30; +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_8018BE94[]; +extern unsigned char D_8018BEC4[]; +extern unsigned char D_8018BF14[]; +extern unsigned char D_8018BF44[]; +extern unsigned char D_8018BF74[]; +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(void); +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_8018BFC4[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018C08C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018C114[]; +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_8018C11C; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801EE5C8; +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_801EE5CC; +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_8018C14C; +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 void 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_8018C1F4[])(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_8018C218[])(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_8018C208; +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_8018C22C[])(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_8018C238[]; +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_8018C248[])(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_8018C260[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018C250; +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_8018C274[])(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_8018C290[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018C280; +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_8018C2A4[])(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_8018C2B8[])(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_8018C2CC; +extern void (*D_8018C2F4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018C2D4; +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_8018C340[])(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_8018C344[])(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(void *a0); +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_8018C7A8[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018C7B8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801EE600; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018C7E0[])(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_8018C7C0; +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_8018C7D0; +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_8018C820[])(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_8018C828[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018C7F4; +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_8018C834[])(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_8018C804; +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_801EE608; +extern s32 D_801EE614; +extern s32 D_801EE618; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018C870[])(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_8018C844[]; +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_801EE610; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018CAC0[])(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_8018C8E0[]; +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_8018CB64[])(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_8018CCB8[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018CAD4; +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_8018CCC0[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018CAE4; +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_8018CB04; +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_8018CCC8[])(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(void); +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_8018CCF0[])(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_8018CCFC[])(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_8018CB70[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018CDA0; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018BE84[]; +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_8018CDB4[]; +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_8018CDF0[]; +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_8018CE38; +extern u16 D_8018CE3A; +extern u16 D_8018CE3C; +extern s32 D_8018CE40; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018CE48; +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_8018CB54; +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_8018CECC[]; +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_8018CF7C[])(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_8018CFAC[]; +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_8018D010; +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_801EE620[]; +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_8018D034[])(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_801EE678[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018D07C[])(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_8018D06C; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801EDEAC[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_8018D084[])(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_8018D0D8[])(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_8018D0A0; +extern s16 D_8018D0D4; +extern s16 D_8018D0D2; +extern s16 D_8018D0D0; +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_8018D0E4[])(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_801EE6D8; +extern u8 D_801EE6D9; +extern u8 D_801EE6DA; +extern u8 D_801EE6DB; +extern u8 D_801EE6DC; +extern u8 D_801EE6DD; +extern u8 D_801EE6DE; +extern u8 D_801EE6DF; +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_8018D0F4[])(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_801EE718; +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_8018D138[])(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_8018D1B4[]; +extern s32 D_8018D1D4[]; +extern u8 D_8018D250[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018D270[]; +extern u8 D_8018D290[]; +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_8018D32C[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018D3A8[])(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_801EDEBC; +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_8018D3B4[])(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_8018D3BC[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018D484[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018D494[])(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_8018D4A4[])(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_8018D4B0[])(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_8018D410[]; +extern u8 D_8018D424[]; +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_8018D4C8[])(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_8018D4D0[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018D4D8[])(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_8018D4E0[])(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_8018D4E8[])(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_8018D4F0[])(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_8018D4F8[])(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_8018D5AC[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018D5B4[])(void); +extern void func_80169F00(void *a0); +extern char D_8018D564[]; +extern char D_8018D524[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018D5EC[])(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_8018D5F8[])(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_8018D640[])(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_8018D6BC[])(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_801EEA38; +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_8018D6B0[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018D6F4[]; +extern unsigned short D_8018D6FC[]; +extern unsigned short D_8018D704[]; +extern unsigned char D_801EEA40[]; +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_801EEA38; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018D70C[])(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_801EEB74; +extern M2C_UNK D_801EEB78; +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_801EEB00; +extern void (*D_8018D73C[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801EEB7C[]; +extern u8 D_801EEB84[]; +extern u8 D_801EEB34[]; +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_8018D744[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018D760[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018D768[])(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_8018D7D0[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018D774; +extern u8 D_8018D780; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018D804[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018D80C[])(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_8018D860[])(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_8018D894[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018D884[]; +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_8018D8B0; +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); +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_8018D928[])(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_8018D930[])(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_8018D938[])(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_8018D940[])(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_8018D948[])(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_8018D950[])(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_8018D95C[])(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_8018D968[])(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_8018D974[])(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_8018D984[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018D994[])(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_8018D99C[])(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_8018D9A4[])(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_8018D9AC[])(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_8018D9B4[])(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_8018D9BC[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018D9C4[])(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_8018D9CC[])(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_8018D9D4[])(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_8018D9DC[])(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_8018D9E4[])(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_8018D9EC[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018D9F4[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018D9FC[])(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_8018DA04[])(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_8018DA0C[])(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_8018DA14[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018DA1C[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018DA24[])(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_8018DA2C[])(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_8018DA34[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018DA3C[])(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_8018DA44[])(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_8018DA88[])(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_8018DA4C; +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_8018DAB8[])(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_8018DAF4[])(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(s32); +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_8018DB4C[])(); +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_8018DB5C[])(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_8018DB64[])(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_8018DCCC[])(); +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_8018DCD8[])(); +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_801EE104; +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 int func_801789AC(void); +extern s16 D_801EFCC0; +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_801EF2B8; +extern short D_801EFD34; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801EF6E4; +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_801EF70C; +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_801EF6C8; +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_801EFC90; +extern s16 D_801EFC92; +extern s16 D_801EFC9C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801EFC90; + + 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_801EFC9C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801EFC90+0xC == &D_801EFC9C; 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_801EFC90 + 0xC)) < 0x101) { + D_801EFC90 = 0; + D_801EFC92 = 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_801EFC9C); + 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_801EFC90 + 0xC)) < 0x101) { + D_801EFC90 = 0; + D_801EFC92 = 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_801EF744; + extern s16 D_801EF746; + extern s16 D_801EF748; + extern s16 D_801EF73C; + extern s16 D_801EF73E; + extern s16 D_801EF740; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801EF744, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801EF746, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801EF748, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801EF73C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801EF73E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801EF740, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801EF6CC; +extern u16 D_801EF74C; +extern u16 D_801EF74E; +extern u16 D_801EF750; +extern s16 D_801EFCC0; + +void func_8017B1D8(void) { + func_8012A418(); + D_801EFCC0 = 0; + D_801EF6CC = 0; + D_801EF74C = D_80126B5E; + D_801EF74E = D_80126B62; + D_801EF750 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018DE14[]; + extern s16 D_801EF744; + extern s16 D_801EF73C; + 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_8018DE14[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018DE14[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801EF744; + s16 *p78C = &D_801EF73C; + *(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_801EFCC0 = 1; + D_801EF6CC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801EF6EC; + extern SV4_8017B368 D_801EF6F4; + extern s16 D_801EF744; + extern s16 D_801EF73C; + extern u16 D_8018DE14; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801EF6EC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801EF6F4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018DE14)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018DE14)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801EF744) = loc0; + (*(SV4_8017B368 *)&D_801EF73C) = loc1; + D_801EFCC0 = 1; + D_801EF6CC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018DE14[]; + extern s16 D_801EF744; + extern s16 D_801EF746; + extern s16 D_801EF748; + extern s16 D_801EF73C; + extern s16 D_801EF73E; + extern s16 D_801EF740; + 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_8018DE14[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018DE14[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801EF744; + s16 *p78C = &D_801EF73C; + *(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_801EF746; + v798 = D_801EF748; + v78C = *p78C; + v78E = D_801EF73E; + v790 = D_801EF740; + __asm__ __volatile__(""); + D_801EFCC0 = 1; + D_801EF6CC = 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_801EF6CC; +extern s16 D_801EF744; +extern s16 D_801EF746; +extern s16 D_801EF748; +extern s16 D_801EF73C; +extern s16 D_801EF73E; +extern s16 D_801EF740; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801EF6CC = 0; + D_801EF744 = (s16) D_80114F30; + D_801EF746 = (s16) D_80114F34; + D_801EF748 = (s16) D_80114F38; + D_801EF73C = (s16) D_80114F24; + D_801EF73E = (s16) D_80114F28; + D_801EF740 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801EF75C; +extern s16 D_801EF75E; +extern s16 D_801EF760; +extern s16 D_801EF764; +extern s16 D_801EF766; +extern s16 D_801EF768; + +void func_8017B824(void) { + D_801EF75C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801EF75E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801EF760 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801EF764 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801EF766 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801EF768 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801EF75C; +extern s16 D_801EF75E; +extern s16 D_801EF760; +extern s16 D_801EF764; +extern s16 D_801EF766; +extern s16 D_801EF768; + +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_801EF75C; + D_80114F34 = D_801EF75E; + D_80114F38 = D_801EF760; + D_80114F24 = D_801EF764; + D_80114F28 = D_801EF766; + D_80114F2C = D_801EF768; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801EF744), src[8..15] -> (*(S8_8017B8E8 *)&D_801EF73C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801EF744) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801EF73C) = ((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_801EF74C; +extern u16 D_801EF74E; +extern u16 D_801EF750; + +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_801EF6CC; +extern short D_801EF754; +extern short D_801EF756; +extern short D_801EF758; +extern s16 D_801EF744; +extern s16 D_801EF746; +extern s16 D_801EF748; +extern s16 D_801EF73C; +extern s16 D_801EF73E; +extern s16 D_801EF740; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801EF74C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801EF74E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801EF750); + (*(s16 *)&D_801EF754) = buf[0]; + (*(s16 *)&D_801EF756) = buf[1]; + (*(s16 *)&D_801EF758) = buf[2]; + D_801EF744 = D_80114F30 + buf[0]; + D_801EF6CC = 0; + D_801EF746 = D_80114F34 + buf[1]; + D_801EF748 = D_80114F38 + buf[2]; + D_801EF73C = D_80114F24 + buf[0]; + D_801EF73E = D_80114F28 + buf[1]; + D_801EF740 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801EF6EC; +extern SV4 D_801EF6F4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801EF6F4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801EF6EC = 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_801EF6F4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801EF6F4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801EF6EC) = 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_801EF6F4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801EF714[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801EF714; + 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_801EF6CC; +extern s16 D_801EFCC0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801EF6CC = D_801EF6CC + 1; + if (D_801EF6CC >= 0x1F) { + D_801EFCC0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801EF6CC; +extern s16 D_801EFCC0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801EF6CC = D_801EF6CC + 1; + if (0x18 < D_801EF6CC) { + func_8012A4BC(); + D_801EFCC0 = 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_801EF6CC; +extern void (*D_801EF710)(void); +extern short D_801EF754; +extern short D_801EF756; +extern short D_801EF758; +extern s16 D_801EFCC0; + +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_801EF6CC = D_801EF6CC + 1; + if (D_801EF6CC >= 0x19) { + if (D_801EF710 != 0) { + (*D_801EF710)(); + } else { + D_80114F30 = D_80114F30 + D_801EF754; + D_80114F34 = D_80114F34 + D_801EF756; + D_80114F38 = D_80114F38 + D_801EF758; + D_80114F24 = D_80114F24 + D_801EF754; + D_80114F28 = D_80114F28 + D_801EF756; + D_80114F2C = D_80114F2C + D_801EF758; + func_8012A4BC(); + } + D_801EFCC0 = 0; + } +} + + + +extern void (*D_8018DEB4[])(void); + +void func_8017BE60(void *a0) { + D_8018DEB4[*(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 (*D_8018DED8[])(void); + +void func_8017BEBC(void *a0) { + D_8018DED8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017BEF8); + +DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ + + +extern void (*D_8018DEE0[])(void); + +void func_8017C150(void *a0) { + D_8018DEE0[*(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_8018DECC; + +void func_8017C18C(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_8018DECC, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017C294); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017C3C4); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017C750); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017C9C8); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017CB10); + + +extern void (*D_8018DFF8[])(void); + +void func_8017CC90(void *a0) { + D_8018DFF8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017CCCC); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017CD18); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017CE0C); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017CE8C); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017CF40); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017CFAC); + +extern void func_8012C218(void *a0); + void func_8017D038(void) { + ((void (*)(void))func_8012C218)(); + } + + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017D058); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017D0AC); + + +extern void (*D_8018E050[])(void); + +void func_8017D0E8(void *a0) { + D_8018E050[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017D124); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017D174); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017D1D0); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017D254); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017D3BC); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017D408); + + +extern void (*D_8018E064[])(void); + +void func_8017D714(void *a0) { + D_8018E064[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017D750); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017D790); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017D800); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017D88C); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017D960); + + +extern void (*D_8018E078[])(void); + +void func_8017D9B4(void *a0) { + D_8018E078[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017D9F0); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017DAA4); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017DB00); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017DC70); + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017DD3C); + + +extern void (*D_8018E08C[])(void); + +void func_8017DE98(void *a0) { + D_8018E08C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017AE2C", func_8017DED4); + diff --git a/src/ov_SC02_021/ov_SC02_021_jr_8017A4AC.c b/src/ov_SC02_021/ov_SC02_021_jr_8017A4AC.c index fbb130b87..6bbe6878a 100644 --- a/src/ov_SC02_021/ov_SC02_021_jr_8017A4AC.c +++ b/src/ov_SC02_021/ov_SC02_021_jr_8017A4AC.c @@ -2967,625 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_80192CB4; - extern s16 D_80192CB6; - extern s16 D_80192CB8; - extern s16 D_80192CAC; - extern s16 D_80192CAE; - extern s16 D_80192CB0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80192CB4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80192CB6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80192CB8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_80192CAC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_80192CAE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80192CB0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80192C3C; -extern u16 D_80192CBC; -extern u16 D_80192CBE; -extern u16 D_80192CC0; -extern s16 D_80193828; - -void func_8017B1D8(void) { - func_8012A418(); - D_80193828 = 0; - D_80192C3C = 0; - D_80192CBC = D_80126B5E; - D_80192CBE = D_80126B62; - D_80192CC0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80183408[]; - extern s16 D_80192CB4; - extern s16 D_80192CAC; - 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_80183408[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80183408[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80192CB4; - s16 *p78C = &D_80192CAC; - *(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_80193828 = 1; - D_80192C3C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_80192C5C; - extern SV4_8017B368 D_80192C64; - extern s16 D_80192CB4; - extern s16 D_80192CAC; - extern u16 D_80183408; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_80192C5C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_80192C64; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80183408)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80183408)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_80192CB4) = loc0; - (*(SV4_8017B368 *)&D_80192CAC) = loc1; - D_80193828 = 1; - D_80192C3C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80183408[]; - extern s16 D_80192CB4; - extern s16 D_80192CB6; - extern s16 D_80192CB8; - extern s16 D_80192CAC; - extern s16 D_80192CAE; - extern s16 D_80192CB0; - 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_80183408[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80183408[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80192CB4; - s16 *p78C = &D_80192CAC; - *(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_80192CB6; - v798 = D_80192CB8; - v78C = *p78C; - v78E = D_80192CAE; - v790 = D_80192CB0; - __asm__ __volatile__(""); - D_80193828 = 1; - D_80192C3C = 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_80192C3C; -extern s16 D_80192CB4; -extern s16 D_80192CB6; -extern s16 D_80192CB8; -extern s16 D_80192CAC; -extern s16 D_80192CAE; -extern s16 D_80192CB0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_80192C3C = 0; - D_80192CB4 = (s16) D_80114F30; - D_80192CB6 = (s16) D_80114F34; - D_80192CB8 = (s16) D_80114F38; - D_80192CAC = (s16) D_80114F24; - D_80192CAE = (s16) D_80114F28; - D_80192CB0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_80192CCC; -extern s16 D_80192CCE; -extern s16 D_80192CD0; -extern s16 D_80192CD4; -extern s16 D_80192CD6; -extern s16 D_80192CD8; - -void func_8017B824(void) { - D_80192CCC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_80192CCE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_80192CD0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_80192CD4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_80192CD6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_80192CD8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_80192CCC; -extern s16 D_80192CCE; -extern s16 D_80192CD0; -extern s16 D_80192CD4; -extern s16 D_80192CD6; -extern s16 D_80192CD8; - -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_80192CCC; - D_80114F34 = D_80192CCE; - D_80114F38 = D_80192CD0; - D_80114F24 = D_80192CD4; - D_80114F28 = D_80192CD6; - D_80114F2C = D_80192CD8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_80192CB4), src[8..15] -> (*(S8_8017B8E8 *)&D_80192CAC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_80192CB4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_80192CAC) = ((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_80192CBC; -extern u16 D_80192CBE; -extern u16 D_80192CC0; - -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_80192C3C; -extern short D_80192CC4; -extern short D_80192CC6; -extern short D_80192CC8; -extern s16 D_80192CB4; -extern s16 D_80192CB6; -extern s16 D_80192CB8; -extern s16 D_80192CAC; -extern s16 D_80192CAE; -extern s16 D_80192CB0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_80192CBC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_80192CBE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80192CC0); - (*(s16 *)&D_80192CC4) = buf[0]; - (*(s16 *)&D_80192CC6) = buf[1]; - (*(s16 *)&D_80192CC8) = buf[2]; - D_80192CB4 = D_80114F30 + buf[0]; - D_80192C3C = 0; - D_80192CB6 = D_80114F34 + buf[1]; - D_80192CB8 = D_80114F38 + buf[2]; - D_80192CAC = D_80114F24 + buf[0]; - D_80192CAE = D_80114F28 + buf[1]; - D_80192CB0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_80192C5C; -extern SV4 D_80192C64; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_80192C64) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_80192C5C = 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_80192C64 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80192C64)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_80192C5C) = 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_80192C64) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_80192C84[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_80192C84; - 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_80192C3C; -extern s16 D_80193828; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_80192C3C = D_80192C3C + 1; - if (D_80192C3C >= 0x1F) { - D_80193828 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_80192C3C; -extern s16 D_80193828; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_80192C3C = D_80192C3C + 1; - if (0x18 < D_80192C3C) { - func_8012A4BC(); - D_80193828 = 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_80192C3C; -extern void (*D_80192C80)(void); -extern short D_80192CC4; -extern short D_80192CC6; -extern short D_80192CC8; -extern s16 D_80193828; - -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_80192C3C = D_80192C3C + 1; - if (D_80192C3C >= 0x19) { - if (D_80192C80 != 0) { - (*D_80192C80)(); - } else { - D_80114F30 = D_80114F30 + D_80192CC4; - D_80114F34 = D_80114F34 + D_80192CC6; - D_80114F38 = D_80114F38 + D_80192CC8; - D_80114F24 = D_80114F24 + D_80192CC4; - D_80114F28 = D_80114F28 + D_80192CC6; - D_80114F2C = D_80114F2C + D_80192CC8; - func_8012A4BC(); - } - D_80193828 = 0; - } -} - - - -extern void (*D_801834A8[])(void); - -void func_8017BE60(void *a0) { - D_801834A8[*(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 (*D_801834CC[])(void); - -void func_8017BEBC(void *a0) { - D_801834CC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_8017A4AC", func_8017BEF8); - -DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ - - -extern void (*D_801834D4[])(void); - -void func_8017C150(void *a0) { - D_801834D4[*(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_801834C0; - -void func_8017C18C(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_801834C0, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ diff --git a/src/ov_SC02_021/ov_SC02_021_jr_8017AE2C.c b/src/ov_SC02_021/ov_SC02_021_jr_8017AE2C.c new file mode 100644 index 000000000..831fdc74b --- /dev/null +++ b/src/ov_SC02_021/ov_SC02_021_jr_8017AE2C.c @@ -0,0 +1,3523 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80182000; +extern u8 D_80181F70; +extern u8 D_80181F4C; +extern u8 D_80181F28; +extern u8 D_80181FDC; +extern u8 D_80181FB8; +extern u8 D_80181F94; +extern u8 D_80181F04; +extern void func_80145934(void); +extern u8 D_80182090; +extern u8 D_8018206C; +extern u8 D_80182048; +extern u8 D_80182024; +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_80181488[]; +extern unsigned char D_801814B8[]; +extern unsigned char D_80181508[]; +extern unsigned char D_80181538[]; +extern unsigned char D_80181568[]; +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(void); +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_801815B8[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80181680[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80181708[]; +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_80181710; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_80191B38; +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_80191B3C; +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_80181740; +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 void 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_801817E8[])(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_8018180C[])(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_801817FC; +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_80181820[])(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_8018182C[]; +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_8018183C[])(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_80181854[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80181844; +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_80181868[])(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_80181884[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181874; +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_80181898[])(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_801818AC[])(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_801818C0; +extern void (*D_801818E8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801818C8; +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_80181934[])(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_80181938[])(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(void *a0); +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_80181D9C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80181DAC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_80191B70; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80181DD4[])(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_80181DB4; +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_80181DC4; +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_80181E14[])(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_80181E1C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80181DE8; +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_80181E28[])(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_80181DF8; +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_80191B78; +extern s32 D_80191B84; +extern s32 D_80191B88; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80181E64[])(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_80181E38[]; +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_80191B80; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801820B4[])(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_80181ED4[]; +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_80182158[])(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_801822AC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801820C8; +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_801822B4[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801820D8; +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_801820F8; +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_801822BC[])(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(void); +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_801822E4[])(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_801822F0[])(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_80182164[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80182394; +extern void func_8015D380(s32 a0); +extern unsigned char D_80181478[]; +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_801823A8[]; +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_801823E4[]; +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_8018242C; +extern u16 D_8018242E; +extern u16 D_80182430; +extern s32 D_80182434; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018243C; +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_80182148; +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_801824C0[]; +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_80182570[])(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_801825A0[]; +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_80182604; +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_80191B90[]; +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_80182628[])(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_80191BE8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80182670[])(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_80182660; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_80191428[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_80182678[])(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_801826CC[])(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_80182694; +extern s16 D_801826C8; +extern s16 D_801826C6; +extern s16 D_801826C4; +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_801826D8[])(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_80191C48; +extern u8 D_80191C49; +extern u8 D_80191C4A; +extern u8 D_80191C4B; +extern u8 D_80191C4C; +extern u8 D_80191C4D; +extern u8 D_80191C4E; +extern u8 D_80191C4F; +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_801826E8[])(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_80191C88; +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_8018272C[])(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_801827A8[]; +extern s32 D_801827C8[]; +extern u8 D_80182844[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80182864[]; +extern u8 D_80182884[]; +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_80182920[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018299C[])(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_80191438; +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_801829A8[])(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_801829B0[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80182A78[])(void); +extern void func_80166618(void *a0); +extern void (*D_80182A88[])(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_80182A98[])(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_80182AA4[])(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_80182A04[]; +extern u8 D_80182A18[]; +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_80182ABC[])(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_80182AC4[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80182ACC[])(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_80182AD4[])(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_80182ADC[])(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_80182AE4[])(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_80182AEC[])(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_80182BA0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80182BA8[])(void); +extern void func_80169F00(void *a0); +extern char D_80182B58[]; +extern char D_80182B18[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80182BE0[])(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_80182BEC[])(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_80182C34[])(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_80182CB0[])(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_80191FA8; +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_80182CA4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80182CE8[]; +extern unsigned short D_80182CF0[]; +extern unsigned short D_80182CF8[]; +extern unsigned char D_80191FB0[]; +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_80191FA8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80182D00[])(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_801920E4; +extern M2C_UNK D_801920E8; +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_80192070; +extern void (*D_80182D30[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801920EC[]; +extern u8 D_801920F4[]; +extern u8 D_801920A4[]; +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_80182D38[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80182D54[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80182D5C[])(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_80182DC4[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80182D68; +extern u8 D_80182D74; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80182DF8[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80182E00[])(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_80182E54[])(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_80182E88[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80182E78[]; +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_80182EA4; +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); +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_80182F1C[])(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_80182F24[])(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_80182F2C[])(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_80182F34[])(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_80182F3C[])(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_80182F44[])(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_80182F50[])(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_80182F5C[])(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_80182F68[])(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_80182F78[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80182F88[])(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_80182F90[])(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_80182F98[])(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_80182FA0[])(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_80182FA8[])(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_80182FB0[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80182FB8[])(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_80182FC0[])(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_80182FC8[])(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_80182FD0[])(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_80182FD8[])(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_80182FE0[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80182FE8[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80182FF0[])(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_80182FF8[])(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_80183000[])(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_80183008[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80183010[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80183018[])(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_80183020[])(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_80183028[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80183030[])(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_80183038[])(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_8018307C[])(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_80183040; +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_801830AC[])(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_801830E8[])(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(s32); +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_80183140[])(); +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_80183150[])(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_80183158[])(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_801832C0[])(); +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_801832CC[])(); +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_80191680; +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 int func_801789AC(void); +extern s16 D_80193828; +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_80192828; +extern short D_8019389C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_80192C54; +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_80192C7C; +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_80192C38; +extern s32 func_8017A3B0(void); +extern short D_80192C74; +extern short D_80192C70; +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_801937F8; +extern s16 D_801937FA; +extern s16 D_80193804; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801937F8; + + 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_80193804); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801937F8+0xC == &D_80193804; 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_801937F8 + 0xC)) < 0x101) { + D_801937F8 = 0; + D_801937FA = 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_80193804); + 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_801937F8 + 0xC)) < 0x101) { + D_801937F8 = 0; + D_801937FA = 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_80192CB4; + extern s16 D_80192CB6; + extern s16 D_80192CB8; + extern s16 D_80192CAC; + extern s16 D_80192CAE; + extern s16 D_80192CB0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80192CB4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80192CB6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80192CB8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_80192CAC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_80192CAE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80192CB0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_80192C3C; +extern u16 D_80192CBC; +extern u16 D_80192CBE; +extern u16 D_80192CC0; +extern s16 D_80193828; + +void func_8017B1D8(void) { + func_8012A418(); + D_80193828 = 0; + D_80192C3C = 0; + D_80192CBC = D_80126B5E; + D_80192CBE = D_80126B62; + D_80192CC0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80183408[]; + extern s16 D_80192CB4; + extern s16 D_80192CAC; + 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_80183408[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80183408[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80192CB4; + s16 *p78C = &D_80192CAC; + *(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_80193828 = 1; + D_80192C3C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_80192C5C; + extern SV4_8017B368 D_80192C64; + extern s16 D_80192CB4; + extern s16 D_80192CAC; + extern u16 D_80183408; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_80192C5C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_80192C64; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80183408)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80183408)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_80192CB4) = loc0; + (*(SV4_8017B368 *)&D_80192CAC) = loc1; + D_80193828 = 1; + D_80192C3C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80183408[]; + extern s16 D_80192CB4; + extern s16 D_80192CB6; + extern s16 D_80192CB8; + extern s16 D_80192CAC; + extern s16 D_80192CAE; + extern s16 D_80192CB0; + 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_80183408[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80183408[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80192CB4; + s16 *p78C = &D_80192CAC; + *(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_80192CB6; + v798 = D_80192CB8; + v78C = *p78C; + v78E = D_80192CAE; + v790 = D_80192CB0; + __asm__ __volatile__(""); + D_80193828 = 1; + D_80192C3C = 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_80192C3C; +extern s16 D_80192CB4; +extern s16 D_80192CB6; +extern s16 D_80192CB8; +extern s16 D_80192CAC; +extern s16 D_80192CAE; +extern s16 D_80192CB0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_80192C3C = 0; + D_80192CB4 = (s16) D_80114F30; + D_80192CB6 = (s16) D_80114F34; + D_80192CB8 = (s16) D_80114F38; + D_80192CAC = (s16) D_80114F24; + D_80192CAE = (s16) D_80114F28; + D_80192CB0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_80192CCC; +extern s16 D_80192CCE; +extern s16 D_80192CD0; +extern s16 D_80192CD4; +extern s16 D_80192CD6; +extern s16 D_80192CD8; + +void func_8017B824(void) { + D_80192CCC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_80192CCE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_80192CD0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_80192CD4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_80192CD6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_80192CD8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_80192CCC; +extern s16 D_80192CCE; +extern s16 D_80192CD0; +extern s16 D_80192CD4; +extern s16 D_80192CD6; +extern s16 D_80192CD8; + +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_80192CCC; + D_80114F34 = D_80192CCE; + D_80114F38 = D_80192CD0; + D_80114F24 = D_80192CD4; + D_80114F28 = D_80192CD6; + D_80114F2C = D_80192CD8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_80192CB4), src[8..15] -> (*(S8_8017B8E8 *)&D_80192CAC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_80192CB4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_80192CAC) = ((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_80192CBC; +extern u16 D_80192CBE; +extern u16 D_80192CC0; + +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_80192C3C; +extern short D_80192CC4; +extern short D_80192CC6; +extern short D_80192CC8; +extern s16 D_80192CB4; +extern s16 D_80192CB6; +extern s16 D_80192CB8; +extern s16 D_80192CAC; +extern s16 D_80192CAE; +extern s16 D_80192CB0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_80192CBC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_80192CBE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80192CC0); + (*(s16 *)&D_80192CC4) = buf[0]; + (*(s16 *)&D_80192CC6) = buf[1]; + (*(s16 *)&D_80192CC8) = buf[2]; + D_80192CB4 = D_80114F30 + buf[0]; + D_80192C3C = 0; + D_80192CB6 = D_80114F34 + buf[1]; + D_80192CB8 = D_80114F38 + buf[2]; + D_80192CAC = D_80114F24 + buf[0]; + D_80192CAE = D_80114F28 + buf[1]; + D_80192CB0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_80192C5C; +extern SV4 D_80192C64; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_80192C64) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_80192C5C = 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_80192C64 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80192C64)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_80192C5C) = 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_80192C64) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_80192C84[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_80192C84; + 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_80192C3C; +extern s16 D_80193828; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_80192C3C = D_80192C3C + 1; + if (D_80192C3C >= 0x1F) { + D_80193828 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_80192C3C; +extern s16 D_80193828; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_80192C3C = D_80192C3C + 1; + if (0x18 < D_80192C3C) { + func_8012A4BC(); + D_80193828 = 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_80192C3C; +extern void (*D_80192C80)(void); +extern short D_80192CC4; +extern short D_80192CC6; +extern short D_80192CC8; +extern s16 D_80193828; + +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_80192C3C = D_80192C3C + 1; + if (D_80192C3C >= 0x19) { + if (D_80192C80 != 0) { + (*D_80192C80)(); + } else { + D_80114F30 = D_80114F30 + D_80192CC4; + D_80114F34 = D_80114F34 + D_80192CC6; + D_80114F38 = D_80114F38 + D_80192CC8; + D_80114F24 = D_80114F24 + D_80192CC4; + D_80114F28 = D_80114F28 + D_80192CC6; + D_80114F2C = D_80114F2C + D_80192CC8; + func_8012A4BC(); + } + D_80193828 = 0; + } +} + + + +extern void (*D_801834A8[])(void); + +void func_8017BE60(void *a0) { + D_801834A8[*(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 (*D_801834CC[])(void); + +void func_8017BEBC(void *a0) { + D_801834CC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_8017AE2C", func_8017BEF8); + +DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ + + +extern void (*D_801834D4[])(void); + +void func_8017C150(void *a0) { + D_801834D4[*(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_801834C0; + +void func_8017C18C(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_801834C0, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ + diff --git a/src/ov_SC02_026/ov_SC02_026_jr_8017A4AC.c b/src/ov_SC02_026/ov_SC02_026_jr_8017A4AC.c index 8a834ebd7..328bcc73d 100644 --- a/src/ov_SC02_026/ov_SC02_026_jr_8017A4AC.c +++ b/src/ov_SC02_026/ov_SC02_026_jr_8017A4AC.c @@ -2967,586 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801D00F4; - extern s16 D_801D00F6; - extern s16 D_801D00F8; - extern s16 D_801D00EC; - extern s16 D_801D00EE; - extern s16 D_801D00F0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D00F4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D00F6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D00F8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D00EC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D00EE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D00F0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801D007C; -extern u16 D_801D00FC; -extern u16 D_801D00FE; -extern u16 D_801D0100; -extern s16 D_801D0248; - -void func_8017B1D8(void) { - func_8012A418(); - D_801D0248 = 0; - D_801D007C = 0; - D_801D00FC = D_80126B5E; - D_801D00FE = D_80126B62; - D_801D0100 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80189A5C[]; - extern s16 D_801D00F4; - extern s16 D_801D00EC; - 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_80189A5C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80189A5C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D00F4; - s16 *p78C = &D_801D00EC; - *(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_801D0248 = 1; - D_801D007C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D009C; - extern SV4_8017B368 D_801D00A4; - extern s16 D_801D00F4; - extern s16 D_801D00EC; - extern u16 D_80189A5C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801D009C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801D00A4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80189A5C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80189A5C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801D00F4) = loc0; - (*(SV4_8017B368 *)&D_801D00EC) = loc1; - D_801D0248 = 1; - D_801D007C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80189A5C[]; - extern s16 D_801D00F4; - extern s16 D_801D00F6; - extern s16 D_801D00F8; - extern s16 D_801D00EC; - extern s16 D_801D00EE; - extern s16 D_801D00F0; - 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_80189A5C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80189A5C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D00F4; - s16 *p78C = &D_801D00EC; - *(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_801D00F6; - v798 = D_801D00F8; - v78C = *p78C; - v78E = D_801D00EE; - v790 = D_801D00F0; - __asm__ __volatile__(""); - D_801D0248 = 1; - D_801D007C = 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_801D007C; -extern s16 D_801D00F4; -extern s16 D_801D00F6; -extern s16 D_801D00F8; -extern s16 D_801D00EC; -extern s16 D_801D00EE; -extern s16 D_801D00F0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801D007C = 0; - D_801D00F4 = (s16) D_80114F30; - D_801D00F6 = (s16) D_80114F34; - D_801D00F8 = (s16) D_80114F38; - D_801D00EC = (s16) D_80114F24; - D_801D00EE = (s16) D_80114F28; - D_801D00F0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801D010C; -extern s16 D_801D010E; -extern s16 D_801D0110; -extern s16 D_801D0114; -extern s16 D_801D0116; -extern s16 D_801D0118; - -void func_8017B824(void) { - D_801D010C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801D010E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801D0110 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801D0114 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801D0116 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801D0118 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801D010C; -extern s16 D_801D010E; -extern s16 D_801D0110; -extern s16 D_801D0114; -extern s16 D_801D0116; -extern s16 D_801D0118; - -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_801D010C; - D_80114F34 = D_801D010E; - D_80114F38 = D_801D0110; - D_80114F24 = D_801D0114; - D_80114F28 = D_801D0116; - D_80114F2C = D_801D0118; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801D00F4), src[8..15] -> (*(S8_8017B8E8 *)&D_801D00EC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801D00F4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801D00EC) = ((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_801D00FC; -extern u16 D_801D00FE; -extern u16 D_801D0100; - -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_801D007C; -extern short D_801D0104; -extern short D_801D0106; -extern short D_801D0108; -extern s16 D_801D00F4; -extern s16 D_801D00F6; -extern s16 D_801D00F8; -extern s16 D_801D00EC; -extern s16 D_801D00EE; -extern s16 D_801D00F0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D00FC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D00FE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D0100); - (*(s16 *)&D_801D0104) = buf[0]; - (*(s16 *)&D_801D0106) = buf[1]; - (*(s16 *)&D_801D0108) = buf[2]; - D_801D00F4 = D_80114F30 + buf[0]; - D_801D007C = 0; - D_801D00F6 = D_80114F34 + buf[1]; - D_801D00F8 = D_80114F38 + buf[2]; - D_801D00EC = D_80114F24 + buf[0]; - D_801D00EE = D_80114F28 + buf[1]; - D_801D00F0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801D009C; -extern SV4 D_801D00A4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D00A4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801D009C = 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_801D00A4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D00A4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801D009C) = 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_801D00A4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801D00C4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801D00C4; - 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_801D007C; -extern s16 D_801D0248; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801D007C = D_801D007C + 1; - if (D_801D007C >= 0x1F) { - D_801D0248 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801D007C; -extern s16 D_801D0248; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801D007C = D_801D007C + 1; - if (0x18 < D_801D007C) { - func_8012A4BC(); - D_801D0248 = 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_801D007C; -extern void (*D_801D00C0)(void); -extern short D_801D0104; -extern short D_801D0106; -extern short D_801D0108; -extern s16 D_801D0248; - -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_801D007C = D_801D007C + 1; - if (D_801D007C >= 0x19) { - if (D_801D00C0 != 0) { - (*D_801D00C0)(); - } else { - D_80114F30 = D_80114F30 + D_801D0104; - D_80114F34 = D_80114F34 + D_801D0106; - D_80114F38 = D_80114F38 + D_801D0108; - D_80114F24 = D_80114F24 + D_801D0104; - D_80114F28 = D_80114F28 + D_801D0106; - D_80114F2C = D_80114F2C + D_801D0108; - func_8012A4BC(); - } - D_801D0248 = 0; - } -} - - - -extern void (*D_80189AFC[])(void); - -void func_8017BE60(void *a0) { - D_80189AFC[*(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) */ - -INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017A4AC", func_8017BF88); - - -extern void (*D_80189B14[])(void); - -void func_8017C0E4(void *a0) { - D_80189B14[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017A4AC", func_8017C120); diff --git a/src/ov_SC02_026/ov_SC02_026_jr_8017AE2C.c b/src/ov_SC02_026/ov_SC02_026_jr_8017AE2C.c new file mode 100644 index 000000000..d939b9e76 --- /dev/null +++ b/src/ov_SC02_026/ov_SC02_026_jr_8017AE2C.c @@ -0,0 +1,3484 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80188654; +extern u8 D_801885C4; +extern u8 D_801885A0; +extern u8 D_8018857C; +extern u8 D_80188630; +extern u8 D_8018860C; +extern u8 D_801885E8; +extern u8 D_80188558; +extern void func_80145934(void); +extern u8 D_801886E4; +extern u8 D_801886C0; +extern u8 D_8018869C; +extern u8 D_80188678; +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_80187ADC[]; +extern unsigned char D_80187B0C[]; +extern unsigned char D_80187B5C[]; +extern unsigned char D_80187B8C[]; +extern unsigned char D_80187BBC[]; +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(void); +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_80187C0C[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80187CD4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80187D5C[]; +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_80187D64; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801CEF78; +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_801CEF7C; +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_80187D94; +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 void 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_80187E3C[])(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_80187E60[])(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_80187E50; +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_80187E74[])(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_80187E80[]; +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_80187E90[])(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_80187EA8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80187E98; +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_80187EBC[])(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_80187ED8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80187EC8; +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_80187EEC[])(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_80187F00[])(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_80187F14; +extern void (*D_80187F3C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80187F1C; +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_80187F88[])(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_80187F8C[])(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(void *a0); +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_801883F0[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80188400[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801CEFB0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80188428[])(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_80188408; +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_80188418; +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_80188468[])(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_80188470[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018843C; +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_8018847C[])(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_8018844C; +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_801CEFB8; +extern s32 D_801CEFC4; +extern s32 D_801CEFC8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801884B8[])(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_8018848C[]; +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_801CEFC0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80188708[])(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_80188528[]; +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_801887AC[])(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_80188900[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018871C; +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_80188908[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018872C; +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_8018874C; +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_80188910[])(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(void); +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_80188938[])(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_80188944[])(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_801887B8[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801889E8; +extern void func_8015D380(s32 a0); +extern unsigned char D_80187ACC[]; +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_801889FC[]; +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_80188A38[]; +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_80188A80; +extern u16 D_80188A82; +extern u16 D_80188A84; +extern s32 D_80188A88; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80188A90; +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_8018879C; +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_80188B14[]; +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_80188BC4[])(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_80188BF4[]; +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_80188C58; +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_801CEFD0[]; +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_80188C7C[])(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_801CF028[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80188CC4[])(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_80188CB4; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801CE85C[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_80188CCC[])(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_80188D20[])(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_80188CE8; +extern s16 D_80188D1C; +extern s16 D_80188D1A; +extern s16 D_80188D18; +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_80188D2C[])(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_801CF088; +extern u8 D_801CF089; +extern u8 D_801CF08A; +extern u8 D_801CF08B; +extern u8 D_801CF08C; +extern u8 D_801CF08D; +extern u8 D_801CF08E; +extern u8 D_801CF08F; +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_80188D3C[])(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_801CF0C8; +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_80188D80[])(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_80188DFC[]; +extern s32 D_80188E1C[]; +extern u8 D_80188E98[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80188EB8[]; +extern u8 D_80188ED8[]; +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_80188F74[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80188FF0[])(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_801CE86C; +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_80188FFC[])(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_80189004[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801890CC[])(void); +extern void func_80166618(void *a0); +extern void (*D_801890DC[])(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_801890EC[])(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_801890F8[])(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_80189058[]; +extern u8 D_8018906C[]; +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_80189110[])(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_80189118[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80189120[])(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_80189128[])(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_80189130[])(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_80189138[])(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_80189140[])(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_801891F4[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801891FC[])(void); +extern void func_80169F00(void *a0); +extern char D_801891AC[]; +extern char D_8018916C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80189234[])(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_80189240[])(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_80189288[])(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_80189304[])(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_801CF3E8; +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_801892F8[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018933C[]; +extern unsigned short D_80189344[]; +extern unsigned short D_8018934C[]; +extern unsigned char D_801CF3F0[]; +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_801CF3E8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80189354[])(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_801CF524; +extern M2C_UNK D_801CF528; +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_801CF4B0; +extern void (*D_80189384[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801CF52C[]; +extern u8 D_801CF534[]; +extern u8 D_801CF4E4[]; +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_8018938C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801893A8[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801893B0[])(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_80189418[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801893BC; +extern u8 D_801893C8; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018944C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80189454[])(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_801894A8[])(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_801894DC[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801894CC[]; +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_801894F8; +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); +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_80189570[])(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_80189578[])(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_80189580[])(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_80189588[])(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_80189590[])(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_80189598[])(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_801895A4[])(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_801895B0[])(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_801895BC[])(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_801895CC[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801895DC[])(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_801895E4[])(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_801895EC[])(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_801895F4[])(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_801895FC[])(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_80189604[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018960C[])(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_80189614[])(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_8018961C[])(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_80189624[])(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_8018962C[])(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_80189634[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018963C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80189644[])(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_8018964C[])(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_80189654[])(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_8018965C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80189664[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018966C[])(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_80189674[])(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_8018967C[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80189684[])(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_8018968C[])(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_801896D0[])(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_80189694; +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_80189700[])(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_8018973C[])(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(s32); +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_80189794[])(); +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_801897A4[])(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_801897AC[])(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_80189914[])(); +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_80189920[])(); +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_801CEAB4; +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 int func_801789AC(void); +extern s16 D_801D0248; +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_801CFC68; +extern short D_801D02BC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801D0094; +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_801D00BC; +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_801D0078; +extern s32 func_8017A3B0(void); +extern short D_801D00B4; +extern short D_801D00B0; +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_801D0218; +extern s16 D_801D021A; +extern s16 D_801D0224; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801D0218; + + 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_801D0224); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801D0218+0xC == &D_801D0224; 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_801D0218 + 0xC)) < 0x101) { + D_801D0218 = 0; + D_801D021A = 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_801D0224); + 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_801D0218 + 0xC)) < 0x101) { + D_801D0218 = 0; + D_801D021A = 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_801D00F4; + extern s16 D_801D00F6; + extern s16 D_801D00F8; + extern s16 D_801D00EC; + extern s16 D_801D00EE; + extern s16 D_801D00F0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D00F4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D00F6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D00F8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D00EC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D00EE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D00F0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801D007C; +extern u16 D_801D00FC; +extern u16 D_801D00FE; +extern u16 D_801D0100; +extern s16 D_801D0248; + +void func_8017B1D8(void) { + func_8012A418(); + D_801D0248 = 0; + D_801D007C = 0; + D_801D00FC = D_80126B5E; + D_801D00FE = D_80126B62; + D_801D0100 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80189A5C[]; + extern s16 D_801D00F4; + extern s16 D_801D00EC; + 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_80189A5C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80189A5C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D00F4; + s16 *p78C = &D_801D00EC; + *(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_801D0248 = 1; + D_801D007C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D009C; + extern SV4_8017B368 D_801D00A4; + extern s16 D_801D00F4; + extern s16 D_801D00EC; + extern u16 D_80189A5C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801D009C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801D00A4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80189A5C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80189A5C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801D00F4) = loc0; + (*(SV4_8017B368 *)&D_801D00EC) = loc1; + D_801D0248 = 1; + D_801D007C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80189A5C[]; + extern s16 D_801D00F4; + extern s16 D_801D00F6; + extern s16 D_801D00F8; + extern s16 D_801D00EC; + extern s16 D_801D00EE; + extern s16 D_801D00F0; + 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_80189A5C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80189A5C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D00F4; + s16 *p78C = &D_801D00EC; + *(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_801D00F6; + v798 = D_801D00F8; + v78C = *p78C; + v78E = D_801D00EE; + v790 = D_801D00F0; + __asm__ __volatile__(""); + D_801D0248 = 1; + D_801D007C = 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_801D007C; +extern s16 D_801D00F4; +extern s16 D_801D00F6; +extern s16 D_801D00F8; +extern s16 D_801D00EC; +extern s16 D_801D00EE; +extern s16 D_801D00F0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801D007C = 0; + D_801D00F4 = (s16) D_80114F30; + D_801D00F6 = (s16) D_80114F34; + D_801D00F8 = (s16) D_80114F38; + D_801D00EC = (s16) D_80114F24; + D_801D00EE = (s16) D_80114F28; + D_801D00F0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801D010C; +extern s16 D_801D010E; +extern s16 D_801D0110; +extern s16 D_801D0114; +extern s16 D_801D0116; +extern s16 D_801D0118; + +void func_8017B824(void) { + D_801D010C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801D010E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801D0110 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801D0114 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801D0116 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801D0118 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801D010C; +extern s16 D_801D010E; +extern s16 D_801D0110; +extern s16 D_801D0114; +extern s16 D_801D0116; +extern s16 D_801D0118; + +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_801D010C; + D_80114F34 = D_801D010E; + D_80114F38 = D_801D0110; + D_80114F24 = D_801D0114; + D_80114F28 = D_801D0116; + D_80114F2C = D_801D0118; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801D00F4), src[8..15] -> (*(S8_8017B8E8 *)&D_801D00EC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801D00F4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801D00EC) = ((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_801D00FC; +extern u16 D_801D00FE; +extern u16 D_801D0100; + +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_801D007C; +extern short D_801D0104; +extern short D_801D0106; +extern short D_801D0108; +extern s16 D_801D00F4; +extern s16 D_801D00F6; +extern s16 D_801D00F8; +extern s16 D_801D00EC; +extern s16 D_801D00EE; +extern s16 D_801D00F0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D00FC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D00FE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D0100); + (*(s16 *)&D_801D0104) = buf[0]; + (*(s16 *)&D_801D0106) = buf[1]; + (*(s16 *)&D_801D0108) = buf[2]; + D_801D00F4 = D_80114F30 + buf[0]; + D_801D007C = 0; + D_801D00F6 = D_80114F34 + buf[1]; + D_801D00F8 = D_80114F38 + buf[2]; + D_801D00EC = D_80114F24 + buf[0]; + D_801D00EE = D_80114F28 + buf[1]; + D_801D00F0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801D009C; +extern SV4 D_801D00A4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D00A4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801D009C = 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_801D00A4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D00A4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801D009C) = 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_801D00A4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801D00C4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801D00C4; + 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_801D007C; +extern s16 D_801D0248; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801D007C = D_801D007C + 1; + if (D_801D007C >= 0x1F) { + D_801D0248 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801D007C; +extern s16 D_801D0248; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801D007C = D_801D007C + 1; + if (0x18 < D_801D007C) { + func_8012A4BC(); + D_801D0248 = 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_801D007C; +extern void (*D_801D00C0)(void); +extern short D_801D0104; +extern short D_801D0106; +extern short D_801D0108; +extern s16 D_801D0248; + +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_801D007C = D_801D007C + 1; + if (D_801D007C >= 0x19) { + if (D_801D00C0 != 0) { + (*D_801D00C0)(); + } else { + D_80114F30 = D_80114F30 + D_801D0104; + D_80114F34 = D_80114F34 + D_801D0106; + D_80114F38 = D_80114F38 + D_801D0108; + D_80114F24 = D_80114F24 + D_801D0104; + D_80114F28 = D_80114F28 + D_801D0106; + D_80114F2C = D_80114F2C + D_801D0108; + func_8012A4BC(); + } + D_801D0248 = 0; + } +} + + + +extern void (*D_80189AFC[])(void); + +void func_8017BE60(void *a0) { + D_80189AFC[*(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) */ + +INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017AE2C", func_8017BF88); + + +extern void (*D_80189B14[])(void); + +void func_8017C0E4(void *a0) { + D_80189B14[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017AE2C", func_8017C120); + diff --git a/src/ov_SC02_027/ov_SC02_027_jr_8017A4AC.c b/src/ov_SC02_027/ov_SC02_027_jr_8017A4AC.c index efc255622..b1ea032ff 100644 --- a/src/ov_SC02_027/ov_SC02_027_jr_8017A4AC.c +++ b/src/ov_SC02_027/ov_SC02_027_jr_8017A4AC.c @@ -2967,664 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801D9E64; - extern s16 D_801D9E66; - extern s16 D_801D9E68; - extern s16 D_801D9E5C; - extern s16 D_801D9E5E; - extern s16 D_801D9E60; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D9E64, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D9E66, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D9E68, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D9E5C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D9E5E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D9E60, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801D9DEC; -extern u16 D_801D9E6C; -extern u16 D_801D9E6E; -extern u16 D_801D9E70; -extern s16 D_801DA9C8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801DA9C8 = 0; - D_801D9DEC = 0; - D_801D9E6C = D_80126B5E; - D_801D9E6E = D_80126B62; - D_801D9E70 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018EB80[]; - extern s16 D_801D9E64; - extern s16 D_801D9E5C; - 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_8018EB80[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018EB80[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D9E64; - s16 *p78C = &D_801D9E5C; - *(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_801DA9C8 = 1; - D_801D9DEC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D9E0C; - extern SV4_8017B368 D_801D9E14; - extern s16 D_801D9E64; - extern s16 D_801D9E5C; - extern u16 D_8018EB80; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801D9E0C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801D9E14; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018EB80)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018EB80)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801D9E64) = loc0; - (*(SV4_8017B368 *)&D_801D9E5C) = loc1; - D_801DA9C8 = 1; - D_801D9DEC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018EB80[]; - extern s16 D_801D9E64; - extern s16 D_801D9E66; - extern s16 D_801D9E68; - extern s16 D_801D9E5C; - extern s16 D_801D9E5E; - extern s16 D_801D9E60; - 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_8018EB80[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018EB80[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D9E64; - s16 *p78C = &D_801D9E5C; - *(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_801D9E66; - v798 = D_801D9E68; - v78C = *p78C; - v78E = D_801D9E5E; - v790 = D_801D9E60; - __asm__ __volatile__(""); - D_801DA9C8 = 1; - D_801D9DEC = 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_801D9DEC; -extern s16 D_801D9E64; -extern s16 D_801D9E66; -extern s16 D_801D9E68; -extern s16 D_801D9E5C; -extern s16 D_801D9E5E; -extern s16 D_801D9E60; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801D9DEC = 0; - D_801D9E64 = (s16) D_80114F30; - D_801D9E66 = (s16) D_80114F34; - D_801D9E68 = (s16) D_80114F38; - D_801D9E5C = (s16) D_80114F24; - D_801D9E5E = (s16) D_80114F28; - D_801D9E60 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801D9E7C; -extern s16 D_801D9E7E; -extern s16 D_801D9E80; -extern s16 D_801D9E84; -extern s16 D_801D9E86; -extern s16 D_801D9E88; - -void func_8017B824(void) { - D_801D9E7C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801D9E7E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801D9E80 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801D9E84 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801D9E86 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801D9E88 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801D9E7C; -extern s16 D_801D9E7E; -extern s16 D_801D9E80; -extern s16 D_801D9E84; -extern s16 D_801D9E86; -extern s16 D_801D9E88; - -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_801D9E7C; - D_80114F34 = D_801D9E7E; - D_80114F38 = D_801D9E80; - D_80114F24 = D_801D9E84; - D_80114F28 = D_801D9E86; - D_80114F2C = D_801D9E88; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801D9E64), src[8..15] -> (*(S8_8017B8E8 *)&D_801D9E5C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801D9E64) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801D9E5C) = ((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_801D9E6C; -extern u16 D_801D9E6E; -extern u16 D_801D9E70; - -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_801D9DEC; -extern short D_801D9E74; -extern short D_801D9E76; -extern short D_801D9E78; -extern s16 D_801D9E64; -extern s16 D_801D9E66; -extern s16 D_801D9E68; -extern s16 D_801D9E5C; -extern s16 D_801D9E5E; -extern s16 D_801D9E60; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D9E6C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D9E6E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D9E70); - (*(s16 *)&D_801D9E74) = buf[0]; - (*(s16 *)&D_801D9E76) = buf[1]; - (*(s16 *)&D_801D9E78) = buf[2]; - D_801D9E64 = D_80114F30 + buf[0]; - D_801D9DEC = 0; - D_801D9E66 = D_80114F34 + buf[1]; - D_801D9E68 = D_80114F38 + buf[2]; - D_801D9E5C = D_80114F24 + buf[0]; - D_801D9E5E = D_80114F28 + buf[1]; - D_801D9E60 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801D9E0C; -extern SV4 D_801D9E14; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D9E14) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801D9E0C = 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_801D9E14 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D9E14)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801D9E0C) = 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_801D9E14) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801D9E34[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801D9E34; - 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_801D9DEC; -extern s16 D_801DA9C8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801D9DEC = D_801D9DEC + 1; - if (D_801D9DEC >= 0x1F) { - D_801DA9C8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801D9DEC; -extern s16 D_801DA9C8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801D9DEC = D_801D9DEC + 1; - if (0x18 < D_801D9DEC) { - func_8012A4BC(); - D_801DA9C8 = 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_801D9DEC; -extern void (*D_801D9E30)(void); -extern short D_801D9E74; -extern short D_801D9E76; -extern short D_801D9E78; -extern s16 D_801DA9C8; - -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_801D9DEC = D_801D9DEC + 1; - if (D_801D9DEC >= 0x19) { - if (D_801D9E30 != 0) { - (*D_801D9E30)(); - } else { - D_80114F30 = D_80114F30 + D_801D9E74; - D_80114F34 = D_80114F34 + D_801D9E76; - D_80114F38 = D_80114F38 + D_801D9E78; - D_80114F24 = D_80114F24 + D_801D9E74; - D_80114F28 = D_80114F28 + D_801D9E76; - D_80114F2C = D_80114F2C + D_801D9E78; - func_8012A4BC(); - } - D_801DA9C8 = 0; - } -} - - - -extern void (*D_8018EC20[])(void); - -void func_8017BE60(void *a0) { - D_8018EC20[*(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) */ - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017BFEC); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017C378); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017C5F0); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017C738); - - -extern void (*D_8018ED3C[])(void); - -void func_8017C8B8(void *a0) { - D_8018ED3C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017C8F4); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017C940); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017CA34); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017CAB4); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017CB68); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017CBD4); - -extern void func_8012C218(void *a0); - void func_8017CC60(void) { - ((s32 (*)(void))func_8012C218)(); - } - - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017CC80); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017CCD4); - - -extern void (*D_8018ED94[])(void); - -void func_8017CD10(void *a0) { - D_8018ED94[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017CD4C); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017CD9C); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017CDF8); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017CE7C); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017CFE4); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017D030); - - -extern void (*D_8018EDA8[])(void); - -void func_8017D33C(void *a0) { - D_8018EDA8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017D378); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017D3B8); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017D428); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017D4B4); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017D588); - - -extern void (*D_8018EDBC[])(void); - -void func_8017D5DC(void *a0) { - D_8018EDBC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017D618); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017D6CC); - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017A4AC", func_8017D728); diff --git a/src/ov_SC02_027/ov_SC02_027_jr_8017AE2C.c b/src/ov_SC02_027/ov_SC02_027_jr_8017AE2C.c new file mode 100644 index 000000000..7d1793769 --- /dev/null +++ b/src/ov_SC02_027/ov_SC02_027_jr_8017AE2C.c @@ -0,0 +1,3562 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018D778; +extern u8 D_8018D6E8; +extern u8 D_8018D6C4; +extern u8 D_8018D6A0; +extern u8 D_8018D754; +extern u8 D_8018D730; +extern u8 D_8018D70C; +extern u8 D_8018D67C; +extern void func_80145934(void); +extern u8 D_8018D808; +extern u8 D_8018D7E4; +extern u8 D_8018D7C0; +extern u8 D_8018D79C; +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_8018CC00[]; +extern unsigned char D_8018CC30[]; +extern unsigned char D_8018CC80[]; +extern unsigned char D_8018CCB0[]; +extern unsigned char D_8018CCE0[]; +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(void); +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_8018CD30[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018CDF8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018CE80[]; +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_8018CE88; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801D8CE8; +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_801D8CEC; +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_8018CEB8; +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 void 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_8018CF60[])(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_8018CF84[])(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_8018CF74; +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_8018CF98[])(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_8018CFA4[]; +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_8018CFB4[])(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_8018CFCC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018CFBC; +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_8018CFE0[])(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_8018CFFC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018CFEC; +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_8018D010[])(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_8018D024[])(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_8018D038; +extern void (*D_8018D060[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018D040; +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_8018D0AC[])(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_8018D0B0[])(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(void *a0); +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_8018D514[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018D524[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801D8D20; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018D54C[])(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_8018D52C; +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_8018D53C; +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_8018D58C[])(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_8018D594[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018D560; +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_8018D5A0[])(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_8018D570; +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_801D8D28; +extern s32 D_801D8D34; +extern s32 D_801D8D38; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018D5DC[])(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_8018D5B0[]; +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_801D8D30; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018D82C[])(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_8018D64C[]; +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_8018D8D0[])(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_8018DA24[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018D840; +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_8018DA2C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018D850; +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_8018D870; +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_8018DA34[])(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(void); +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_8018DA5C[])(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_8018DA68[])(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_8018D8DC[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018DB0C; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018CBF0[]; +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_8018DB20[]; +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_8018DB5C[]; +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_8018DBA4; +extern u16 D_8018DBA6; +extern u16 D_8018DBA8; +extern s32 D_8018DBAC; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018DBB4; +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_8018D8C0; +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_8018DC38[]; +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_8018DCE8[])(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_8018DD18[]; +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_8018DD7C; +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_801D8D40[]; +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_8018DDA0[])(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_801D8D98[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018DDE8[])(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_8018DDD8; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801D85C8[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_8018DDF0[])(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_8018DE44[])(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_8018DE0C; +extern s16 D_8018DE40; +extern s16 D_8018DE3E; +extern s16 D_8018DE3C; +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_8018DE50[])(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_801D8DF8; +extern u8 D_801D8DF9; +extern u8 D_801D8DFA; +extern u8 D_801D8DFB; +extern u8 D_801D8DFC; +extern u8 D_801D8DFD; +extern u8 D_801D8DFE; +extern u8 D_801D8DFF; +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_8018DE60[])(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_801D8E38; +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_8018DEA4[])(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_8018DF20[]; +extern s32 D_8018DF40[]; +extern u8 D_8018DFBC[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018DFDC[]; +extern u8 D_8018DFFC[]; +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_8018E098[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018E114[])(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_801D85D8; +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_8018E120[])(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_8018E128[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018E1F0[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018E200[])(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_8018E210[])(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_8018E21C[])(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_8018E17C[]; +extern u8 D_8018E190[]; +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_8018E234[])(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_8018E23C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018E244[])(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_8018E24C[])(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_8018E254[])(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_8018E25C[])(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_8018E264[])(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_8018E318[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018E320[])(void); +extern void func_80169F00(void *a0); +extern char D_8018E2D0[]; +extern char D_8018E290[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018E358[])(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_8018E364[])(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_8018E3AC[])(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_8018E428[])(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_801D9158; +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_8018E41C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018E460[]; +extern unsigned short D_8018E468[]; +extern unsigned short D_8018E470[]; +extern unsigned char D_801D9160[]; +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_801D9158; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018E478[])(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_801D9294; +extern M2C_UNK D_801D9298; +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_801D9220; +extern void (*D_8018E4A8[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801D929C[]; +extern u8 D_801D92A4[]; +extern u8 D_801D9254[]; +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_8018E4B0[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018E4CC[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018E4D4[])(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_8018E53C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018E4E0; +extern u8 D_8018E4EC; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018E570[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018E578[])(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_8018E5CC[])(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_8018E600[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018E5F0[]; +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_8018E61C; +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); +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_8018E694[])(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_8018E69C[])(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_8018E6A4[])(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_8018E6AC[])(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_8018E6B4[])(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_8018E6BC[])(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_8018E6C8[])(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_8018E6D4[])(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_8018E6E0[])(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_8018E6F0[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018E700[])(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_8018E708[])(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_8018E710[])(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_8018E718[])(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_8018E720[])(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_8018E728[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018E730[])(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_8018E738[])(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_8018E740[])(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_8018E748[])(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_8018E750[])(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_8018E758[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018E760[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018E768[])(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_8018E770[])(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_8018E778[])(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_8018E780[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018E788[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018E790[])(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_8018E798[])(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_8018E7A0[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018E7A8[])(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_8018E7B0[])(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_8018E7F4[])(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_8018E7B8; +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_8018E824[])(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_8018E860[])(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(s32); +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_8018E8B8[])(); +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_8018E8C8[])(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_8018E8D0[])(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_8018EA38[])(); +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_8018EA44[])(); +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_801D8820; +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 int func_801789AC(void); +extern s16 D_801DA9C8; +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_801D99D8; +extern short D_801DAA3C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801D9E04; +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_801D9E2C; +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_801D9DE8; +extern s32 func_8017A3B0(void); +extern short D_801D9E24; +extern short D_801D9E20; +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_801DA998; +extern s16 D_801DA99A; +extern s16 D_801DA9A4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801DA998; + + 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_801DA9A4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801DA998+0xC == &D_801DA9A4; 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_801DA998 + 0xC)) < 0x101) { + D_801DA998 = 0; + D_801DA99A = 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_801DA9A4); + 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_801DA998 + 0xC)) < 0x101) { + D_801DA998 = 0; + D_801DA99A = 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_801D9E64; + extern s16 D_801D9E66; + extern s16 D_801D9E68; + extern s16 D_801D9E5C; + extern s16 D_801D9E5E; + extern s16 D_801D9E60; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D9E64, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D9E66, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D9E68, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D9E5C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D9E5E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D9E60, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801D9DEC; +extern u16 D_801D9E6C; +extern u16 D_801D9E6E; +extern u16 D_801D9E70; +extern s16 D_801DA9C8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801DA9C8 = 0; + D_801D9DEC = 0; + D_801D9E6C = D_80126B5E; + D_801D9E6E = D_80126B62; + D_801D9E70 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018EB80[]; + extern s16 D_801D9E64; + extern s16 D_801D9E5C; + 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_8018EB80[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018EB80[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D9E64; + s16 *p78C = &D_801D9E5C; + *(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_801DA9C8 = 1; + D_801D9DEC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D9E0C; + extern SV4_8017B368 D_801D9E14; + extern s16 D_801D9E64; + extern s16 D_801D9E5C; + extern u16 D_8018EB80; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801D9E0C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801D9E14; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018EB80)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018EB80)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801D9E64) = loc0; + (*(SV4_8017B368 *)&D_801D9E5C) = loc1; + D_801DA9C8 = 1; + D_801D9DEC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018EB80[]; + extern s16 D_801D9E64; + extern s16 D_801D9E66; + extern s16 D_801D9E68; + extern s16 D_801D9E5C; + extern s16 D_801D9E5E; + extern s16 D_801D9E60; + 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_8018EB80[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018EB80[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D9E64; + s16 *p78C = &D_801D9E5C; + *(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_801D9E66; + v798 = D_801D9E68; + v78C = *p78C; + v78E = D_801D9E5E; + v790 = D_801D9E60; + __asm__ __volatile__(""); + D_801DA9C8 = 1; + D_801D9DEC = 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_801D9DEC; +extern s16 D_801D9E64; +extern s16 D_801D9E66; +extern s16 D_801D9E68; +extern s16 D_801D9E5C; +extern s16 D_801D9E5E; +extern s16 D_801D9E60; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801D9DEC = 0; + D_801D9E64 = (s16) D_80114F30; + D_801D9E66 = (s16) D_80114F34; + D_801D9E68 = (s16) D_80114F38; + D_801D9E5C = (s16) D_80114F24; + D_801D9E5E = (s16) D_80114F28; + D_801D9E60 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801D9E7C; +extern s16 D_801D9E7E; +extern s16 D_801D9E80; +extern s16 D_801D9E84; +extern s16 D_801D9E86; +extern s16 D_801D9E88; + +void func_8017B824(void) { + D_801D9E7C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801D9E7E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801D9E80 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801D9E84 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801D9E86 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801D9E88 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801D9E7C; +extern s16 D_801D9E7E; +extern s16 D_801D9E80; +extern s16 D_801D9E84; +extern s16 D_801D9E86; +extern s16 D_801D9E88; + +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_801D9E7C; + D_80114F34 = D_801D9E7E; + D_80114F38 = D_801D9E80; + D_80114F24 = D_801D9E84; + D_80114F28 = D_801D9E86; + D_80114F2C = D_801D9E88; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801D9E64), src[8..15] -> (*(S8_8017B8E8 *)&D_801D9E5C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801D9E64) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801D9E5C) = ((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_801D9E6C; +extern u16 D_801D9E6E; +extern u16 D_801D9E70; + +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_801D9DEC; +extern short D_801D9E74; +extern short D_801D9E76; +extern short D_801D9E78; +extern s16 D_801D9E64; +extern s16 D_801D9E66; +extern s16 D_801D9E68; +extern s16 D_801D9E5C; +extern s16 D_801D9E5E; +extern s16 D_801D9E60; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D9E6C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D9E6E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D9E70); + (*(s16 *)&D_801D9E74) = buf[0]; + (*(s16 *)&D_801D9E76) = buf[1]; + (*(s16 *)&D_801D9E78) = buf[2]; + D_801D9E64 = D_80114F30 + buf[0]; + D_801D9DEC = 0; + D_801D9E66 = D_80114F34 + buf[1]; + D_801D9E68 = D_80114F38 + buf[2]; + D_801D9E5C = D_80114F24 + buf[0]; + D_801D9E5E = D_80114F28 + buf[1]; + D_801D9E60 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801D9E0C; +extern SV4 D_801D9E14; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D9E14) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801D9E0C = 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_801D9E14 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D9E14)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801D9E0C) = 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_801D9E14) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801D9E34[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801D9E34; + 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_801D9DEC; +extern s16 D_801DA9C8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801D9DEC = D_801D9DEC + 1; + if (D_801D9DEC >= 0x1F) { + D_801DA9C8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801D9DEC; +extern s16 D_801DA9C8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801D9DEC = D_801D9DEC + 1; + if (0x18 < D_801D9DEC) { + func_8012A4BC(); + D_801DA9C8 = 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_801D9DEC; +extern void (*D_801D9E30)(void); +extern short D_801D9E74; +extern short D_801D9E76; +extern short D_801D9E78; +extern s16 D_801DA9C8; + +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_801D9DEC = D_801D9DEC + 1; + if (D_801D9DEC >= 0x19) { + if (D_801D9E30 != 0) { + (*D_801D9E30)(); + } else { + D_80114F30 = D_80114F30 + D_801D9E74; + D_80114F34 = D_80114F34 + D_801D9E76; + D_80114F38 = D_80114F38 + D_801D9E78; + D_80114F24 = D_80114F24 + D_801D9E74; + D_80114F28 = D_80114F28 + D_801D9E76; + D_80114F2C = D_80114F2C + D_801D9E78; + func_8012A4BC(); + } + D_801DA9C8 = 0; + } +} + + + +extern void (*D_8018EC20[])(void); + +void func_8017BE60(void *a0) { + D_8018EC20[*(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) */ + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017BFEC); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017C378); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017C5F0); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017C738); + + +extern void (*D_8018ED3C[])(void); + +void func_8017C8B8(void *a0) { + D_8018ED3C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017C8F4); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017C940); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017CA34); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017CAB4); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017CB68); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017CBD4); + +extern void func_8012C218(void *a0); + void func_8017CC60(void) { + ((s32 (*)(void))func_8012C218)(); + } + + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017CC80); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017CCD4); + + +extern void (*D_8018ED94[])(void); + +void func_8017CD10(void *a0) { + D_8018ED94[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017CD4C); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017CD9C); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017CDF8); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017CE7C); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017CFE4); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017D030); + + +extern void (*D_8018EDA8[])(void); + +void func_8017D33C(void *a0) { + D_8018EDA8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017D378); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017D3B8); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017D428); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017D4B4); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017D588); + + +extern void (*D_8018EDBC[])(void); + +void func_8017D5DC(void *a0) { + D_8018EDBC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017D618); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017D6CC); + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017AE2C", func_8017D728); + diff --git a/src/ov_SC02_028/ov_SC02_028_jr_8017A4AC.c b/src/ov_SC02_028/ov_SC02_028_jr_8017A4AC.c index ebb606629..c5ea5c747 100644 --- a/src/ov_SC02_028/ov_SC02_028_jr_8017A4AC.c +++ b/src/ov_SC02_028/ov_SC02_028_jr_8017A4AC.c @@ -2967,664 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801D2E04; - extern s16 D_801D2E06; - extern s16 D_801D2E08; - extern s16 D_801D2DFC; - extern s16 D_801D2DFE; - extern s16 D_801D2E00; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D2E04, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D2E06, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D2E08, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D2DFC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D2DFE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D2E00, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801D2D8C; -extern u16 D_801D2E0C; -extern u16 D_801D2E0E; -extern u16 D_801D2E10; -extern s16 D_801D35C8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801D35C8 = 0; - D_801D2D8C = 0; - D_801D2E0C = D_80126B5E; - D_801D2E0E = D_80126B62; - D_801D2E10 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018ED84[]; - extern s16 D_801D2E04; - extern s16 D_801D2DFC; - 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_8018ED84[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018ED84[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D2E04; - s16 *p78C = &D_801D2DFC; - *(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_801D35C8 = 1; - D_801D2D8C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D2DAC; - extern SV4_8017B368 D_801D2DB4; - extern s16 D_801D2E04; - extern s16 D_801D2DFC; - extern u16 D_8018ED84; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801D2DAC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801D2DB4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018ED84)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018ED84)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801D2E04) = loc0; - (*(SV4_8017B368 *)&D_801D2DFC) = loc1; - D_801D35C8 = 1; - D_801D2D8C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018ED84[]; - extern s16 D_801D2E04; - extern s16 D_801D2E06; - extern s16 D_801D2E08; - extern s16 D_801D2DFC; - extern s16 D_801D2DFE; - extern s16 D_801D2E00; - 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_8018ED84[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018ED84[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D2E04; - s16 *p78C = &D_801D2DFC; - *(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_801D2E06; - v798 = D_801D2E08; - v78C = *p78C; - v78E = D_801D2DFE; - v790 = D_801D2E00; - __asm__ __volatile__(""); - D_801D35C8 = 1; - D_801D2D8C = 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_801D2D8C; -extern s16 D_801D2E04; -extern s16 D_801D2E06; -extern s16 D_801D2E08; -extern s16 D_801D2DFC; -extern s16 D_801D2DFE; -extern s16 D_801D2E00; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801D2D8C = 0; - D_801D2E04 = (s16) D_80114F30; - D_801D2E06 = (s16) D_80114F34; - D_801D2E08 = (s16) D_80114F38; - D_801D2DFC = (s16) D_80114F24; - D_801D2DFE = (s16) D_80114F28; - D_801D2E00 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801D2E1C; -extern s16 D_801D2E1E; -extern s16 D_801D2E20; -extern s16 D_801D2E24; -extern s16 D_801D2E26; -extern s16 D_801D2E28; - -void func_8017B824(void) { - D_801D2E1C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801D2E1E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801D2E20 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801D2E24 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801D2E26 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801D2E28 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801D2E1C; -extern s16 D_801D2E1E; -extern s16 D_801D2E20; -extern s16 D_801D2E24; -extern s16 D_801D2E26; -extern s16 D_801D2E28; - -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_801D2E1C; - D_80114F34 = D_801D2E1E; - D_80114F38 = D_801D2E20; - D_80114F24 = D_801D2E24; - D_80114F28 = D_801D2E26; - D_80114F2C = D_801D2E28; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801D2E04), src[8..15] -> (*(S8_8017B8E8 *)&D_801D2DFC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801D2E04) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801D2DFC) = ((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_801D2E0C; -extern u16 D_801D2E0E; -extern u16 D_801D2E10; - -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_801D2D8C; -extern short D_801D2E14; -extern short D_801D2E16; -extern short D_801D2E18; -extern s16 D_801D2E04; -extern s16 D_801D2E06; -extern s16 D_801D2E08; -extern s16 D_801D2DFC; -extern s16 D_801D2DFE; -extern s16 D_801D2E00; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D2E0C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D2E0E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D2E10); - (*(s16 *)&D_801D2E14) = buf[0]; - (*(s16 *)&D_801D2E16) = buf[1]; - (*(s16 *)&D_801D2E18) = buf[2]; - D_801D2E04 = D_80114F30 + buf[0]; - D_801D2D8C = 0; - D_801D2E06 = D_80114F34 + buf[1]; - D_801D2E08 = D_80114F38 + buf[2]; - D_801D2DFC = D_80114F24 + buf[0]; - D_801D2DFE = D_80114F28 + buf[1]; - D_801D2E00 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801D2DAC; -extern SV4 D_801D2DB4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D2DB4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801D2DAC = 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_801D2DB4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D2DB4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801D2DAC) = 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_801D2DB4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801D2DD4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801D2DD4; - 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_801D2D8C; -extern s16 D_801D35C8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801D2D8C = D_801D2D8C + 1; - if (D_801D2D8C >= 0x1F) { - D_801D35C8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801D2D8C; -extern s16 D_801D35C8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801D2D8C = D_801D2D8C + 1; - if (0x18 < D_801D2D8C) { - func_8012A4BC(); - D_801D35C8 = 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_801D2D8C; -extern void (*D_801D2DD0)(void); -extern short D_801D2E14; -extern short D_801D2E16; -extern short D_801D2E18; -extern s16 D_801D35C8; - -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_801D2D8C = D_801D2D8C + 1; - if (D_801D2D8C >= 0x19) { - if (D_801D2DD0 != 0) { - (*D_801D2DD0)(); - } else { - D_80114F30 = D_80114F30 + D_801D2E14; - D_80114F34 = D_80114F34 + D_801D2E16; - D_80114F38 = D_80114F38 + D_801D2E18; - D_80114F24 = D_80114F24 + D_801D2E14; - D_80114F28 = D_80114F28 + D_801D2E16; - D_80114F2C = D_80114F2C + D_801D2E18; - func_8012A4BC(); - } - D_801D35C8 = 0; - } -} - - - -extern void (*D_8018EE24[])(void); - -void func_8017BE60(void *a0) { - D_8018EE24[*(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) */ - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017BFEC); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017C378); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017C5F0); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017C738); - - -extern void (*D_8018EF40[])(void); - -void func_8017C8B8(void *a0) { - D_8018EF40[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017C8F4); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017C940); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017CA34); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017CAB4); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017CB68); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017CBD4); - -extern void func_8012C218(void *a0); - void func_8017CC60(void) { - ((s32 (*)(void))func_8012C218)(); - } - - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017CC80); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017CCD4); - - -extern void (*D_8018EF98[])(void); - -void func_8017CD10(void *a0) { - D_8018EF98[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017CD4C); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017CD9C); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017CDF8); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017CE7C); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017CFE4); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017D030); - - -extern void (*D_8018EFAC[])(void); - -void func_8017D33C(void *a0) { - D_8018EFAC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017D378); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017D3B8); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017D428); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017D4B4); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017D588); - - -extern void (*D_8018EFC0[])(void); - -void func_8017D5DC(void *a0) { - D_8018EFC0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017D618); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017D6CC); - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017A4AC", func_8017D728); diff --git a/src/ov_SC02_028/ov_SC02_028_jr_8017AE2C.c b/src/ov_SC02_028/ov_SC02_028_jr_8017AE2C.c new file mode 100644 index 000000000..e970dd9a7 --- /dev/null +++ b/src/ov_SC02_028/ov_SC02_028_jr_8017AE2C.c @@ -0,0 +1,3562 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018D97C; +extern u8 D_8018D8EC; +extern u8 D_8018D8C8; +extern u8 D_8018D8A4; +extern u8 D_8018D958; +extern u8 D_8018D934; +extern u8 D_8018D910; +extern u8 D_8018D880; +extern void func_80145934(void); +extern u8 D_8018DA0C; +extern u8 D_8018D9E8; +extern u8 D_8018D9C4; +extern u8 D_8018D9A0; +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_8018CE04[]; +extern unsigned char D_8018CE34[]; +extern unsigned char D_8018CE84[]; +extern unsigned char D_8018CEB4[]; +extern unsigned char D_8018CEE4[]; +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(void); +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_8018CF34[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018CFFC[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018D084[]; +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_8018D08C; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801D1C88; +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_801D1C8C; +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_8018D0BC; +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 void 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_8018D164[])(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_8018D188[])(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_8018D178; +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_8018D19C[])(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_8018D1A8[]; +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_8018D1B8[])(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_8018D1D0[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018D1C0; +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_8018D1E4[])(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_8018D200[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018D1F0; +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_8018D214[])(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_8018D228[])(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_8018D23C; +extern void (*D_8018D264[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018D244; +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_8018D2B0[])(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_8018D2B4[])(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(void *a0); +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_8018D718[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018D728[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801D1CC0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018D750[])(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_8018D730; +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_8018D740; +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_8018D790[])(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_8018D798[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018D764; +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_8018D7A4[])(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_8018D774; +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_801D1CC8; +extern s32 D_801D1CD4; +extern s32 D_801D1CD8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018D7E0[])(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_8018D7B4[]; +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_801D1CD0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018DA30[])(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_8018D850[]; +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_8018DAD4[])(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_8018DC28[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018DA44; +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_8018DC30[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018DA54; +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_8018DA74; +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_8018DC38[])(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(void); +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_8018DC60[])(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_8018DC6C[])(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_8018DAE0[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018DD10; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018CDF4[]; +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_8018DD24[]; +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_8018DD60[]; +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_8018DDA8; +extern u16 D_8018DDAA; +extern u16 D_8018DDAC; +extern s32 D_8018DDB0; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018DDB8; +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_8018DAC4; +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_8018DE3C[]; +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_8018DEEC[])(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_8018DF1C[]; +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_8018DF80; +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_801D1CE0[]; +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_8018DFA4[])(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_801D1D38[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018DFEC[])(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_8018DFDC; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801D154C[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_8018DFF4[])(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_8018E048[])(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_8018E010; +extern s16 D_8018E044; +extern s16 D_8018E042; +extern s16 D_8018E040; +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_8018E054[])(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_801D1D98; +extern u8 D_801D1D99; +extern u8 D_801D1D9A; +extern u8 D_801D1D9B; +extern u8 D_801D1D9C; +extern u8 D_801D1D9D; +extern u8 D_801D1D9E; +extern u8 D_801D1D9F; +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_8018E064[])(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_801D1DD8; +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_8018E0A8[])(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_8018E124[]; +extern s32 D_8018E144[]; +extern u8 D_8018E1C0[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018E1E0[]; +extern u8 D_8018E200[]; +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_8018E29C[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018E318[])(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_801D155C; +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_8018E324[])(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_8018E32C[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018E3F4[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018E404[])(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_8018E414[])(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_8018E420[])(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_8018E380[]; +extern u8 D_8018E394[]; +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_8018E438[])(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_8018E440[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018E448[])(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_8018E450[])(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_8018E458[])(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_8018E460[])(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_8018E468[])(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_8018E51C[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018E524[])(void); +extern void func_80169F00(void *a0); +extern char D_8018E4D4[]; +extern char D_8018E494[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018E55C[])(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_8018E568[])(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_8018E5B0[])(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_8018E62C[])(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_801D20F8; +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_8018E620[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018E664[]; +extern unsigned short D_8018E66C[]; +extern unsigned short D_8018E674[]; +extern unsigned char D_801D2100[]; +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_801D20F8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018E67C[])(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_801D2234; +extern M2C_UNK D_801D2238; +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_801D21C0; +extern void (*D_8018E6AC[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801D223C[]; +extern u8 D_801D2244[]; +extern u8 D_801D21F4[]; +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_8018E6B4[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018E6D0[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018E6D8[])(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_8018E740[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018E6E4; +extern u8 D_8018E6F0; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018E774[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018E77C[])(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_8018E7D0[])(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_8018E804[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018E7F4[]; +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_8018E820; +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); +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_8018E898[])(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_8018E8A0[])(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_8018E8A8[])(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_8018E8B0[])(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_8018E8B8[])(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_8018E8C0[])(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_8018E8CC[])(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_8018E8D8[])(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_8018E8E4[])(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_8018E8F4[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018E904[])(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_8018E90C[])(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_8018E914[])(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_8018E91C[])(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_8018E924[])(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_8018E92C[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018E934[])(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_8018E93C[])(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_8018E944[])(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_8018E94C[])(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_8018E954[])(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_8018E95C[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018E964[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018E96C[])(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_8018E974[])(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_8018E97C[])(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_8018E984[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018E98C[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018E994[])(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_8018E99C[])(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_8018E9A4[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018E9AC[])(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_8018E9B4[])(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_8018E9F8[])(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_8018E9BC; +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_8018EA28[])(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_8018EA64[])(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(s32); +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_8018EABC[])(); +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_8018EACC[])(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_8018EAD4[])(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_8018EC3C[])(); +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_8018EC48[])(); +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_801D17A4; +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 int func_801789AC(void); +extern s16 D_801D35C8; +extern int func_80178970(void); +extern void 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_801D2978; +extern short D_801D363C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801D2DA4; +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_801D2DCC; +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_801D2D88; +extern s32 func_8017A3B0(void); +extern short D_801D2DC4; +extern short D_801D2DC0; +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_801D3598; +extern s16 D_801D359A; +extern s16 D_801D35A4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801D3598; + + 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_801D35A4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801D3598+0xC == &D_801D35A4; 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_801D3598 + 0xC)) < 0x101) { + D_801D3598 = 0; + D_801D359A = 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_801D35A4); + 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_801D3598 + 0xC)) < 0x101) { + D_801D3598 = 0; + D_801D359A = 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_801D2E04; + extern s16 D_801D2E06; + extern s16 D_801D2E08; + extern s16 D_801D2DFC; + extern s16 D_801D2DFE; + extern s16 D_801D2E00; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D2E04, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D2E06, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D2E08, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D2DFC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D2DFE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D2E00, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801D2D8C; +extern u16 D_801D2E0C; +extern u16 D_801D2E0E; +extern u16 D_801D2E10; +extern s16 D_801D35C8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801D35C8 = 0; + D_801D2D8C = 0; + D_801D2E0C = D_80126B5E; + D_801D2E0E = D_80126B62; + D_801D2E10 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018ED84[]; + extern s16 D_801D2E04; + extern s16 D_801D2DFC; + 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_8018ED84[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018ED84[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D2E04; + s16 *p78C = &D_801D2DFC; + *(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_801D35C8 = 1; + D_801D2D8C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D2DAC; + extern SV4_8017B368 D_801D2DB4; + extern s16 D_801D2E04; + extern s16 D_801D2DFC; + extern u16 D_8018ED84; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801D2DAC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801D2DB4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018ED84)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018ED84)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801D2E04) = loc0; + (*(SV4_8017B368 *)&D_801D2DFC) = loc1; + D_801D35C8 = 1; + D_801D2D8C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018ED84[]; + extern s16 D_801D2E04; + extern s16 D_801D2E06; + extern s16 D_801D2E08; + extern s16 D_801D2DFC; + extern s16 D_801D2DFE; + extern s16 D_801D2E00; + 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_8018ED84[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018ED84[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D2E04; + s16 *p78C = &D_801D2DFC; + *(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_801D2E06; + v798 = D_801D2E08; + v78C = *p78C; + v78E = D_801D2DFE; + v790 = D_801D2E00; + __asm__ __volatile__(""); + D_801D35C8 = 1; + D_801D2D8C = 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_801D2D8C; +extern s16 D_801D2E04; +extern s16 D_801D2E06; +extern s16 D_801D2E08; +extern s16 D_801D2DFC; +extern s16 D_801D2DFE; +extern s16 D_801D2E00; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801D2D8C = 0; + D_801D2E04 = (s16) D_80114F30; + D_801D2E06 = (s16) D_80114F34; + D_801D2E08 = (s16) D_80114F38; + D_801D2DFC = (s16) D_80114F24; + D_801D2DFE = (s16) D_80114F28; + D_801D2E00 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801D2E1C; +extern s16 D_801D2E1E; +extern s16 D_801D2E20; +extern s16 D_801D2E24; +extern s16 D_801D2E26; +extern s16 D_801D2E28; + +void func_8017B824(void) { + D_801D2E1C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801D2E1E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801D2E20 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801D2E24 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801D2E26 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801D2E28 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801D2E1C; +extern s16 D_801D2E1E; +extern s16 D_801D2E20; +extern s16 D_801D2E24; +extern s16 D_801D2E26; +extern s16 D_801D2E28; + +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_801D2E1C; + D_80114F34 = D_801D2E1E; + D_80114F38 = D_801D2E20; + D_80114F24 = D_801D2E24; + D_80114F28 = D_801D2E26; + D_80114F2C = D_801D2E28; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801D2E04), src[8..15] -> (*(S8_8017B8E8 *)&D_801D2DFC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801D2E04) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801D2DFC) = ((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_801D2E0C; +extern u16 D_801D2E0E; +extern u16 D_801D2E10; + +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_801D2D8C; +extern short D_801D2E14; +extern short D_801D2E16; +extern short D_801D2E18; +extern s16 D_801D2E04; +extern s16 D_801D2E06; +extern s16 D_801D2E08; +extern s16 D_801D2DFC; +extern s16 D_801D2DFE; +extern s16 D_801D2E00; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D2E0C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D2E0E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D2E10); + (*(s16 *)&D_801D2E14) = buf[0]; + (*(s16 *)&D_801D2E16) = buf[1]; + (*(s16 *)&D_801D2E18) = buf[2]; + D_801D2E04 = D_80114F30 + buf[0]; + D_801D2D8C = 0; + D_801D2E06 = D_80114F34 + buf[1]; + D_801D2E08 = D_80114F38 + buf[2]; + D_801D2DFC = D_80114F24 + buf[0]; + D_801D2DFE = D_80114F28 + buf[1]; + D_801D2E00 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801D2DAC; +extern SV4 D_801D2DB4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D2DB4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801D2DAC = 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_801D2DB4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D2DB4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801D2DAC) = 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_801D2DB4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801D2DD4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801D2DD4; + 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_801D2D8C; +extern s16 D_801D35C8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801D2D8C = D_801D2D8C + 1; + if (D_801D2D8C >= 0x1F) { + D_801D35C8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801D2D8C; +extern s16 D_801D35C8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801D2D8C = D_801D2D8C + 1; + if (0x18 < D_801D2D8C) { + func_8012A4BC(); + D_801D35C8 = 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_801D2D8C; +extern void (*D_801D2DD0)(void); +extern short D_801D2E14; +extern short D_801D2E16; +extern short D_801D2E18; +extern s16 D_801D35C8; + +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_801D2D8C = D_801D2D8C + 1; + if (D_801D2D8C >= 0x19) { + if (D_801D2DD0 != 0) { + (*D_801D2DD0)(); + } else { + D_80114F30 = D_80114F30 + D_801D2E14; + D_80114F34 = D_80114F34 + D_801D2E16; + D_80114F38 = D_80114F38 + D_801D2E18; + D_80114F24 = D_80114F24 + D_801D2E14; + D_80114F28 = D_80114F28 + D_801D2E16; + D_80114F2C = D_80114F2C + D_801D2E18; + func_8012A4BC(); + } + D_801D35C8 = 0; + } +} + + + +extern void (*D_8018EE24[])(void); + +void func_8017BE60(void *a0) { + D_8018EE24[*(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) */ + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017BFEC); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017C378); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017C5F0); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017C738); + + +extern void (*D_8018EF40[])(void); + +void func_8017C8B8(void *a0) { + D_8018EF40[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017C8F4); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017C940); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017CA34); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017CAB4); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017CB68); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017CBD4); + +extern void func_8012C218(void *a0); + void func_8017CC60(void) { + ((s32 (*)(void))func_8012C218)(); + } + + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017CC80); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017CCD4); + + +extern void (*D_8018EF98[])(void); + +void func_8017CD10(void *a0) { + D_8018EF98[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017CD4C); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017CD9C); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017CDF8); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017CE7C); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017CFE4); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017D030); + + +extern void (*D_8018EFAC[])(void); + +void func_8017D33C(void *a0) { + D_8018EFAC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017D378); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017D3B8); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017D428); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017D4B4); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017D588); + + +extern void (*D_8018EFC0[])(void); + +void func_8017D5DC(void *a0) { + D_8018EFC0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017D618); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017D6CC); + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017AE2C", func_8017D728); + diff --git a/src/ov_SC02_031/ov_SC02_031_jr_8017A4AC.c b/src/ov_SC02_031/ov_SC02_031_jr_8017A4AC.c index 6da114326..19c09bb28 100644 --- a/src/ov_SC02_031/ov_SC02_031_jr_8017A4AC.c +++ b/src/ov_SC02_031/ov_SC02_031_jr_8017A4AC.c @@ -2967,1225 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801B757C; - extern s16 D_801B757E; - extern s16 D_801B7580; - extern s16 D_801B7574; - extern s16 D_801B7576; - extern s16 D_801B7578; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B757C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B757E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B7580, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B7574, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B7576, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B7578, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801B7504; -extern u16 D_801B7584; -extern u16 D_801B7586; -extern u16 D_801B7588; -extern s16 D_801B7A98; - -void func_8017B1D8(void) { - func_8012A418(); - D_801B7A98 = 0; - D_801B7504 = 0; - D_801B7584 = D_80126B5E; - D_801B7586 = D_80126B62; - D_801B7588 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_801885B0[]; - extern s16 D_801B757C; - extern s16 D_801B7574; - 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_801885B0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801885B0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B757C; - s16 *p78C = &D_801B7574; - *(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_801B7A98 = 1; - D_801B7504 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B7524; - extern SV4_8017B368 D_801B752C; - extern s16 D_801B757C; - extern s16 D_801B7574; - extern u16 D_801885B0; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801B7524; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801B752C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_801885B0)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_801885B0)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801B757C) = loc0; - (*(SV4_8017B368 *)&D_801B7574) = loc1; - D_801B7A98 = 1; - D_801B7504 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_801885B0[]; - extern s16 D_801B757C; - extern s16 D_801B757E; - extern s16 D_801B7580; - extern s16 D_801B7574; - extern s16 D_801B7576; - extern s16 D_801B7578; - 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_801885B0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801885B0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B757C; - s16 *p78C = &D_801B7574; - *(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_801B757E; - v798 = D_801B7580; - v78C = *p78C; - v78E = D_801B7576; - v790 = D_801B7578; - __asm__ __volatile__(""); - D_801B7A98 = 1; - D_801B7504 = 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_801B7504; -extern s16 D_801B757C; -extern s16 D_801B757E; -extern s16 D_801B7580; -extern s16 D_801B7574; -extern s16 D_801B7576; -extern s16 D_801B7578; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801B7504 = 0; - D_801B757C = (s16) D_80114F30; - D_801B757E = (s16) D_80114F34; - D_801B7580 = (s16) D_80114F38; - D_801B7574 = (s16) D_80114F24; - D_801B7576 = (s16) D_80114F28; - D_801B7578 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801B7594; -extern s16 D_801B7596; -extern s16 D_801B7598; -extern s16 D_801B759C; -extern s16 D_801B759E; -extern s16 D_801B75A0; - -void func_8017B824(void) { - D_801B7594 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801B7596 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801B7598 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801B759C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801B759E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801B75A0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801B7594; -extern s16 D_801B7596; -extern s16 D_801B7598; -extern s16 D_801B759C; -extern s16 D_801B759E; -extern s16 D_801B75A0; - -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_801B7594; - D_80114F34 = D_801B7596; - D_80114F38 = D_801B7598; - D_80114F24 = D_801B759C; - D_80114F28 = D_801B759E; - D_80114F2C = D_801B75A0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801B757C), src[8..15] -> (*(S8_8017B8E8 *)&D_801B7574) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801B757C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801B7574) = ((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_801B7584; -extern u16 D_801B7586; -extern u16 D_801B7588; - -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_801B7504; -extern short D_801B758C; -extern short D_801B758E; -extern short D_801B7590; -extern s16 D_801B757C; -extern s16 D_801B757E; -extern s16 D_801B7580; -extern s16 D_801B7574; -extern s16 D_801B7576; -extern s16 D_801B7578; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B7584); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B7586); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B7588); - (*(s16 *)&D_801B758C) = buf[0]; - (*(s16 *)&D_801B758E) = buf[1]; - (*(s16 *)&D_801B7590) = buf[2]; - D_801B757C = D_80114F30 + buf[0]; - D_801B7504 = 0; - D_801B757E = D_80114F34 + buf[1]; - D_801B7580 = D_80114F38 + buf[2]; - D_801B7574 = D_80114F24 + buf[0]; - D_801B7576 = D_80114F28 + buf[1]; - D_801B7578 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801B7524; -extern SV4 D_801B752C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B752C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801B7524 = 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_801B752C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B752C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801B7524) = 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_801B752C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801B754C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801B754C; - 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_801B7504; -extern s16 D_801B7A98; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801B7504 = D_801B7504 + 1; - if (D_801B7504 >= 0x1F) { - D_801B7A98 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801B7504; -extern s16 D_801B7A98; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801B7504 = D_801B7504 + 1; - if (0x18 < D_801B7504) { - func_8012A4BC(); - D_801B7A98 = 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_801B7504; -extern void (*D_801B7548)(void); -extern short D_801B758C; -extern short D_801B758E; -extern short D_801B7590; -extern s16 D_801B7A98; - -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_801B7504 = D_801B7504 + 1; - if (D_801B7504 >= 0x19) { - if (D_801B7548 != 0) { - (*D_801B7548)(); - } else { - D_80114F30 = D_80114F30 + D_801B758C; - D_80114F34 = D_80114F34 + D_801B758E; - D_80114F38 = D_80114F38 + D_801B7590; - D_80114F24 = D_80114F24 + D_801B758C; - D_80114F28 = D_80114F28 + D_801B758E; - D_80114F2C = D_80114F2C + D_801B7590; - func_8012A4BC(); - } - D_801B7A98 = 0; - } -} - - - -extern void (*D_80188650[])(void); - -void func_8017BE60(void *a0) { - D_80188650[*(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) */ - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017BF88); - - -extern void (*D_80188668[])(void); - -void func_8017C0E4(void *a0) { - D_80188668[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017C120); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017C180); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017C2B0); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017C63C); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017C8B4); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017C9FC); - - -extern void (*D_80188780[])(void); - -void func_8017CB7C(void *a0) { - D_80188780[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017CBB8); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017CC04); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017CCF8); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017CD78); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017CE2C); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017CE98); - -extern void func_8012C218(void *a0); - void func_8017CF24(void) { - ((void (*)(void))func_8012C218)(); - } - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017CF44); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017CF98); - - -extern void (*D_801887D8[])(void); - -void func_8017CFD4(void *a0) { - D_801887D8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017D010); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017D060); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017D0BC); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017D140); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017D2A8); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017D2F4); - - -extern void (*D_801887EC[])(void); - -void func_8017D600(void *a0) { - D_801887EC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017D63C); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017D67C); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017D6EC); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017D778); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017D84C); - - -extern void (*D_80188800[])(void); - -void func_8017D8A0(void *a0) { - D_80188800[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017D8DC); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017D990); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017D9EC); - - -extern void (*D_801888B8[])(void); - -void func_8017DB5C(void *a0) { - D_801888B8[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017DB98); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017DBD8); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017DC54); - -void func_8017DCB4(void) { -} - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017DCBC); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017DCE4); - -extern s16 D_80126B0C; - s32 func_8017DD00(void) { - return D_80126B0C; - } - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017DD10); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017DD70); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017DE3C); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017E008); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017E064); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017E0C0); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017E124); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017E1D4); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017E298); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017E358); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017E39C); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017E538); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017E73C); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017EB30); - - -extern void (*D_80188C24[])(void); - -void func_8017ECB0(void *a0) { - D_80188C24[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017ECEC); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017ED60); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017EE3C); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017F050); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017F124); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017F1F4); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017F24C); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017F344); - - -extern void (*D_80188C50[])(void); - -void func_8017F384(void *a0) { - D_80188C50[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017F3C0); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017F400); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017F480); - -void func_8017F4E0(void) { -} - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017F4E8); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017F510); - -extern s16 D_80126B0C; - s32 func_8017F52C(void) { - return D_80126B0C; - } - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017F53C); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017F590); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8017F5B4); - - -extern void func_80029124(s32 arg0, s32 arg1); - void func_80180D50(void) { - func_80029124(0x90, 1); - } - - - -extern void (*D_80188D6C[])(void); - -void func_80180D74(void *a0) { - D_80188D6C[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80180DB0); - - -extern s32 func_800167F0(s32 a0); - -s32 func_80180DF4(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_80188D74[])(void); - -void func_80180E18(void *a0) { - D_80188D74[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80180E54); - - -extern void (*D_80188D80[])(void); - -void func_80180EE0(void *a0) { - D_80188D80[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80180F1C); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80180F5C); - -extern void func_800D1EBC(void); - void func_80180FF0(void) { - func_800D1EBC(); - } - - - -extern void (*D_80188D8C[])(void); - -void func_80181010(void *a0) { - D_80188D8C[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8018104C); - - -extern void (*D_80188D98[])(void); - -void func_801810F4(void *a0) { - D_80188D98[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80181130); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80181170); - -extern void func_800D1EBC(void); - void func_80181204(void) { - func_800D1EBC(); - } - - -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_80188DA4; - -void func_80181224(void) { - ((void (*)(void *, s32))func_8016EE40)(&D_80188DA4, 0x1000000); -} - - -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_80188DB0; - -void func_8018124C(void) { - ((void (*)(void *, s32))func_8016EE40)(&D_80188DB0, 0x1000000); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80181274); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8018129C); - - -extern void (*D_80188DD0[])(void); - -void func_8018133C(void *a0) { - D_80188DD0[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80181378); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_801814E4); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_801816C0); - -extern void (*D_80188DE8[])(void); - -void func_80181868(void *a0) { - D_80188DE8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_801818A4); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80181938); - - -extern void (*D_80188E00[])(void); - -void func_801819E8(void *a0) { - D_80188E00[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_8012AD50(void *a0); - void func_80181A24(void) { - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80181A44); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80181AE0); - - -extern void (*D_80188E08[])(void); - -void func_80181B78(void *a0) { - D_80188E08[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80181BB4); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80181C2C); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80181DEC); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80181E88); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80181EF0); - - -extern void (*D_80188E50[])(void); - -void func_80181F20(void *a0) { - D_80188E50[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80181F5C); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80181FA4); - -void func_80182070(void) { -} - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80182078); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_801820E0); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80182174); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_801821F4); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80182328); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_801824E4); - -extern s32 func_800D0CE0(void); - extern void func_8012C218(void *a0); - void func_801825E0(s32 param_1) { - if (((int (*)(void))func_800D0CE0)() != 0) { - ((void (*)(s32))func_8012C218)(param_1); - } - } - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80182618); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80182674); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80182848); - -void func_80182994(void *a0) { - *(short *)((char *)a0 + 0xfe) = 1; - } - - -void func_801829A0(void *a0) { - *(s16 *)((s32)a0 + 0xFE) = 0; - } - - -void func_801829A8(void *a0) { - *(u16 *)((s32)a0 + 0xfe) ^= 1; - } - - - -extern void (*D_80188FE0[])(void); - -void func_801829BC(void *a0) { - D_80188FE0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_801829F8); - -extern void func_8012C218(void *a0); - void func_80182A7C(s32 arg0) { - s32 v0; - if (*(s16 *)(arg0 + 0xfc) != *(s16 *)(*(s32 *)(arg0 + 0x64) + 0x36)) { - ((void (*)(void))func_8012C218)(); - } - } - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80182AB4); - - -extern void (*D_80188FE8[])(void); - -void func_80182B64(void *a0) { - D_80188FE8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80182BA0); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80182BE0); - - -extern void (*D_80189048[])(void); - -void func_80182C24(void *a0) { - D_80189048[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80182C60); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80182CF4); - -extern void func_801832D0(s32 arg0, s32 arg1); - void func_80183020(void) { - func_801832D0(-0x380, 0); - } - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80183044); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80183098); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_801830EC); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_801831B4); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_801832D0); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_801832F4); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80183314); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80183394); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80183458); - -DEFINE_func_80183808() /* dedup: shared engine-core @0x80183808 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80183810); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80183A20); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80183A74); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80183AC8); - -extern s32 func_800D0CE0(void); - s32 func_80183B90(void) { - return func_800D0CE0() != 0; - } - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80183BB0); - - -extern void (*D_80189420[])(void); - -void func_80183D84(void *a0) { - D_80189420[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80183DC0); - - -extern void (*D_80189438[])(void); - -void func_80183FEC(void *a0) { - D_80189438[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80184028); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_801840D0); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8018418C); - - -extern void (*D_8018949C[])(void); - -void func_80184238(void *a0) { - D_8018949C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80184274); - -void func_801842D8(void) { -} - -extern void func_80178CBC(s32 arg0, s32 arg1); -extern s32 D_80189484; - -void func_801842E0(void *arg0) { - ((void (*)(void *, void *))func_80178CBC)(arg0, &D_80189484); - *(s16 *)((u8 *)arg0 + 0x2) = 0x3; -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80184318); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80184358); - - -extern void (*D_801AB130[])(void); - -void func_801843B4(void *a0) { - D_801AB130[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_801843F0); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_801844C4); - -void func_801844EC(void) { -} - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_801844F4); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80184640); - -extern void func_8012C218(void *a0); - void func_80184760(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 2; - ((void (*)(s32))func_8012C218)(*(s32 *)((char *)arg0 + 0xcc)); - } - - -void func_8018478C(void *a0) { - *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 1; - } - - -void func_8018479C(void *a0) { - *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 2; - } - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_801847AC); - - -extern s32 D_80126B58; -extern void func_8014ADA8(s32 a0, s32 a1); - -void func_801847EC(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_80184820(void) { - return ((s32 (*)(void))func_80174764)() == 1; -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80184844); - - -extern void (*D_801AB158[])(void); - -void func_801848A8(void *a0) { - D_801AB158[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_801848E4); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_8018496C); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80184A2C); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80184A9C); - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017A4AC", func_80184B94); - - - diff --git a/src/ov_SC02_031/ov_SC02_031_jr_8017AE2C.c b/src/ov_SC02_031/ov_SC02_031_jr_8017AE2C.c new file mode 100644 index 000000000..57fe0e9aa --- /dev/null +++ b/src/ov_SC02_031/ov_SC02_031_jr_8017AE2C.c @@ -0,0 +1,4123 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801871A8; +extern u8 D_80187118; +extern u8 D_801870F4; +extern u8 D_801870D0; +extern u8 D_80187184; +extern u8 D_80187160; +extern u8 D_8018713C; +extern u8 D_801870AC; +extern void func_80145934(void); +extern u8 D_80187238; +extern u8 D_80187214; +extern u8 D_801871F0; +extern u8 D_801871CC; +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_80186630[]; +extern unsigned char D_80186660[]; +extern unsigned char D_801866B0[]; +extern unsigned char D_801866E0[]; +extern unsigned char D_80186710[]; +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(void); +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_80186760[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80186828[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801868B0[]; +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_801868B8; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801B6400; +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_801B6404; +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_801868E8; +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 void 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_80186990[])(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_801869B4[])(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_801869A4; +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_801869C8[])(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_801869D4[]; +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_801869E4[])(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_801869FC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801869EC; +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_80186A10[])(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_80186A2C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80186A1C; +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_80186A40[])(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_80186A54[])(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_80186A68; +extern void (*D_80186A90[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80186A70; +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_80186ADC[])(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_80186AE0[])(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(void *a0); +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_80186F44[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80186F54[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801B6438; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80186F7C[])(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_80186F5C; +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_80186F6C; +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_80186FBC[])(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_80186FC4[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80186F90; +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_80186FD0[])(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_80186FA0; +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_801B6440; +extern s32 D_801B644C; +extern s32 D_801B6450; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018700C[])(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_80186FE0[]; +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_801B6448; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018725C[])(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_8018707C[]; +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_80187300[])(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_80187454[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80187270; +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_8018745C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80187280; +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_801872A0; +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_80187464[])(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(void); +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_8018748C[])(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_80187498[])(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_8018730C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018753C; +extern void func_8015D380(s32 a0); +extern unsigned char D_80186620[]; +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_80187550[]; +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_8018758C[]; +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_801875D4; +extern u16 D_801875D6; +extern u16 D_801875D8; +extern s32 D_801875DC; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_801875E4; +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_801872F0; +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_80187668[]; +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_80187718[])(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_80187748[]; +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_801877AC; +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_801B6458[]; +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_801877D0[])(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_801B64B0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80187818[])(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_80187808; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801B5D48[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_80187820[])(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_80187874[])(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_8018783C; +extern s16 D_80187870; +extern s16 D_8018786E; +extern s16 D_8018786C; +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_80187880[])(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_801B6510; +extern u8 D_801B6511; +extern u8 D_801B6512; +extern u8 D_801B6513; +extern u8 D_801B6514; +extern u8 D_801B6515; +extern u8 D_801B6516; +extern u8 D_801B6517; +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_80187890[])(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_801B6550; +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_801878D4[])(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_80187950[]; +extern s32 D_80187970[]; +extern u8 D_801879EC[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80187A0C[]; +extern u8 D_80187A2C[]; +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_80187AC8[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80187B44[])(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_801B5D58; +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_80187B50[])(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_80187B58[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80187C20[])(void); +extern void func_80166618(void *a0); +extern void (*D_80187C30[])(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_80187C40[])(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_80187C4C[])(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_80187BAC[]; +extern u8 D_80187BC0[]; +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_80187C64[])(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_80187C6C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80187C74[])(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_80187C7C[])(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_80187C84[])(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_80187C8C[])(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_80187C94[])(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_80187D48[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80187D50[])(void); +extern void func_80169F00(void *a0); +extern char D_80187D00[]; +extern char D_80187CC0[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80187D88[])(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_80187D94[])(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_80187DDC[])(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_80187E58[])(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_801B6870; +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_80187E4C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80187E90[]; +extern unsigned short D_80187E98[]; +extern unsigned short D_80187EA0[]; +extern unsigned char D_801B6878[]; +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_801B6870; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80187EA8[])(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_801B69AC; +extern M2C_UNK D_801B69B0; +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_801B6938; +extern void (*D_80187ED8[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801B69B4[]; +extern u8 D_801B69BC[]; +extern u8 D_801B696C[]; +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_80187EE0[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80187EFC[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80187F04[])(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_80187F6C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80187F10; +extern u8 D_80187F1C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80187FA0[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80187FA8[])(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_80187FFC[])(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_80188030[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80188020[]; +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_8018804C; +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); +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_801880C4[])(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_801880CC[])(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_801880D4[])(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_801880DC[])(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_801880E4[])(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_801880EC[])(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_801880F8[])(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_80188104[])(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_80188110[])(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_80188120[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80188130[])(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_80188138[])(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_80188140[])(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_80188148[])(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_80188150[])(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_80188158[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80188160[])(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_80188168[])(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_80188170[])(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_80188178[])(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_80188180[])(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_80188188[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80188190[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80188198[])(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_801881A0[])(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_801881A8[])(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_801881B0[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801881B8[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801881C0[])(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_801881C8[])(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_801881D0[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801881D8[])(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_801881E0[])(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_80188224[])(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_801881E8; +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_80188254[])(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_80188290[])(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(s32); +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_801882E8[])(); +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_801882F8[])(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_80188300[])(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_80188468[])(); +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_80188474[])(); +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_801B5FA0; +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 int func_801789AC(void); +extern s16 D_801B7A98; +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_801B70F0; +extern short D_801B7B0C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801B751C; +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_801B7544; +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_801B7500; +extern s32 func_8017A3B0(void); +extern short D_801B753C; +extern short D_801B7538; +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_801B7A68; +extern s16 D_801B7A6A; +extern s16 D_801B7A74; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801B7A68; + + 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_801B7A74); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801B7A68+0xC == &D_801B7A74; 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_801B7A68 + 0xC)) < 0x101) { + D_801B7A68 = 0; + D_801B7A6A = 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_801B7A74); + 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_801B7A68 + 0xC)) < 0x101) { + D_801B7A68 = 0; + D_801B7A6A = 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_801B757C; + extern s16 D_801B757E; + extern s16 D_801B7580; + extern s16 D_801B7574; + extern s16 D_801B7576; + extern s16 D_801B7578; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B757C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B757E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B7580, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B7574, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B7576, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B7578, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801B7504; +extern u16 D_801B7584; +extern u16 D_801B7586; +extern u16 D_801B7588; +extern s16 D_801B7A98; + +void func_8017B1D8(void) { + func_8012A418(); + D_801B7A98 = 0; + D_801B7504 = 0; + D_801B7584 = D_80126B5E; + D_801B7586 = D_80126B62; + D_801B7588 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_801885B0[]; + extern s16 D_801B757C; + extern s16 D_801B7574; + 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_801885B0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801885B0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B757C; + s16 *p78C = &D_801B7574; + *(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_801B7A98 = 1; + D_801B7504 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B7524; + extern SV4_8017B368 D_801B752C; + extern s16 D_801B757C; + extern s16 D_801B7574; + extern u16 D_801885B0; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801B7524; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801B752C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_801885B0)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_801885B0)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801B757C) = loc0; + (*(SV4_8017B368 *)&D_801B7574) = loc1; + D_801B7A98 = 1; + D_801B7504 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_801885B0[]; + extern s16 D_801B757C; + extern s16 D_801B757E; + extern s16 D_801B7580; + extern s16 D_801B7574; + extern s16 D_801B7576; + extern s16 D_801B7578; + 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_801885B0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801885B0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B757C; + s16 *p78C = &D_801B7574; + *(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_801B757E; + v798 = D_801B7580; + v78C = *p78C; + v78E = D_801B7576; + v790 = D_801B7578; + __asm__ __volatile__(""); + D_801B7A98 = 1; + D_801B7504 = 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_801B7504; +extern s16 D_801B757C; +extern s16 D_801B757E; +extern s16 D_801B7580; +extern s16 D_801B7574; +extern s16 D_801B7576; +extern s16 D_801B7578; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801B7504 = 0; + D_801B757C = (s16) D_80114F30; + D_801B757E = (s16) D_80114F34; + D_801B7580 = (s16) D_80114F38; + D_801B7574 = (s16) D_80114F24; + D_801B7576 = (s16) D_80114F28; + D_801B7578 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801B7594; +extern s16 D_801B7596; +extern s16 D_801B7598; +extern s16 D_801B759C; +extern s16 D_801B759E; +extern s16 D_801B75A0; + +void func_8017B824(void) { + D_801B7594 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801B7596 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801B7598 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801B759C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801B759E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801B75A0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801B7594; +extern s16 D_801B7596; +extern s16 D_801B7598; +extern s16 D_801B759C; +extern s16 D_801B759E; +extern s16 D_801B75A0; + +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_801B7594; + D_80114F34 = D_801B7596; + D_80114F38 = D_801B7598; + D_80114F24 = D_801B759C; + D_80114F28 = D_801B759E; + D_80114F2C = D_801B75A0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801B757C), src[8..15] -> (*(S8_8017B8E8 *)&D_801B7574) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801B757C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801B7574) = ((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_801B7584; +extern u16 D_801B7586; +extern u16 D_801B7588; + +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_801B7504; +extern short D_801B758C; +extern short D_801B758E; +extern short D_801B7590; +extern s16 D_801B757C; +extern s16 D_801B757E; +extern s16 D_801B7580; +extern s16 D_801B7574; +extern s16 D_801B7576; +extern s16 D_801B7578; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B7584); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B7586); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B7588); + (*(s16 *)&D_801B758C) = buf[0]; + (*(s16 *)&D_801B758E) = buf[1]; + (*(s16 *)&D_801B7590) = buf[2]; + D_801B757C = D_80114F30 + buf[0]; + D_801B7504 = 0; + D_801B757E = D_80114F34 + buf[1]; + D_801B7580 = D_80114F38 + buf[2]; + D_801B7574 = D_80114F24 + buf[0]; + D_801B7576 = D_80114F28 + buf[1]; + D_801B7578 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801B7524; +extern SV4 D_801B752C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B752C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801B7524 = 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_801B752C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B752C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801B7524) = 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_801B752C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801B754C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801B754C; + 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_801B7504; +extern s16 D_801B7A98; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801B7504 = D_801B7504 + 1; + if (D_801B7504 >= 0x1F) { + D_801B7A98 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801B7504; +extern s16 D_801B7A98; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801B7504 = D_801B7504 + 1; + if (0x18 < D_801B7504) { + func_8012A4BC(); + D_801B7A98 = 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_801B7504; +extern void (*D_801B7548)(void); +extern short D_801B758C; +extern short D_801B758E; +extern short D_801B7590; +extern s16 D_801B7A98; + +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_801B7504 = D_801B7504 + 1; + if (D_801B7504 >= 0x19) { + if (D_801B7548 != 0) { + (*D_801B7548)(); + } else { + D_80114F30 = D_80114F30 + D_801B758C; + D_80114F34 = D_80114F34 + D_801B758E; + D_80114F38 = D_80114F38 + D_801B7590; + D_80114F24 = D_80114F24 + D_801B758C; + D_80114F28 = D_80114F28 + D_801B758E; + D_80114F2C = D_80114F2C + D_801B7590; + func_8012A4BC(); + } + D_801B7A98 = 0; + } +} + + + +extern void (*D_80188650[])(void); + +void func_8017BE60(void *a0) { + D_80188650[*(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) */ + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017BF88); + + +extern void (*D_80188668[])(void); + +void func_8017C0E4(void *a0) { + D_80188668[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017C120); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017C180); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017C2B0); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017C63C); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017C8B4); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017C9FC); + + +extern void (*D_80188780[])(void); + +void func_8017CB7C(void *a0) { + D_80188780[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017CBB8); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017CC04); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017CCF8); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017CD78); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017CE2C); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017CE98); + +extern void func_8012C218(void *a0); + void func_8017CF24(void) { + ((void (*)(void))func_8012C218)(); + } + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017CF44); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017CF98); + + +extern void (*D_801887D8[])(void); + +void func_8017CFD4(void *a0) { + D_801887D8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017D010); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017D060); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017D0BC); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017D140); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017D2A8); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017D2F4); + + +extern void (*D_801887EC[])(void); + +void func_8017D600(void *a0) { + D_801887EC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017D63C); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017D67C); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017D6EC); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017D778); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017D84C); + + +extern void (*D_80188800[])(void); + +void func_8017D8A0(void *a0) { + D_80188800[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017D8DC); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017D990); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017D9EC); + + +extern void (*D_801888B8[])(void); + +void func_8017DB5C(void *a0) { + D_801888B8[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017DB98); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017DBD8); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017DC54); + +void func_8017DCB4(void) { +} + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017DCBC); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017DCE4); + +extern s16 D_80126B0C; + s32 func_8017DD00(void) { + return D_80126B0C; + } + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017DD10); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017DD70); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017DE3C); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017E008); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017E064); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017E0C0); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017E124); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017E1D4); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017E298); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017E358); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017E39C); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017E538); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017E73C); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017EB30); + + +extern void (*D_80188C24[])(void); + +void func_8017ECB0(void *a0) { + D_80188C24[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017ECEC); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017ED60); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017EE3C); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017F050); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017F124); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017F1F4); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017F24C); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017F344); + + +extern void (*D_80188C50[])(void); + +void func_8017F384(void *a0) { + D_80188C50[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017F3C0); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017F400); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017F480); + +void func_8017F4E0(void) { +} + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017F4E8); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017F510); + +extern s16 D_80126B0C; + s32 func_8017F52C(void) { + return D_80126B0C; + } + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017F53C); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017F590); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8017F5B4); + + +extern void func_80029124(s32 arg0, s32 arg1); + void func_80180D50(void) { + func_80029124(0x90, 1); + } + + + +extern void (*D_80188D6C[])(void); + +void func_80180D74(void *a0) { + D_80188D6C[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80180DB0); + + +extern s32 func_800167F0(s32 a0); + +s32 func_80180DF4(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_80188D74[])(void); + +void func_80180E18(void *a0) { + D_80188D74[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80180E54); + + +extern void (*D_80188D80[])(void); + +void func_80180EE0(void *a0) { + D_80188D80[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80180F1C); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80180F5C); + +extern void func_800D1EBC(void); + void func_80180FF0(void) { + func_800D1EBC(); + } + + + +extern void (*D_80188D8C[])(void); + +void func_80181010(void *a0) { + D_80188D8C[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8018104C); + + +extern void (*D_80188D98[])(void); + +void func_801810F4(void *a0) { + D_80188D98[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80181130); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80181170); + +extern void func_800D1EBC(void); + void func_80181204(void) { + func_800D1EBC(); + } + + +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); +extern M2C_UNK D_80188DA4; + +void func_80181224(void) { + ((void (*)(void *, s32))func_8016EE40)(&D_80188DA4, 0x1000000); +} + + +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); +extern M2C_UNK D_80188DB0; + +void func_8018124C(void) { + ((void (*)(void *, s32))func_8016EE40)(&D_80188DB0, 0x1000000); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80181274); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8018129C); + + +extern void (*D_80188DD0[])(void); + +void func_8018133C(void *a0) { + D_80188DD0[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80181378); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_801814E4); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_801816C0); + +extern void (*D_80188DE8[])(void); + +void func_80181868(void *a0) { + D_80188DE8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_801818A4); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80181938); + + +extern void (*D_80188E00[])(void); + +void func_801819E8(void *a0) { + D_80188E00[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern s32 func_8012AD50(void *a0); + void func_80181A24(void) { + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80181A44); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80181AE0); + + +extern void (*D_80188E08[])(void); + +void func_80181B78(void *a0) { + D_80188E08[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80181BB4); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80181C2C); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80181DEC); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80181E88); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80181EF0); + + +extern void (*D_80188E50[])(void); + +void func_80181F20(void *a0) { + D_80188E50[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80181F5C); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80181FA4); + +void func_80182070(void) { +} + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80182078); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_801820E0); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80182174); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_801821F4); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80182328); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_801824E4); + +extern s32 func_800D0CE0(void); + extern void func_8012C218(void *a0); + void func_801825E0(s32 param_1) { + if (((int (*)(void))func_800D0CE0)() != 0) { + ((void (*)(s32))func_8012C218)(param_1); + } + } + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80182618); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80182674); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80182848); + +void func_80182994(void *a0) { + *(short *)((char *)a0 + 0xfe) = 1; + } + + +void func_801829A0(void *a0) { + *(s16 *)((s32)a0 + 0xFE) = 0; + } + + +void func_801829A8(void *a0) { + *(u16 *)((s32)a0 + 0xfe) ^= 1; + } + + + +extern void (*D_80188FE0[])(void); + +void func_801829BC(void *a0) { + D_80188FE0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_801829F8); + +extern void func_8012C218(void *a0); + void func_80182A7C(s32 arg0) { + s32 v0; + if (*(s16 *)(arg0 + 0xfc) != *(s16 *)(*(s32 *)(arg0 + 0x64) + 0x36)) { + ((void (*)(void))func_8012C218)(); + } + } + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80182AB4); + + +extern void (*D_80188FE8[])(void); + +void func_80182B64(void *a0) { + D_80188FE8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80182BA0); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80182BE0); + + +extern void (*D_80189048[])(void); + +void func_80182C24(void *a0) { + D_80189048[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80182C60); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80182CF4); + +extern void func_801832D0(s32 arg0, s32 arg1); + void func_80183020(void) { + func_801832D0(-0x380, 0); + } + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80183044); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80183098); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_801830EC); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_801831B4); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_801832D0); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_801832F4); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80183314); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80183394); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80183458); + +DEFINE_func_80183808() /* dedup: shared engine-core @0x80183808 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80183810); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80183A20); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80183A74); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80183AC8); + +extern s32 func_800D0CE0(void); + s32 func_80183B90(void) { + return func_800D0CE0() != 0; + } + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80183BB0); + + +extern void (*D_80189420[])(void); + +void func_80183D84(void *a0) { + D_80189420[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80183DC0); + + +extern void (*D_80189438[])(void); + +void func_80183FEC(void *a0) { + D_80189438[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80184028); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_801840D0); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8018418C); + + +extern void (*D_8018949C[])(void); + +void func_80184238(void *a0) { + D_8018949C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80184274); + +void func_801842D8(void) { +} + +extern void func_80178CBC(s32 arg0, s32 arg1); +extern s32 D_80189484; + +void func_801842E0(void *arg0) { + ((void (*)(void *, void *))func_80178CBC)(arg0, &D_80189484); + *(s16 *)((u8 *)arg0 + 0x2) = 0x3; +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80184318); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80184358); + + +extern void (*D_801AB130[])(void); + +void func_801843B4(void *a0) { + D_801AB130[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_801843F0); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_801844C4); + +void func_801844EC(void) { +} + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_801844F4); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80184640); + +extern void func_8012C218(void *a0); + void func_80184760(void * arg0) { + *(short *)((char *)arg0 + 0x2) = 2; + ((void (*)(s32))func_8012C218)(*(s32 *)((char *)arg0 + 0xcc)); + } + + +void func_8018478C(void *a0) { + *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 1; + } + + +void func_8018479C(void *a0) { + *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 2; + } + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_801847AC); + + +extern s32 D_80126B58; +extern void func_8014ADA8(s32 a0, s32 a1); + +void func_801847EC(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_80184820(void) { + return ((s32 (*)(void))func_80174764)() == 1; +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80184844); + + +extern void (*D_801AB158[])(void); + +void func_801848A8(void *a0) { + D_801AB158[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_801848E4); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_8018496C); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80184A2C); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80184A9C); + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80184B94); + + + + diff --git a/src/ov_SC02_035/ov_SC02_035_jr_8017A4AC.c b/src/ov_SC02_035/ov_SC02_035_jr_8017A4AC.c index 8e181439f..91f52e62e 100644 --- a/src/ov_SC02_035/ov_SC02_035_jr_8017A4AC.c +++ b/src/ov_SC02_035/ov_SC02_035_jr_8017A4AC.c @@ -2967,572 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801BE8AC; - extern s16 D_801BE8AE; - extern s16 D_801BE8B0; - extern s16 D_801BE8A4; - extern s16 D_801BE8A6; - extern s16 D_801BE8A8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801BE8AC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801BE8AE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801BE8B0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801BE8A4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801BE8A6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801BE8A8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801BE834; -extern u16 D_801BE8B4; -extern u16 D_801BE8B6; -extern u16 D_801BE8B8; -extern s16 D_801BE9D0; - -void func_8017B1D8(void) { - func_8012A418(); - D_801BE9D0 = 0; - D_801BE834 = 0; - D_801BE8B4 = D_80126B5E; - D_801BE8B6 = D_80126B62; - D_801BE8B8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80187E10[]; - extern s16 D_801BE8AC; - extern s16 D_801BE8A4; - 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_80187E10[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80187E10[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801BE8AC; - s16 *p78C = &D_801BE8A4; - *(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_801BE9D0 = 1; - D_801BE834 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801BE854; - extern SV4_8017B368 D_801BE85C; - extern s16 D_801BE8AC; - extern s16 D_801BE8A4; - extern u16 D_80187E10; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801BE854; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801BE85C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80187E10)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80187E10)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801BE8AC) = loc0; - (*(SV4_8017B368 *)&D_801BE8A4) = loc1; - D_801BE9D0 = 1; - D_801BE834 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80187E10[]; - extern s16 D_801BE8AC; - extern s16 D_801BE8AE; - extern s16 D_801BE8B0; - extern s16 D_801BE8A4; - extern s16 D_801BE8A6; - extern s16 D_801BE8A8; - 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_80187E10[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80187E10[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801BE8AC; - s16 *p78C = &D_801BE8A4; - *(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_801BE8AE; - v798 = D_801BE8B0; - v78C = *p78C; - v78E = D_801BE8A6; - v790 = D_801BE8A8; - __asm__ __volatile__(""); - D_801BE9D0 = 1; - D_801BE834 = 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_801BE834; -extern s16 D_801BE8AC; -extern s16 D_801BE8AE; -extern s16 D_801BE8B0; -extern s16 D_801BE8A4; -extern s16 D_801BE8A6; -extern s16 D_801BE8A8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801BE834 = 0; - D_801BE8AC = (s16) D_80114F30; - D_801BE8AE = (s16) D_80114F34; - D_801BE8B0 = (s16) D_80114F38; - D_801BE8A4 = (s16) D_80114F24; - D_801BE8A6 = (s16) D_80114F28; - D_801BE8A8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801BE8C4; -extern s16 D_801BE8C6; -extern s16 D_801BE8C8; -extern s16 D_801BE8CC; -extern s16 D_801BE8CE; -extern s16 D_801BE8D0; - -void func_8017B824(void) { - D_801BE8C4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801BE8C6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801BE8C8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801BE8CC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801BE8CE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801BE8D0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801BE8C4; -extern s16 D_801BE8C6; -extern s16 D_801BE8C8; -extern s16 D_801BE8CC; -extern s16 D_801BE8CE; -extern s16 D_801BE8D0; - -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_801BE8C4; - D_80114F34 = D_801BE8C6; - D_80114F38 = D_801BE8C8; - D_80114F24 = D_801BE8CC; - D_80114F28 = D_801BE8CE; - D_80114F2C = D_801BE8D0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801BE8AC), src[8..15] -> (*(S8_8017B8E8 *)&D_801BE8A4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801BE8AC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801BE8A4) = ((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_801BE8B4; -extern u16 D_801BE8B6; -extern u16 D_801BE8B8; - -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_801BE834; -extern short D_801BE8BC; -extern short D_801BE8BE; -extern short D_801BE8C0; -extern s16 D_801BE8AC; -extern s16 D_801BE8AE; -extern s16 D_801BE8B0; -extern s16 D_801BE8A4; -extern s16 D_801BE8A6; -extern s16 D_801BE8A8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801BE8B4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801BE8B6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801BE8B8); - (*(s16 *)&D_801BE8BC) = buf[0]; - (*(s16 *)&D_801BE8BE) = buf[1]; - (*(s16 *)&D_801BE8C0) = buf[2]; - D_801BE8AC = D_80114F30 + buf[0]; - D_801BE834 = 0; - D_801BE8AE = D_80114F34 + buf[1]; - D_801BE8B0 = D_80114F38 + buf[2]; - D_801BE8A4 = D_80114F24 + buf[0]; - D_801BE8A6 = D_80114F28 + buf[1]; - D_801BE8A8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801BE854; -extern SV4 D_801BE85C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801BE85C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801BE854 = 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_801BE85C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801BE85C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801BE854) = 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_801BE85C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801BE87C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801BE87C; - 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_801BE834; -extern s16 D_801BE9D0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801BE834 = D_801BE834 + 1; - if (D_801BE834 >= 0x1F) { - D_801BE9D0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801BE834; -extern s16 D_801BE9D0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801BE834 = D_801BE834 + 1; - if (0x18 < D_801BE834) { - func_8012A4BC(); - D_801BE9D0 = 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_801BE834; -extern void (*D_801BE878)(void); -extern short D_801BE8BC; -extern short D_801BE8BE; -extern short D_801BE8C0; -extern s16 D_801BE9D0; - -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_801BE834 = D_801BE834 + 1; - if (D_801BE834 >= 0x19) { - if (D_801BE878 != 0) { - (*D_801BE878)(); - } else { - D_80114F30 = D_80114F30 + D_801BE8BC; - D_80114F34 = D_80114F34 + D_801BE8BE; - D_80114F38 = D_80114F38 + D_801BE8C0; - D_80114F24 = D_80114F24 + D_801BE8BC; - D_80114F28 = D_80114F28 + D_801BE8BE; - D_80114F2C = D_80114F2C + D_801BE8C0; - func_8012A4BC(); - } - D_801BE9D0 = 0; - } -} - - - -extern void (*D_80187EB0[])(void); - -void func_8017BE60(void *a0) { - D_80187EB0[*(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) */ diff --git a/src/ov_SC02_035/ov_SC02_035_jr_8017AE2C.c b/src/ov_SC02_035/ov_SC02_035_jr_8017AE2C.c new file mode 100644 index 000000000..0aeb0bc46 --- /dev/null +++ b/src/ov_SC02_035/ov_SC02_035_jr_8017AE2C.c @@ -0,0 +1,3470 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80186A08; +extern u8 D_80186978; +extern u8 D_80186954; +extern u8 D_80186930; +extern u8 D_801869E4; +extern u8 D_801869C0; +extern u8 D_8018699C; +extern u8 D_8018690C; +extern void func_80145934(void); +extern u8 D_80186A98; +extern u8 D_80186A74; +extern u8 D_80186A50; +extern u8 D_80186A2C; +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_80185E90[]; +extern unsigned char D_80185EC0[]; +extern unsigned char D_80185F10[]; +extern unsigned char D_80185F40[]; +extern unsigned char D_80185F70[]; +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(void); +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_80185FC0[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80186088[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80186110[]; +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_80186118; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801BD730; +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_801BD734; +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_80186148; +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 void 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_801861F0[])(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_80186214[])(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_80186204; +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_80186228[])(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_80186234[]; +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_80186244[])(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_8018625C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018624C; +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_80186270[])(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_8018628C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018627C; +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_801862A0[])(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_801862B4[])(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_801862C8; +extern void (*D_801862F0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801862D0; +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_8018633C[])(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_80186340[])(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(void *a0); +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_801867A4[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_801867B4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801BD768; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801867DC[])(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_801867BC; +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_801867CC; +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_8018681C[])(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_80186824[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801867F0; +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_80186830[])(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_80186800; +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_801BD770; +extern s32 D_801BD77C; +extern s32 D_801BD780; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018686C[])(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_80186840[]; +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_801BD778; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80186ABC[])(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_801868DC[]; +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_80186B60[])(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_80186CB4[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80186AD0; +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_80186CBC[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80186AE0; +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_80186B00; +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_80186CC4[])(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(void); +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_80186CEC[])(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_80186CF8[])(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_80186B6C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80186D9C; +extern void func_8015D380(s32 a0); +extern unsigned char D_80185E80[]; +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_80186DB0[]; +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_80186DEC[]; +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_80186E34; +extern u16 D_80186E36; +extern u16 D_80186E38; +extern s32 D_80186E3C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80186E44; +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_80186B50; +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_80186EC8[]; +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_80186F78[])(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_80186FA8[]; +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_8018700C; +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_801BD788[]; +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_80187030[])(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_801BD7E0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80187078[])(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_80187068; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801BD010[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_80187080[])(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_801870D4[])(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_8018709C; +extern s16 D_801870D0; +extern s16 D_801870CE; +extern s16 D_801870CC; +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_801870E0[])(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_801BD840; +extern u8 D_801BD841; +extern u8 D_801BD842; +extern u8 D_801BD843; +extern u8 D_801BD844; +extern u8 D_801BD845; +extern u8 D_801BD846; +extern u8 D_801BD847; +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_801870F0[])(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_801BD880; +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_80187134[])(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_801871B0[]; +extern s32 D_801871D0[]; +extern u8 D_8018724C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018726C[]; +extern u8 D_8018728C[]; +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_80187328[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801873A4[])(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_801BD020; +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_801873B0[])(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_801873B8[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80187480[])(void); +extern void func_80166618(void *a0); +extern void (*D_80187490[])(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_801874A0[])(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_801874AC[])(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_8018740C[]; +extern u8 D_80187420[]; +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_801874C4[])(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_801874CC[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_801874D4[])(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_801874DC[])(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_801874E4[])(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_801874EC[])(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_801874F4[])(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_801875A8[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801875B0[])(void); +extern void func_80169F00(void *a0); +extern char D_80187560[]; +extern char D_80187520[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_801875E8[])(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_801875F4[])(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_8018763C[])(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_801876B8[])(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_801BDBA0; +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_801876AC[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_801876F0[]; +extern unsigned short D_801876F8[]; +extern unsigned short D_80187700[]; +extern unsigned char D_801BDBA8[]; +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_801BDBA0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80187708[])(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_801BDCDC; +extern M2C_UNK D_801BDCE0; +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_801BDC68; +extern void (*D_80187738[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801BDCE4[]; +extern u8 D_801BDCEC[]; +extern u8 D_801BDC9C[]; +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_80187740[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018775C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80187764[])(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_801877CC[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80187770; +extern u8 D_8018777C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80187800[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80187808[])(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_8018785C[])(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_80187890[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80187880[]; +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_801878AC; +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); +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_80187924[])(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_8018792C[])(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_80187934[])(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_8018793C[])(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_80187944[])(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_8018794C[])(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_80187958[])(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_80187964[])(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_80187970[])(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_80187980[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80187990[])(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_80187998[])(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_801879A0[])(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_801879A8[])(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_801879B0[])(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_801879B8[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801879C0[])(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_801879C8[])(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_801879D0[])(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_801879D8[])(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_801879E0[])(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_801879E8[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801879F0[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801879F8[])(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_80187A00[])(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_80187A08[])(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_80187A10[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80187A18[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80187A20[])(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_80187A28[])(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_80187A30[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80187A38[])(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_80187A40[])(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_80187A84[])(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_80187A48; +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_80187AB4[])(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_80187AF0[])(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(s32); +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_80187B48[])(); +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_80187B58[])(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_80187B60[])(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_80187CC8[])(); +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_80187CD4[])(); +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_801BD268; +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 int func_801789AC(void); +extern s16 D_801BE9D0; +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_801BE420; +extern short D_801BEA44; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801BE84C; +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_801BE874; +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_801BE830; +extern s32 func_8017A3B0(void); +extern short D_801BE86C; +extern short D_801BE868; +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_801BE9A0; +extern s16 D_801BE9A2; +extern s16 D_801BE9AC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801BE9A0; + + 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_801BE9AC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801BE9A0+0xC == &D_801BE9AC; 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_801BE9A0 + 0xC)) < 0x101) { + D_801BE9A0 = 0; + D_801BE9A2 = 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_801BE9AC); + 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_801BE9A0 + 0xC)) < 0x101) { + D_801BE9A0 = 0; + D_801BE9A2 = 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_801BE8AC; + extern s16 D_801BE8AE; + extern s16 D_801BE8B0; + extern s16 D_801BE8A4; + extern s16 D_801BE8A6; + extern s16 D_801BE8A8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801BE8AC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801BE8AE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801BE8B0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801BE8A4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801BE8A6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801BE8A8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801BE834; +extern u16 D_801BE8B4; +extern u16 D_801BE8B6; +extern u16 D_801BE8B8; +extern s16 D_801BE9D0; + +void func_8017B1D8(void) { + func_8012A418(); + D_801BE9D0 = 0; + D_801BE834 = 0; + D_801BE8B4 = D_80126B5E; + D_801BE8B6 = D_80126B62; + D_801BE8B8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80187E10[]; + extern s16 D_801BE8AC; + extern s16 D_801BE8A4; + 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_80187E10[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80187E10[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801BE8AC; + s16 *p78C = &D_801BE8A4; + *(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_801BE9D0 = 1; + D_801BE834 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801BE854; + extern SV4_8017B368 D_801BE85C; + extern s16 D_801BE8AC; + extern s16 D_801BE8A4; + extern u16 D_80187E10; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801BE854; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801BE85C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80187E10)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80187E10)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801BE8AC) = loc0; + (*(SV4_8017B368 *)&D_801BE8A4) = loc1; + D_801BE9D0 = 1; + D_801BE834 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80187E10[]; + extern s16 D_801BE8AC; + extern s16 D_801BE8AE; + extern s16 D_801BE8B0; + extern s16 D_801BE8A4; + extern s16 D_801BE8A6; + extern s16 D_801BE8A8; + 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_80187E10[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80187E10[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801BE8AC; + s16 *p78C = &D_801BE8A4; + *(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_801BE8AE; + v798 = D_801BE8B0; + v78C = *p78C; + v78E = D_801BE8A6; + v790 = D_801BE8A8; + __asm__ __volatile__(""); + D_801BE9D0 = 1; + D_801BE834 = 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_801BE834; +extern s16 D_801BE8AC; +extern s16 D_801BE8AE; +extern s16 D_801BE8B0; +extern s16 D_801BE8A4; +extern s16 D_801BE8A6; +extern s16 D_801BE8A8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801BE834 = 0; + D_801BE8AC = (s16) D_80114F30; + D_801BE8AE = (s16) D_80114F34; + D_801BE8B0 = (s16) D_80114F38; + D_801BE8A4 = (s16) D_80114F24; + D_801BE8A6 = (s16) D_80114F28; + D_801BE8A8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801BE8C4; +extern s16 D_801BE8C6; +extern s16 D_801BE8C8; +extern s16 D_801BE8CC; +extern s16 D_801BE8CE; +extern s16 D_801BE8D0; + +void func_8017B824(void) { + D_801BE8C4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801BE8C6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801BE8C8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801BE8CC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801BE8CE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801BE8D0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801BE8C4; +extern s16 D_801BE8C6; +extern s16 D_801BE8C8; +extern s16 D_801BE8CC; +extern s16 D_801BE8CE; +extern s16 D_801BE8D0; + +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_801BE8C4; + D_80114F34 = D_801BE8C6; + D_80114F38 = D_801BE8C8; + D_80114F24 = D_801BE8CC; + D_80114F28 = D_801BE8CE; + D_80114F2C = D_801BE8D0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801BE8AC), src[8..15] -> (*(S8_8017B8E8 *)&D_801BE8A4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801BE8AC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801BE8A4) = ((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_801BE8B4; +extern u16 D_801BE8B6; +extern u16 D_801BE8B8; + +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_801BE834; +extern short D_801BE8BC; +extern short D_801BE8BE; +extern short D_801BE8C0; +extern s16 D_801BE8AC; +extern s16 D_801BE8AE; +extern s16 D_801BE8B0; +extern s16 D_801BE8A4; +extern s16 D_801BE8A6; +extern s16 D_801BE8A8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801BE8B4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801BE8B6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801BE8B8); + (*(s16 *)&D_801BE8BC) = buf[0]; + (*(s16 *)&D_801BE8BE) = buf[1]; + (*(s16 *)&D_801BE8C0) = buf[2]; + D_801BE8AC = D_80114F30 + buf[0]; + D_801BE834 = 0; + D_801BE8AE = D_80114F34 + buf[1]; + D_801BE8B0 = D_80114F38 + buf[2]; + D_801BE8A4 = D_80114F24 + buf[0]; + D_801BE8A6 = D_80114F28 + buf[1]; + D_801BE8A8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801BE854; +extern SV4 D_801BE85C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801BE85C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801BE854 = 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_801BE85C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801BE85C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801BE854) = 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_801BE85C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801BE87C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801BE87C; + 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_801BE834; +extern s16 D_801BE9D0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801BE834 = D_801BE834 + 1; + if (D_801BE834 >= 0x1F) { + D_801BE9D0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801BE834; +extern s16 D_801BE9D0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801BE834 = D_801BE834 + 1; + if (0x18 < D_801BE834) { + func_8012A4BC(); + D_801BE9D0 = 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_801BE834; +extern void (*D_801BE878)(void); +extern short D_801BE8BC; +extern short D_801BE8BE; +extern short D_801BE8C0; +extern s16 D_801BE9D0; + +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_801BE834 = D_801BE834 + 1; + if (D_801BE834 >= 0x19) { + if (D_801BE878 != 0) { + (*D_801BE878)(); + } else { + D_80114F30 = D_80114F30 + D_801BE8BC; + D_80114F34 = D_80114F34 + D_801BE8BE; + D_80114F38 = D_80114F38 + D_801BE8C0; + D_80114F24 = D_80114F24 + D_801BE8BC; + D_80114F28 = D_80114F28 + D_801BE8BE; + D_80114F2C = D_80114F2C + D_801BE8C0; + func_8012A4BC(); + } + D_801BE9D0 = 0; + } +} + + + +extern void (*D_80187EB0[])(void); + +void func_8017BE60(void *a0) { + D_80187EB0[*(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) */ + diff --git a/src/ov_SC02_039/ov_SC02_039_jr_8017A4AC.c b/src/ov_SC02_039/ov_SC02_039_jr_8017A4AC.c index 13d3130c7..83a7d9e9d 100644 --- a/src/ov_SC02_039/ov_SC02_039_jr_8017A4AC.c +++ b/src/ov_SC02_039/ov_SC02_039_jr_8017A4AC.c @@ -2967,572 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801A0C5C; - extern s16 D_801A0C5E; - extern s16 D_801A0C60; - extern s16 D_801A0C54; - extern s16 D_801A0C56; - extern s16 D_801A0C58; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A0C5C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A0C5E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A0C60, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A0C54, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A0C56, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A0C58, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801A0BE4; -extern u16 D_801A0C64; -extern u16 D_801A0C66; -extern u16 D_801A0C68; -extern s16 D_801A0D88; - -void func_8017B1D8(void) { - func_8012A418(); - D_801A0D88 = 0; - D_801A0BE4 = 0; - D_801A0C64 = D_80126B5E; - D_801A0C66 = D_80126B62; - D_801A0C68 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80182A3C[]; - extern s16 D_801A0C5C; - extern s16 D_801A0C54; - 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_80182A3C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182A3C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A0C5C; - s16 *p78C = &D_801A0C54; - *(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_801A0D88 = 1; - D_801A0BE4 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A0C04; - extern SV4_8017B368 D_801A0C0C; - extern s16 D_801A0C5C; - extern s16 D_801A0C54; - extern u16 D_80182A3C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801A0C04; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801A0C0C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80182A3C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80182A3C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801A0C5C) = loc0; - (*(SV4_8017B368 *)&D_801A0C54) = loc1; - D_801A0D88 = 1; - D_801A0BE4 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80182A3C[]; - extern s16 D_801A0C5C; - extern s16 D_801A0C5E; - extern s16 D_801A0C60; - extern s16 D_801A0C54; - extern s16 D_801A0C56; - extern s16 D_801A0C58; - 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_80182A3C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182A3C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A0C5C; - s16 *p78C = &D_801A0C54; - *(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_801A0C5E; - v798 = D_801A0C60; - v78C = *p78C; - v78E = D_801A0C56; - v790 = D_801A0C58; - __asm__ __volatile__(""); - D_801A0D88 = 1; - D_801A0BE4 = 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_801A0BE4; -extern s16 D_801A0C5C; -extern s16 D_801A0C5E; -extern s16 D_801A0C60; -extern s16 D_801A0C54; -extern s16 D_801A0C56; -extern s16 D_801A0C58; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801A0BE4 = 0; - D_801A0C5C = (s16) D_80114F30; - D_801A0C5E = (s16) D_80114F34; - D_801A0C60 = (s16) D_80114F38; - D_801A0C54 = (s16) D_80114F24; - D_801A0C56 = (s16) D_80114F28; - D_801A0C58 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801A0C74; -extern s16 D_801A0C76; -extern s16 D_801A0C78; -extern s16 D_801A0C7C; -extern s16 D_801A0C7E; -extern s16 D_801A0C80; - -void func_8017B824(void) { - D_801A0C74 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801A0C76 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801A0C78 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801A0C7C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801A0C7E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801A0C80 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801A0C74; -extern s16 D_801A0C76; -extern s16 D_801A0C78; -extern s16 D_801A0C7C; -extern s16 D_801A0C7E; -extern s16 D_801A0C80; - -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_801A0C74; - D_80114F34 = D_801A0C76; - D_80114F38 = D_801A0C78; - D_80114F24 = D_801A0C7C; - D_80114F28 = D_801A0C7E; - D_80114F2C = D_801A0C80; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801A0C5C), src[8..15] -> (*(S8_8017B8E8 *)&D_801A0C54) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801A0C5C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801A0C54) = ((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_801A0C64; -extern u16 D_801A0C66; -extern u16 D_801A0C68; - -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_801A0BE4; -extern short D_801A0C6C; -extern short D_801A0C6E; -extern short D_801A0C70; -extern s16 D_801A0C5C; -extern s16 D_801A0C5E; -extern s16 D_801A0C60; -extern s16 D_801A0C54; -extern s16 D_801A0C56; -extern s16 D_801A0C58; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A0C64); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A0C66); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A0C68); - (*(s16 *)&D_801A0C6C) = buf[0]; - (*(s16 *)&D_801A0C6E) = buf[1]; - (*(s16 *)&D_801A0C70) = buf[2]; - D_801A0C5C = D_80114F30 + buf[0]; - D_801A0BE4 = 0; - D_801A0C5E = D_80114F34 + buf[1]; - D_801A0C60 = D_80114F38 + buf[2]; - D_801A0C54 = D_80114F24 + buf[0]; - D_801A0C56 = D_80114F28 + buf[1]; - D_801A0C58 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801A0C04; -extern SV4 D_801A0C0C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A0C0C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801A0C04 = 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_801A0C0C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A0C0C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801A0C04) = 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_801A0C0C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801A0C2C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801A0C2C; - 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_801A0BE4; -extern s16 D_801A0D88; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801A0BE4 = D_801A0BE4 + 1; - if (D_801A0BE4 >= 0x1F) { - D_801A0D88 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801A0BE4; -extern s16 D_801A0D88; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801A0BE4 = D_801A0BE4 + 1; - if (0x18 < D_801A0BE4) { - func_8012A4BC(); - D_801A0D88 = 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_801A0BE4; -extern void (*D_801A0C28)(void); -extern short D_801A0C6C; -extern short D_801A0C6E; -extern short D_801A0C70; -extern s16 D_801A0D88; - -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_801A0BE4 = D_801A0BE4 + 1; - if (D_801A0BE4 >= 0x19) { - if (D_801A0C28 != 0) { - (*D_801A0C28)(); - } else { - D_80114F30 = D_80114F30 + D_801A0C6C; - D_80114F34 = D_80114F34 + D_801A0C6E; - D_80114F38 = D_80114F38 + D_801A0C70; - D_80114F24 = D_80114F24 + D_801A0C6C; - D_80114F28 = D_80114F28 + D_801A0C6E; - D_80114F2C = D_80114F2C + D_801A0C70; - func_8012A4BC(); - } - D_801A0D88 = 0; - } -} - - - -extern void (*D_80182ADC[])(void); - -void func_8017BE60(void *a0) { - D_80182ADC[*(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) */ diff --git a/src/ov_SC02_039/ov_SC02_039_jr_8017AE2C.c b/src/ov_SC02_039/ov_SC02_039_jr_8017AE2C.c new file mode 100644 index 000000000..2d31a15d2 --- /dev/null +++ b/src/ov_SC02_039/ov_SC02_039_jr_8017AE2C.c @@ -0,0 +1,3470 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80181634; +extern u8 D_801815A4; +extern u8 D_80181580; +extern u8 D_8018155C; +extern u8 D_80181610; +extern u8 D_801815EC; +extern u8 D_801815C8; +extern u8 D_80181538; +extern void func_80145934(void); +extern u8 D_801816C4; +extern u8 D_801816A0; +extern u8 D_8018167C; +extern u8 D_80181658; +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_80180ABC[]; +extern unsigned char D_80180AEC[]; +extern unsigned char D_80180B3C[]; +extern unsigned char D_80180B6C[]; +extern unsigned char D_80180B9C[]; +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(void); +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_80180BEC[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80180CB4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80180D3C[]; +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_80180D44; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8019FAE0; +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_8019FAE4; +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_80180D74; +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 void 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_80180E1C[])(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_80180E40[])(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_80180E30; +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_80180E54[])(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_80180E60[]; +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_80180E70[])(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_80180E88[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180E78; +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_80180E9C[])(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_80180EB8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80180EA8; +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_80180ECC[])(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_80180EE0[])(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_80180EF4; +extern void (*D_80180F1C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80180EFC; +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_80180F68[])(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_80180F6C[])(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(void *a0); +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_801813D0[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_801813E0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8019FB18; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80181408[])(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_801813E8; +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_801813F8; +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_80181448[])(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_80181450[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018141C; +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_8018145C[])(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_8018142C; +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_8019FB20; +extern s32 D_8019FB2C; +extern s32 D_8019FB30; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80181498[])(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_8018146C[]; +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_8019FB28; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801816E8[])(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_80181508[]; +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_8018178C[])(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_801818E0[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801816FC; +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_801818E8[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018170C; +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_8018172C; +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_801818F0[])(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(void); +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_80181918[])(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_80181924[])(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_80181798[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801819C8; +extern void func_8015D380(s32 a0); +extern unsigned char D_80180AAC[]; +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_801819DC[]; +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_80181A18[]; +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_80181A60; +extern u16 D_80181A62; +extern u16 D_80181A64; +extern s32 D_80181A68; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80181A70; +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_8018177C; +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_80181AF4[]; +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_80181BA4[])(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_80181BD4[]; +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_80181C38; +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_8019FB38[]; +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_80181C5C[])(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_8019FB90[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80181CA4[])(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_80181C94; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8019F3FC[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_80181CAC[])(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_80181D00[])(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_80181CC8; +extern s16 D_80181CFC; +extern s16 D_80181CFA; +extern s16 D_80181CF8; +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_80181D0C[])(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_8019FBF0; +extern u8 D_8019FBF1; +extern u8 D_8019FBF2; +extern u8 D_8019FBF3; +extern u8 D_8019FBF4; +extern u8 D_8019FBF5; +extern u8 D_8019FBF6; +extern u8 D_8019FBF7; +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_80181D1C[])(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_8019FC30; +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_80181D60[])(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_80181DDC[]; +extern s32 D_80181DFC[]; +extern u8 D_80181E78[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80181E98[]; +extern u8 D_80181EB8[]; +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_80181F54[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80181FD0[])(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_8019F40C; +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_80181FDC[])(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_80181FE4[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801820AC[])(void); +extern void func_80166618(void *a0); +extern void (*D_801820BC[])(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_801820CC[])(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_801820D8[])(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_80182038[]; +extern u8 D_8018204C[]; +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_801820F0[])(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_801820F8[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80182100[])(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_80182108[])(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_80182110[])(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_80182118[])(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_80182120[])(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_801821D4[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801821DC[])(void); +extern void func_80169F00(void *a0); +extern char D_8018218C[]; +extern char D_8018214C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80182214[])(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_80182220[])(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_80182268[])(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_801822E4[])(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_8019FF50; +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_801822D8[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018231C[]; +extern unsigned short D_80182324[]; +extern unsigned short D_8018232C[]; +extern unsigned char D_8019FF58[]; +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_8019FF50; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80182334[])(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_801A008C; +extern M2C_UNK D_801A0090; +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_801A0018; +extern void (*D_80182364[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801A0094[]; +extern u8 D_801A009C[]; +extern u8 D_801A004C[]; +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_8018236C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80182388[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80182390[])(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_801823F8[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018239C; +extern u8 D_801823A8; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018242C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80182434[])(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_80182488[])(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_801824BC[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801824AC[]; +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_801824D8; +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); +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_80182550[])(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_80182558[])(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_80182560[])(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_80182568[])(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_80182570[])(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_80182578[])(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_80182584[])(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_80182590[])(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_8018259C[])(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_801825AC[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801825BC[])(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_801825C4[])(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_801825CC[])(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_801825D4[])(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_801825DC[])(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_801825E4[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801825EC[])(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_801825F4[])(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_801825FC[])(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_80182604[])(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_8018260C[])(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_80182614[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018261C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80182624[])(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_8018262C[])(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_80182634[])(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_8018263C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80182644[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018264C[])(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_80182654[])(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_8018265C[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80182664[])(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_8018266C[])(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_801826B0[])(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_80182674; +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_801826E0[])(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_8018271C[])(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(s32); +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_80182774[])(); +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_80182784[])(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_8018278C[])(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_801828F4[])(); +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_80182900[])(); +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_8019F654; +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 int func_801789AC(void); +extern s16 D_801A0D88; +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_801A07D0; +extern short D_801A0DFC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801A0BFC; +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_801A0C24; +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_801A0BE0; +extern s32 func_8017A3B0(void); +extern short D_801A0C1C; +extern short D_801A0C18; +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_801A0D58; +extern s16 D_801A0D5A; +extern s16 D_801A0D64; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801A0D58; + + 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_801A0D64); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801A0D58+0xC == &D_801A0D64; 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_801A0D58 + 0xC)) < 0x101) { + D_801A0D58 = 0; + D_801A0D5A = 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_801A0D64); + 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_801A0D58 + 0xC)) < 0x101) { + D_801A0D58 = 0; + D_801A0D5A = 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_801A0C5C; + extern s16 D_801A0C5E; + extern s16 D_801A0C60; + extern s16 D_801A0C54; + extern s16 D_801A0C56; + extern s16 D_801A0C58; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A0C5C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A0C5E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A0C60, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A0C54, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A0C56, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A0C58, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801A0BE4; +extern u16 D_801A0C64; +extern u16 D_801A0C66; +extern u16 D_801A0C68; +extern s16 D_801A0D88; + +void func_8017B1D8(void) { + func_8012A418(); + D_801A0D88 = 0; + D_801A0BE4 = 0; + D_801A0C64 = D_80126B5E; + D_801A0C66 = D_80126B62; + D_801A0C68 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80182A3C[]; + extern s16 D_801A0C5C; + extern s16 D_801A0C54; + 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_80182A3C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182A3C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A0C5C; + s16 *p78C = &D_801A0C54; + *(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_801A0D88 = 1; + D_801A0BE4 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A0C04; + extern SV4_8017B368 D_801A0C0C; + extern s16 D_801A0C5C; + extern s16 D_801A0C54; + extern u16 D_80182A3C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801A0C04; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801A0C0C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80182A3C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80182A3C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801A0C5C) = loc0; + (*(SV4_8017B368 *)&D_801A0C54) = loc1; + D_801A0D88 = 1; + D_801A0BE4 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80182A3C[]; + extern s16 D_801A0C5C; + extern s16 D_801A0C5E; + extern s16 D_801A0C60; + extern s16 D_801A0C54; + extern s16 D_801A0C56; + extern s16 D_801A0C58; + 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_80182A3C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182A3C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A0C5C; + s16 *p78C = &D_801A0C54; + *(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_801A0C5E; + v798 = D_801A0C60; + v78C = *p78C; + v78E = D_801A0C56; + v790 = D_801A0C58; + __asm__ __volatile__(""); + D_801A0D88 = 1; + D_801A0BE4 = 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_801A0BE4; +extern s16 D_801A0C5C; +extern s16 D_801A0C5E; +extern s16 D_801A0C60; +extern s16 D_801A0C54; +extern s16 D_801A0C56; +extern s16 D_801A0C58; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801A0BE4 = 0; + D_801A0C5C = (s16) D_80114F30; + D_801A0C5E = (s16) D_80114F34; + D_801A0C60 = (s16) D_80114F38; + D_801A0C54 = (s16) D_80114F24; + D_801A0C56 = (s16) D_80114F28; + D_801A0C58 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801A0C74; +extern s16 D_801A0C76; +extern s16 D_801A0C78; +extern s16 D_801A0C7C; +extern s16 D_801A0C7E; +extern s16 D_801A0C80; + +void func_8017B824(void) { + D_801A0C74 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801A0C76 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801A0C78 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801A0C7C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801A0C7E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801A0C80 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801A0C74; +extern s16 D_801A0C76; +extern s16 D_801A0C78; +extern s16 D_801A0C7C; +extern s16 D_801A0C7E; +extern s16 D_801A0C80; + +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_801A0C74; + D_80114F34 = D_801A0C76; + D_80114F38 = D_801A0C78; + D_80114F24 = D_801A0C7C; + D_80114F28 = D_801A0C7E; + D_80114F2C = D_801A0C80; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801A0C5C), src[8..15] -> (*(S8_8017B8E8 *)&D_801A0C54) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801A0C5C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801A0C54) = ((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_801A0C64; +extern u16 D_801A0C66; +extern u16 D_801A0C68; + +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_801A0BE4; +extern short D_801A0C6C; +extern short D_801A0C6E; +extern short D_801A0C70; +extern s16 D_801A0C5C; +extern s16 D_801A0C5E; +extern s16 D_801A0C60; +extern s16 D_801A0C54; +extern s16 D_801A0C56; +extern s16 D_801A0C58; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A0C64); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A0C66); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A0C68); + (*(s16 *)&D_801A0C6C) = buf[0]; + (*(s16 *)&D_801A0C6E) = buf[1]; + (*(s16 *)&D_801A0C70) = buf[2]; + D_801A0C5C = D_80114F30 + buf[0]; + D_801A0BE4 = 0; + D_801A0C5E = D_80114F34 + buf[1]; + D_801A0C60 = D_80114F38 + buf[2]; + D_801A0C54 = D_80114F24 + buf[0]; + D_801A0C56 = D_80114F28 + buf[1]; + D_801A0C58 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801A0C04; +extern SV4 D_801A0C0C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A0C0C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801A0C04 = 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_801A0C0C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A0C0C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801A0C04) = 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_801A0C0C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801A0C2C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801A0C2C; + 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_801A0BE4; +extern s16 D_801A0D88; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801A0BE4 = D_801A0BE4 + 1; + if (D_801A0BE4 >= 0x1F) { + D_801A0D88 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801A0BE4; +extern s16 D_801A0D88; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801A0BE4 = D_801A0BE4 + 1; + if (0x18 < D_801A0BE4) { + func_8012A4BC(); + D_801A0D88 = 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_801A0BE4; +extern void (*D_801A0C28)(void); +extern short D_801A0C6C; +extern short D_801A0C6E; +extern short D_801A0C70; +extern s16 D_801A0D88; + +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_801A0BE4 = D_801A0BE4 + 1; + if (D_801A0BE4 >= 0x19) { + if (D_801A0C28 != 0) { + (*D_801A0C28)(); + } else { + D_80114F30 = D_80114F30 + D_801A0C6C; + D_80114F34 = D_80114F34 + D_801A0C6E; + D_80114F38 = D_80114F38 + D_801A0C70; + D_80114F24 = D_80114F24 + D_801A0C6C; + D_80114F28 = D_80114F28 + D_801A0C6E; + D_80114F2C = D_80114F2C + D_801A0C70; + func_8012A4BC(); + } + D_801A0D88 = 0; + } +} + + + +extern void (*D_80182ADC[])(void); + +void func_8017BE60(void *a0) { + D_80182ADC[*(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) */ + diff --git a/src/ov_SC02_041/ov_SC02_041_jr_8017A4AC.c b/src/ov_SC02_041/ov_SC02_041_jr_8017A4AC.c index 7de09b68b..51843c352 100644 --- a/src/ov_SC02_041/ov_SC02_041_jr_8017A4AC.c +++ b/src/ov_SC02_041/ov_SC02_041_jr_8017A4AC.c @@ -2967,572 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801B8FD4; - extern s16 D_801B8FD6; - extern s16 D_801B8FD8; - extern s16 D_801B8FCC; - extern s16 D_801B8FCE; - extern s16 D_801B8FD0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B8FD4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B8FD6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B8FD8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B8FCC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B8FCE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B8FD0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801B8F5C; -extern u16 D_801B8FDC; -extern u16 D_801B8FDE; -extern u16 D_801B8FE0; -extern s16 D_801B9660; - -void func_8017B1D8(void) { - func_8012A418(); - D_801B9660 = 0; - D_801B8F5C = 0; - D_801B8FDC = D_80126B5E; - D_801B8FDE = D_80126B62; - D_801B8FE0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018870C[]; - extern s16 D_801B8FD4; - extern s16 D_801B8FCC; - 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_8018870C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018870C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B8FD4; - s16 *p78C = &D_801B8FCC; - *(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_801B9660 = 1; - D_801B8F5C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B8F7C; - extern SV4_8017B368 D_801B8F84; - extern s16 D_801B8FD4; - extern s16 D_801B8FCC; - extern u16 D_8018870C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801B8F7C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801B8F84; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018870C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018870C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801B8FD4) = loc0; - (*(SV4_8017B368 *)&D_801B8FCC) = loc1; - D_801B9660 = 1; - D_801B8F5C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018870C[]; - extern s16 D_801B8FD4; - extern s16 D_801B8FD6; - extern s16 D_801B8FD8; - extern s16 D_801B8FCC; - extern s16 D_801B8FCE; - extern s16 D_801B8FD0; - 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_8018870C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018870C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B8FD4; - s16 *p78C = &D_801B8FCC; - *(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_801B8FD6; - v798 = D_801B8FD8; - v78C = *p78C; - v78E = D_801B8FCE; - v790 = D_801B8FD0; - __asm__ __volatile__(""); - D_801B9660 = 1; - D_801B8F5C = 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_801B8F5C; -extern s16 D_801B8FD4; -extern s16 D_801B8FD6; -extern s16 D_801B8FD8; -extern s16 D_801B8FCC; -extern s16 D_801B8FCE; -extern s16 D_801B8FD0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801B8F5C = 0; - D_801B8FD4 = (s16) D_80114F30; - D_801B8FD6 = (s16) D_80114F34; - D_801B8FD8 = (s16) D_80114F38; - D_801B8FCC = (s16) D_80114F24; - D_801B8FCE = (s16) D_80114F28; - D_801B8FD0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801B8FEC; -extern s16 D_801B8FEE; -extern s16 D_801B8FF0; -extern s16 D_801B8FF4; -extern s16 D_801B8FF6; -extern s16 D_801B8FF8; - -void func_8017B824(void) { - D_801B8FEC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801B8FEE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801B8FF0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801B8FF4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801B8FF6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801B8FF8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801B8FEC; -extern s16 D_801B8FEE; -extern s16 D_801B8FF0; -extern s16 D_801B8FF4; -extern s16 D_801B8FF6; -extern s16 D_801B8FF8; - -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_801B8FEC; - D_80114F34 = D_801B8FEE; - D_80114F38 = D_801B8FF0; - D_80114F24 = D_801B8FF4; - D_80114F28 = D_801B8FF6; - D_80114F2C = D_801B8FF8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801B8FD4), src[8..15] -> (*(S8_8017B8E8 *)&D_801B8FCC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801B8FD4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801B8FCC) = ((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_801B8FDC; -extern u16 D_801B8FDE; -extern u16 D_801B8FE0; - -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_801B8F5C; -extern short D_801B8FE4; -extern short D_801B8FE6; -extern short D_801B8FE8; -extern s16 D_801B8FD4; -extern s16 D_801B8FD6; -extern s16 D_801B8FD8; -extern s16 D_801B8FCC; -extern s16 D_801B8FCE; -extern s16 D_801B8FD0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B8FDC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B8FDE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B8FE0); - (*(s16 *)&D_801B8FE4) = buf[0]; - (*(s16 *)&D_801B8FE6) = buf[1]; - (*(s16 *)&D_801B8FE8) = buf[2]; - D_801B8FD4 = D_80114F30 + buf[0]; - D_801B8F5C = 0; - D_801B8FD6 = D_80114F34 + buf[1]; - D_801B8FD8 = D_80114F38 + buf[2]; - D_801B8FCC = D_80114F24 + buf[0]; - D_801B8FCE = D_80114F28 + buf[1]; - D_801B8FD0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801B8F7C; -extern SV4 D_801B8F84; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B8F84) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801B8F7C = 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_801B8F84 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B8F84)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801B8F7C) = 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_801B8F84) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801B8FA4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801B8FA4; - 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_801B8F5C; -extern s16 D_801B9660; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801B8F5C = D_801B8F5C + 1; - if (D_801B8F5C >= 0x1F) { - D_801B9660 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801B8F5C; -extern s16 D_801B9660; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801B8F5C = D_801B8F5C + 1; - if (0x18 < D_801B8F5C) { - func_8012A4BC(); - D_801B9660 = 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_801B8F5C; -extern void (*D_801B8FA0)(void); -extern short D_801B8FE4; -extern short D_801B8FE6; -extern short D_801B8FE8; -extern s16 D_801B9660; - -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_801B8F5C = D_801B8F5C + 1; - if (D_801B8F5C >= 0x19) { - if (D_801B8FA0 != 0) { - (*D_801B8FA0)(); - } else { - D_80114F30 = D_80114F30 + D_801B8FE4; - D_80114F34 = D_80114F34 + D_801B8FE6; - D_80114F38 = D_80114F38 + D_801B8FE8; - D_80114F24 = D_80114F24 + D_801B8FE4; - D_80114F28 = D_80114F28 + D_801B8FE6; - D_80114F2C = D_80114F2C + D_801B8FE8; - func_8012A4BC(); - } - D_801B9660 = 0; - } -} - - - -extern void (*D_801887AC[])(void); - -void func_8017BE60(void *a0) { - D_801887AC[*(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) */ diff --git a/src/ov_SC02_041/ov_SC02_041_jr_8017AE2C.c b/src/ov_SC02_041/ov_SC02_041_jr_8017AE2C.c new file mode 100644 index 000000000..359d22cc3 --- /dev/null +++ b/src/ov_SC02_041/ov_SC02_041_jr_8017AE2C.c @@ -0,0 +1,3470 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80187304; +extern u8 D_80187274; +extern u8 D_80187250; +extern u8 D_8018722C; +extern u8 D_801872E0; +extern u8 D_801872BC; +extern u8 D_80187298; +extern u8 D_80187208; +extern void func_80145934(void); +extern u8 D_80187394; +extern u8 D_80187370; +extern u8 D_8018734C; +extern u8 D_80187328; +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_8018678C[]; +extern unsigned char D_801867BC[]; +extern unsigned char D_8018680C[]; +extern unsigned char D_8018683C[]; +extern unsigned char D_8018686C[]; +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(void); +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_801868BC[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80186984[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80186A0C[]; +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_80186A14; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801B7E58; +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_801B7E5C; +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_80186A44; +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 void 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_80186AEC[])(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_80186B10[])(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_80186B00; +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_80186B24[])(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_80186B30[]; +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_80186B40[])(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_80186B58[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80186B48; +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_80186B6C[])(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_80186B88[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80186B78; +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_80186B9C[])(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_80186BB0[])(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_80186BC4; +extern void (*D_80186BEC[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80186BCC; +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_80186C38[])(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_80186C3C[])(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(void *a0); +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_801870A0[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_801870B0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801B7E90; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801870D8[])(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_801870B8; +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_801870C8; +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_80187118[])(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_80187120[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801870EC; +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_8018712C[])(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_801870FC; +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_801B7E98; +extern s32 D_801B7EA4; +extern s32 D_801B7EA8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80187168[])(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_8018713C[]; +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_801B7EA0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801873B8[])(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_801871D8[]; +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_8018745C[])(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_801875B0[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801873CC; +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_801875B8[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801873DC; +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_801873FC; +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_801875C0[])(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(void); +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_801875E8[])(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_801875F4[])(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_80187468[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80187698; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018677C[]; +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_801876AC[]; +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_801876E8[]; +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_80187730; +extern u16 D_80187732; +extern u16 D_80187734; +extern s32 D_80187738; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80187740; +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_8018744C; +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_801877C4[]; +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_80187874[])(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_801878A4[]; +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_80187908; +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_801B7EB0[]; +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_8018792C[])(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_801B7F08[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80187974[])(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_80187964; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801B7768[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_8018797C[])(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_801879D0[])(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_80187998; +extern s16 D_801879CC; +extern s16 D_801879CA; +extern s16 D_801879C8; +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_801879DC[])(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_801B7F68; +extern u8 D_801B7F69; +extern u8 D_801B7F6A; +extern u8 D_801B7F6B; +extern u8 D_801B7F6C; +extern u8 D_801B7F6D; +extern u8 D_801B7F6E; +extern u8 D_801B7F6F; +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_801879EC[])(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_801B7FA8; +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_80187A30[])(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_80187AAC[]; +extern s32 D_80187ACC[]; +extern u8 D_80187B48[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80187B68[]; +extern u8 D_80187B88[]; +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_80187C24[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80187CA0[])(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_801B7778; +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_80187CAC[])(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_80187CB4[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80187D7C[])(void); +extern void func_80166618(void *a0); +extern void (*D_80187D8C[])(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_80187D9C[])(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_80187DA8[])(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_80187D08[]; +extern u8 D_80187D1C[]; +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_80187DC0[])(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_80187DC8[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80187DD0[])(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_80187DD8[])(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_80187DE0[])(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_80187DE8[])(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_80187DF0[])(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_80187EA4[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80187EAC[])(void); +extern void func_80169F00(void *a0); +extern char D_80187E5C[]; +extern char D_80187E1C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80187EE4[])(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_80187EF0[])(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_80187F38[])(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_80187FB4[])(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_801B82C8; +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_80187FA8[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80187FEC[]; +extern unsigned short D_80187FF4[]; +extern unsigned short D_80187FFC[]; +extern unsigned char D_801B82D0[]; +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_801B82C8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80188004[])(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_801B8404; +extern M2C_UNK D_801B8408; +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_801B8390; +extern void (*D_80188034[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801B840C[]; +extern u8 D_801B8414[]; +extern u8 D_801B83C4[]; +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_8018803C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80188058[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80188060[])(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_801880C8[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018806C; +extern u8 D_80188078; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801880FC[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80188104[])(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_80188158[])(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_8018818C[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018817C[]; +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_801881A8; +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); +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_80188220[])(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_80188228[])(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_80188230[])(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_80188238[])(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_80188240[])(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_80188248[])(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_80188254[])(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_80188260[])(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_8018826C[])(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_8018827C[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018828C[])(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_80188294[])(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_8018829C[])(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_801882A4[])(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_801882AC[])(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_801882B4[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801882BC[])(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_801882C4[])(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_801882CC[])(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_801882D4[])(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_801882DC[])(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_801882E4[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801882EC[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801882F4[])(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_801882FC[])(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_80188304[])(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_8018830C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80188314[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018831C[])(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_80188324[])(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_8018832C[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80188334[])(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_8018833C[])(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_80188380[])(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_80188344; +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_801883B0[])(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_801883EC[])(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(s32); +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_80188444[])(); +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_80188454[])(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_8018845C[])(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_801885C4[])(); +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_801885D0[])(); +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_801B79C0; +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 int func_801789AC(void); +extern s16 D_801B9660; +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_801B8B48; +extern short D_801B96D4; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801B8F74; +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_801B8F9C; +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_801B8F58; +extern s32 func_8017A3B0(void); +extern short D_801B8F94; +extern short D_801B8F90; +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_801B9630; +extern s16 D_801B9632; +extern s16 D_801B963C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801B9630; + + 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_801B963C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801B9630+0xC == &D_801B963C; 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_801B9630 + 0xC)) < 0x101) { + D_801B9630 = 0; + D_801B9632 = 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_801B963C); + 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_801B9630 + 0xC)) < 0x101) { + D_801B9630 = 0; + D_801B9632 = 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_801B8FD4; + extern s16 D_801B8FD6; + extern s16 D_801B8FD8; + extern s16 D_801B8FCC; + extern s16 D_801B8FCE; + extern s16 D_801B8FD0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B8FD4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B8FD6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B8FD8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B8FCC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B8FCE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B8FD0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801B8F5C; +extern u16 D_801B8FDC; +extern u16 D_801B8FDE; +extern u16 D_801B8FE0; +extern s16 D_801B9660; + +void func_8017B1D8(void) { + func_8012A418(); + D_801B9660 = 0; + D_801B8F5C = 0; + D_801B8FDC = D_80126B5E; + D_801B8FDE = D_80126B62; + D_801B8FE0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018870C[]; + extern s16 D_801B8FD4; + extern s16 D_801B8FCC; + 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_8018870C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018870C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B8FD4; + s16 *p78C = &D_801B8FCC; + *(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_801B9660 = 1; + D_801B8F5C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B8F7C; + extern SV4_8017B368 D_801B8F84; + extern s16 D_801B8FD4; + extern s16 D_801B8FCC; + extern u16 D_8018870C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801B8F7C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801B8F84; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018870C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018870C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801B8FD4) = loc0; + (*(SV4_8017B368 *)&D_801B8FCC) = loc1; + D_801B9660 = 1; + D_801B8F5C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018870C[]; + extern s16 D_801B8FD4; + extern s16 D_801B8FD6; + extern s16 D_801B8FD8; + extern s16 D_801B8FCC; + extern s16 D_801B8FCE; + extern s16 D_801B8FD0; + 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_8018870C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018870C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B8FD4; + s16 *p78C = &D_801B8FCC; + *(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_801B8FD6; + v798 = D_801B8FD8; + v78C = *p78C; + v78E = D_801B8FCE; + v790 = D_801B8FD0; + __asm__ __volatile__(""); + D_801B9660 = 1; + D_801B8F5C = 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_801B8F5C; +extern s16 D_801B8FD4; +extern s16 D_801B8FD6; +extern s16 D_801B8FD8; +extern s16 D_801B8FCC; +extern s16 D_801B8FCE; +extern s16 D_801B8FD0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801B8F5C = 0; + D_801B8FD4 = (s16) D_80114F30; + D_801B8FD6 = (s16) D_80114F34; + D_801B8FD8 = (s16) D_80114F38; + D_801B8FCC = (s16) D_80114F24; + D_801B8FCE = (s16) D_80114F28; + D_801B8FD0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801B8FEC; +extern s16 D_801B8FEE; +extern s16 D_801B8FF0; +extern s16 D_801B8FF4; +extern s16 D_801B8FF6; +extern s16 D_801B8FF8; + +void func_8017B824(void) { + D_801B8FEC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801B8FEE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801B8FF0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801B8FF4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801B8FF6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801B8FF8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801B8FEC; +extern s16 D_801B8FEE; +extern s16 D_801B8FF0; +extern s16 D_801B8FF4; +extern s16 D_801B8FF6; +extern s16 D_801B8FF8; + +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_801B8FEC; + D_80114F34 = D_801B8FEE; + D_80114F38 = D_801B8FF0; + D_80114F24 = D_801B8FF4; + D_80114F28 = D_801B8FF6; + D_80114F2C = D_801B8FF8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801B8FD4), src[8..15] -> (*(S8_8017B8E8 *)&D_801B8FCC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801B8FD4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801B8FCC) = ((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_801B8FDC; +extern u16 D_801B8FDE; +extern u16 D_801B8FE0; + +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_801B8F5C; +extern short D_801B8FE4; +extern short D_801B8FE6; +extern short D_801B8FE8; +extern s16 D_801B8FD4; +extern s16 D_801B8FD6; +extern s16 D_801B8FD8; +extern s16 D_801B8FCC; +extern s16 D_801B8FCE; +extern s16 D_801B8FD0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B8FDC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B8FDE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B8FE0); + (*(s16 *)&D_801B8FE4) = buf[0]; + (*(s16 *)&D_801B8FE6) = buf[1]; + (*(s16 *)&D_801B8FE8) = buf[2]; + D_801B8FD4 = D_80114F30 + buf[0]; + D_801B8F5C = 0; + D_801B8FD6 = D_80114F34 + buf[1]; + D_801B8FD8 = D_80114F38 + buf[2]; + D_801B8FCC = D_80114F24 + buf[0]; + D_801B8FCE = D_80114F28 + buf[1]; + D_801B8FD0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801B8F7C; +extern SV4 D_801B8F84; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B8F84) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801B8F7C = 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_801B8F84 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B8F84)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801B8F7C) = 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_801B8F84) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801B8FA4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801B8FA4; + 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_801B8F5C; +extern s16 D_801B9660; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801B8F5C = D_801B8F5C + 1; + if (D_801B8F5C >= 0x1F) { + D_801B9660 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801B8F5C; +extern s16 D_801B9660; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801B8F5C = D_801B8F5C + 1; + if (0x18 < D_801B8F5C) { + func_8012A4BC(); + D_801B9660 = 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_801B8F5C; +extern void (*D_801B8FA0)(void); +extern short D_801B8FE4; +extern short D_801B8FE6; +extern short D_801B8FE8; +extern s16 D_801B9660; + +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_801B8F5C = D_801B8F5C + 1; + if (D_801B8F5C >= 0x19) { + if (D_801B8FA0 != 0) { + (*D_801B8FA0)(); + } else { + D_80114F30 = D_80114F30 + D_801B8FE4; + D_80114F34 = D_80114F34 + D_801B8FE6; + D_80114F38 = D_80114F38 + D_801B8FE8; + D_80114F24 = D_80114F24 + D_801B8FE4; + D_80114F28 = D_80114F28 + D_801B8FE6; + D_80114F2C = D_80114F2C + D_801B8FE8; + func_8012A4BC(); + } + D_801B9660 = 0; + } +} + + + +extern void (*D_801887AC[])(void); + +void func_8017BE60(void *a0) { + D_801887AC[*(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) */ + diff --git a/src/ov_SC03_001/ov_SC03_001_jr_8017A4AC.c b/src/ov_SC03_001/ov_SC03_001_jr_8017A4AC.c index 446aa2e7e..a5517fdbe 100644 --- a/src/ov_SC03_001/ov_SC03_001_jr_8017A4AC.c +++ b/src/ov_SC03_001/ov_SC03_001_jr_8017A4AC.c @@ -2965,2655 +2965,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801EE654; - extern s16 D_801EE656; - extern s16 D_801EE658; - extern s16 D_801EE64C; - extern s16 D_801EE64E; - extern s16 D_801EE650; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801EE654, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801EE656, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801EE658, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801EE64C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801EE64E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801EE650, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801EE5DC; -extern u16 D_801EE65C; -extern u16 D_801EE65E; -extern u16 D_801EE660; -extern s16 D_801EF3F0; - -void func_8017B1D8(void) { - func_8012A418(); - D_801EF3F0 = 0; - D_801EE5DC = 0; - D_801EE65C = D_80126B5E; - D_801EE65E = D_80126B62; - D_801EE660 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80190E4C[]; - extern s16 D_801EE654; - extern s16 D_801EE64C; - 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_80190E4C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80190E4C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801EE654; - s16 *p78C = &D_801EE64C; - *(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_801EF3F0 = 1; - D_801EE5DC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801EE5FC; - extern SV4_8017B368 D_801EE604; - extern s16 D_801EE654; - extern s16 D_801EE64C; - extern u16 D_80190E4C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801EE5FC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801EE604; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80190E4C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80190E4C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801EE654) = loc0; - (*(SV4_8017B368 *)&D_801EE64C) = loc1; - D_801EF3F0 = 1; - D_801EE5DC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80190E4C[]; - extern s16 D_801EE654; - extern s16 D_801EE656; - extern s16 D_801EE658; - extern s16 D_801EE64C; - extern s16 D_801EE64E; - extern s16 D_801EE650; - 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_80190E4C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80190E4C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801EE654; - s16 *p78C = &D_801EE64C; - *(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_801EE656; - v798 = D_801EE658; - v78C = *p78C; - v78E = D_801EE64E; - v790 = D_801EE650; - __asm__ __volatile__(""); - D_801EF3F0 = 1; - D_801EE5DC = 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_801EE5DC; -extern s16 D_801EE654; -extern s16 D_801EE656; -extern s16 D_801EE658; -extern s16 D_801EE64C; -extern s16 D_801EE64E; -extern s16 D_801EE650; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801EE5DC = 0; - D_801EE654 = (s16) D_80114F30; - D_801EE656 = (s16) D_80114F34; - D_801EE658 = (s16) D_80114F38; - D_801EE64C = (s16) D_80114F24; - D_801EE64E = (s16) D_80114F28; - D_801EE650 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801EE66C; -extern s16 D_801EE66E; -extern s16 D_801EE670; -extern s16 D_801EE674; -extern s16 D_801EE676; -extern s16 D_801EE678; - -void func_8017B824(void) { - D_801EE66C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801EE66E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801EE670 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801EE674 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801EE676 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801EE678 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801EE66C; -extern s16 D_801EE66E; -extern s16 D_801EE670; -extern s16 D_801EE674; -extern s16 D_801EE676; -extern s16 D_801EE678; - -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_801EE66C; - D_80114F34 = D_801EE66E; - D_80114F38 = D_801EE670; - D_80114F24 = D_801EE674; - D_80114F28 = D_801EE676; - D_80114F2C = D_801EE678; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801EE654), src[8..15] -> (*(S8_8017B8E8 *)&D_801EE64C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801EE654) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801EE64C) = ((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_801EE65C; -extern u16 D_801EE65E; -extern u16 D_801EE660; - -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_801EE5DC; -extern short D_801EE664; -extern short D_801EE666; -extern short D_801EE668; -extern s16 D_801EE654; -extern s16 D_801EE656; -extern s16 D_801EE658; -extern s16 D_801EE64C; -extern s16 D_801EE64E; -extern s16 D_801EE650; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801EE65C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801EE65E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801EE660); - (*(s16 *)&D_801EE664) = buf[0]; - (*(s16 *)&D_801EE666) = buf[1]; - (*(s16 *)&D_801EE668) = buf[2]; - D_801EE654 = D_80114F30 + buf[0]; - D_801EE5DC = 0; - D_801EE656 = D_80114F34 + buf[1]; - D_801EE658 = D_80114F38 + buf[2]; - D_801EE64C = D_80114F24 + buf[0]; - D_801EE64E = D_80114F28 + buf[1]; - D_801EE650 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801EE5FC; -extern SV4 D_801EE604; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801EE604) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801EE5FC = 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_801EE604 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801EE604)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801EE5FC) = 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_801EE604) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801EE624[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801EE624; - 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_801EE5DC; -extern s16 D_801EF3F0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801EE5DC = D_801EE5DC + 1; - if (D_801EE5DC >= 0x1F) { - D_801EF3F0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801EE5DC; -extern s16 D_801EF3F0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801EE5DC = D_801EE5DC + 1; - if (0x18 < D_801EE5DC) { - func_8012A4BC(); - D_801EF3F0 = 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_801EE5DC; -extern void (*D_801EE620)(void); -extern short D_801EE664; -extern short D_801EE666; -extern short D_801EE668; -extern s16 D_801EF3F0; - -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_801EE5DC = D_801EE5DC + 1; - if (D_801EE5DC >= 0x19) { - if (D_801EE620 != 0) { - (*D_801EE620)(); - } else { - D_80114F30 = D_80114F30 + D_801EE664; - D_80114F34 = D_80114F34 + D_801EE666; - D_80114F38 = D_80114F38 + D_801EE668; - D_80114F24 = D_80114F24 + D_801EE664; - D_80114F28 = D_80114F28 + D_801EE666; - D_80114F2C = D_80114F2C + D_801EE668; - func_8012A4BC(); - } - D_801EF3F0 = 0; - } -} - - - -extern void (*D_80190EEC[])(void); - -void func_8017BE60(void *a0) { - D_80190EEC[*(u8 *)((s32)a0 + 0x4)](); -} - - - -extern void (*D_80190F8C[])(void); - -void func_8017BE9C(void *a0) { - D_80190F8C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80190F94[])(void); - -void func_8017BED8(void *a0) { - D_80190F94[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80190F9C[])(void); - -void func_8017BF14(void *a0) { - D_80190F9C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017BF50); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017C094); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017C100); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017C1AC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017C1EC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017C2B0); - - -extern void (*D_80190FBC[])(void); - -void func_8017C338(void *a0) { - D_80190FBC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017C374); - -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); - } -} - - - -extern void (*D_80190FC4[])(void); - -void func_8017C5CC(void *a0) { - D_80190FC4[*(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_80190FB0; - -void func_8017C608(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_80190FB0, 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; - } -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017C710); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017D5F0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017D734); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017D8A8); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017DA48); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017DB6C); - -void func_8017DC48(void) { -} - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017DC50); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017DCE4); - - -extern void (*D_8019106C[])(void); - -void func_8017DDEC(void *a0) { - D_8019106C[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32, s32); -extern u32 D_8019105C; - -void func_8017DE28(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_8019105C | 0x40000000; - *(s16*)((u8*)(*(s32*)((u8*)arg0 + 0x20)) + 0x12) = *(u16*)((u8*)arg0 + 0xFC); - } -} - - -DEFINE_func_8017DEA4() /* dedup: shared engine-core @0x8017DEA4 (src/shared) */ - - -extern void (*D_801910A4[])(void); - -void func_8017DEAC(void *a0) { - D_801910A4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017DEE8); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017DF78); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017E1B4); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017E204); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017E2C0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017E3D8); - - -// @class: regalloc-order -// @stuck: none — MATCH - -extern u32 D_801EE918; -extern u16 D_801910AC[]; -extern u16 D_801EE91C[]; -extern s32 D_801910CC; - -extern void func_800183E0(s32 a0); - -void func_8017E408(void) -{ - u32 i; - u16 *p; - u32 base; - u16 *tbl; - - i = 0; - tbl = D_801910AC; - base = D_801EE918 >> 8; - p = D_801EE91C; - do { - *p = tbl[(base + i) & 0xF] | 0x8000; - i = i + 1; - p = p + 1; - } while (i < 0x10); - func_800183E0((s32)&D_801910CC); - D_801EE918 = D_801EE918 + 0x100; -} - - - -// @class: plumbing -// @stuck: none — MATCH (simple two-call wrapper, $s0 holds param across calls by default regalloc) - -extern void func_8017E824(void *arg0); -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_800167B8(s32 a0); - -s32 func_8017E494(s32 param_1) -{ - ((void (*)(void *, s32))func_8016EDEC)(func_8017E824, 0x1000000); - func_800167B8(0); - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - return 0; -} - - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017E4E4(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017E508); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017E578); - -extern void func_800D1EBC(void); - void func_8017E628(void) { - func_800D1EBC(); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017E648); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017E69C); - - -extern void (*D_801910EC[])(void); - -void func_8017E720(void *a0) { - D_801910EC[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void (*D_801910F4[])(void); - -void func_8017E75C(void *a0) { - D_801910F4[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void (*D_80191100[])(void); - -void func_8017E798(void *a0) { - D_80191100[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void (*D_8019110C[])(void); - -void func_8017E7D4(void *a0) { - D_8019110C[*(u8 *)((s32)a0 + 0x15)](); -} - - -extern s32 D_80127050; - void func_8017E810(void) { - D_80127050 = 1; - } - - - -extern void (*D_801913C0[])(void); - -void func_8017E824(void *a0) { - D_801913C0[*(u8 *)((s32)a0 + 0x214)](); -} - - -void func_8017E860(s32 *a0) { - *(u8 *)((s32)a0 + 0x214) += 1; - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017E874); - - -extern void (*D_801913C8[])(void); - -void func_8017E8AC(void *a0) { - D_801913C8[*(u8 *)((s32)a0 + 0x214)](); -} - - -void func_8017E8E8(u8 *a0) { - *(s8 *)(a0 + 0x214) += 1; - } - - -extern void func_8016F0E4(void); - void func_8017E8FC(void) { - ((s32 (*)(void))func_8016F0E4)(); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017E91C); - - -extern void (*D_801913D0[])(void); - -void func_8017E9E0(void *a0) { - D_801913D0[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017EA1C); - -void func_8017EA50(u8 *a0) { - *(s8 *)(a0 + 0xa0) = 0; - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017EA58); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017EB98); - -extern void func_80187778(s32 *a0, s32 a1); - extern short D_801913D4; - void func_8017ED8C(void *a0) { - *(short *)((char *)a0 + 0x2) = 2; - func_80187778(a0, &D_801913D4); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017EDB8); - -extern void (*D_801914A8[])(void); - -void func_8017EEA8(void *a0) { - D_801914A8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017EEE4); - -extern s32 func_800D0EC4(void); - s32 func_8017EF10(void) { - return (func_800D0EC4() == 0); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017EF30); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017EFD4); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017F058); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017F0EC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017F13C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017F1F0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017F258); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017F2AC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017F368); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017F750); - - -extern void (*D_801918FC[])(void); - -void func_8017F7C8(void *a0) { - D_801918FC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017F804); - - -extern void (*D_80191928[])(void); - -void func_8017F920(void *a0) { - D_80191928[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80191930[])(void); - -void func_8017F95C(void *a0) { - D_80191930[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80191940[])(void); - -void func_8017F998(void *a0) { - D_80191940[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80191950[])(void); - -void func_8017F9D4(void *a0) { - D_80191950[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_8017FA10(void) { -} - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017FA18); - - -extern void (*D_80191960[])(void); - -void func_8017FBC4(void *a0) { - D_80191960[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017FC00); - -extern s32 D_801915FC; -extern s32 D_801EEAE8; -extern void func_8017F1F0(s32 arg0, s32 arg1); - -void func_8017FD5C(void) { - D_801EEAE8 = &D_801915FC; - func_8017F1F0(0x474, 0x4B0); -} - - -extern s32 D_80191634; -extern s32 D_801EEAE8; -extern void func_8017F1F0(s32 arg0, s32 arg1); - -void func_8017FD90(void) { - D_801EEAE8 = &D_80191634; - func_8017F1F0(0x474, 0x4EC); -} - - -extern s32 D_8019166C; -extern s32 D_801EEAE8; -extern void func_8017F1F0(s32 arg0, s32 arg1); - -void func_8017FDC4(void) { - D_801EEAE8 = &D_8019166C; - func_8017F1F0(0x474, 0x4B0); -} - - -extern s32 D_80191694; -extern s32 D_801EEAE8; -extern void func_8017F1F0(s32 arg0, s32 arg1); - -void func_8017FDF8(void) { - D_801EEAE8 = &D_80191694; - func_8017F1F0(0x474, 0x4B0); -} - - - -extern s32 D_801916CC; -extern s32 D_801EEAE8; -extern void func_8017F1F0(s32 arg0, s32 arg1); - -void func_8017FE2C(void) { - D_801EEAE8 = &D_801916CC; - func_8017F1F0(0x474, 0x528); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017FE60); - - -extern s32 D_80191744; -extern s32 D_801EEAE8; -extern void func_8017F1F0(s32 arg0, s32 arg1); - -void func_8017FED4(void) { - D_801EEAE8 = &D_80191744; - func_8017F1F0(0x474, 0x1A4); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017FF08); - - -extern s32 D_8019179C; -extern s32 D_801EEAE8; -extern void func_8017F1F0(s32 arg0, s32 arg1); - -void func_8017FF54(void) { - D_801EEAE8 = &D_8019179C; - func_8017F1F0(0x12c, 0x1A4); -} - - - -extern s32 D_801917EC; -extern s32 D_801EEAE8; -extern void func_8017F1F0(s32 arg0, s32 arg1); - -void func_8017FF88(void) { - D_801EEAE8 = &D_801917EC; - func_8017F1F0(0x474, 0x4B0); -} - - - -extern s32 D_8019184C; -extern s32 D_801EEAE8; -extern void func_8017F1F0(s32 arg0, s32 arg1); - -void func_8017FFBC(void) { - D_801EEAE8 = &D_8019184C; - func_8017F1F0(0x474, 0x4B0); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8017FFF0); - - -extern s32 D_80191894; -extern s32 D_801EEAE8; -extern void func_8017F1F0(s32 arg0, s32 arg1); - -void func_8018003C(void) { - D_801EEAE8 = &D_80191894; - func_8017F1F0(0x564, 0x1A4); -} - - -s32 func_80180070(void) { - return -1; - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180078); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180134); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801801E0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180224); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180340); - - -extern void func_8012B414(int a0); - void func_801803DC(s32 arg0) { - s32 temp_v1 = *(s32 *)(arg0 + 0x20); - *(s16 *)(temp_v1 + 0x14) += 0x8; - ((void (*)(void))func_8012B414)(); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180410); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180488); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801804D0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180574); - -void func_801805EC(void *a0) { - *(short *)((char *)a0 + 0x2) = 0x2; - } - - - -extern void (*D_80191978[])(void); - -void func_801805F8(void *a0) { - D_80191978[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180634); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018069C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801806E8); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180728); - -void func_80180770(void *a0) { - *(short *)((char *)a0 + 0x2) = 0x2; - } - - -extern void (*D_8019198C[])(void); - -void func_8018077C(void *a0) { - D_8019198C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801807B8); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180820); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180884); - -void func_801808F0(void *a0) { - *(short *)((char *)a0 + 0x2) = 0x2; - } - - - -extern void (*D_801919A0[])(void); - -void func_801808FC(void *a0) { - D_801919A0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180938); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018098C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801809D0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180A10); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180A58); - - -extern void (*D_80191B0C[])(void); - -void func_80180A88(void *a0) { - D_80191B0C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180AC4); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180B1C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180B5C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180BCC); - - -extern void func_8012A828(s32 a0, s32 a1); - extern short D_801C3B38; - void func_80180C3C(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 3; - func_8012A828((int)arg0, (int)&D_801C3B38); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180C68); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180CD4); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180D34); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180D5C); - - -extern s32 func_80029178(s32 arg); - extern void func_80029124(s32, s32); - s32 func_80180D9C(void) { - if ((func_80029178(0x110) & 0xFF) == 0) { - ((void (*)(void *, s32))func_80029124)((void *)0x110, 1); - return 1; - } - return 0; - } - - -extern s32 func_80180AC4(s32 a0); -extern s32 func_80180B5C(void *a0); -void func_80180DD8(int param_1) -{ - if (((int (*)(void))func_80180AC4)() != 0) { - ((void (*)(int))func_80180B5C)(param_1); - } -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180E10); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180E68); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180ECC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180FA0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80180FF8); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80181078); - -void func_801810EC(void *a0) { - *(short *)((char *)a0 + 0x2) = 0x2; - } - - - -extern void (*D_80191B30[])(void); - -void func_801810F8(void *a0) { - D_80191B30[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80181134); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018119C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80181200); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018126C); - -extern void func_80187778(s32 *a0, s32 a1); - extern short D_80191B3C; - void func_80181298(short *param_1) { - *(short *)((char *)param_1 + 0x2) = 0x3; - func_80187778(param_1, &D_80191B3C); - } - - - -extern void (*D_80191C08[])(void); - -void func_801812C4(void *a0) { - D_80191C08[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80181300); - -extern s32 func_8014CB1C(void); - int func_80181374(void) { - return func_8014CB1C() != 0; - } - - - -extern void func_8014B2A8(void); -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_80181394(void) { - func_8014B2A8(); - ((s32 (*)(s32, s32))func_8002D4C8)(0x464, 0); -} - - -extern void func_80178CBC(s32 *a0, s32 a1); - extern short D_80191BC0; - void func_801813C0(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x5; - *(short *)((char *)a0 + 0x34) = 0; - func_80178CBC((s32 *)a0, (s32)&D_80191BC0); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801813F0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80181458); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801814C4); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018153C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801815A0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018166C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801816D8); - - -extern void (*D_80191C20[])(void); - -void func_801817C4(void *a0) { - D_80191C20[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80181800); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80181864); - -extern void func_80187778(s32 *a0, s32 a1); - extern short D_80191C28; - void func_801818E0(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x2; - func_80187778((s32 *)a0, (s32)&D_80191C28); - } - - - -extern void (*D_80191C90[])(void); - -void func_8018190C(void *a0) { - D_80191C90[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80181948); - -void func_80181988(void *a0) { - *(short *)((char *)a0 + 0x2) = 4; - *(short *)((char *)a0 + 0x34) = 0; - *(int *)((char *)a0 + 0x1c) = 0x3c; - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801819A0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801819E0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80181A18); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80181A68); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80181B40); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80181BC0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80181C38); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80181CAC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80181D04); - -extern void func_80187778(s32 *a0, s32 a1); - extern short D_80191CA4; - void func_80181D8C(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x5; - func_80187778((s32 *)a0, (s32)&D_80191CA4); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80181DB8); - - -extern void (*D_80191D3C[])(void); - -void func_80181ED4(void *a0) { - D_80191D3C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80181F10); - -extern void func_80178CBC(s32 *a0, s32 a1); - extern short D_80191CDC; - void func_80181F74(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x7; - func_80178CBC(a0, &D_80191CDC); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80181FA0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80181FE0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182058); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182148); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801821C0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182254); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182294); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182304); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182398); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182400); - -extern void func_80178CBC(s32 *a0, s32 a1); - extern short D_80191D14; - void func_80182450(short *param) { - param[1] = 0xB; - ((void (*)(s32, s32))func_80178CBC)((int)param, (int)&D_80191D14); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018247C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801824DC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182548); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801825A8); - -extern void func_80187778(s32 *a0, s32 a1); - extern short D_80191D6C; - void func_8018260C(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x7; - func_80187778((s32 *)a0, (s32)&D_80191D6C); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182638); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018268C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801826B8); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182704); - - -extern void (*D_80191E0C[])(void); - -void func_80182824(void *a0) { - D_80191E0C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182860); - -extern s32 D_801DD064; -extern s32 D_801D6014; - -void func_80182898(void) { - D_801D6014 = D_801DD064; -} - - -extern s32 D_801EEAF8; -extern s32 D_801D6014; - -void func_801828B0(void) { - *(s32 *)&D_801D6014 = D_801EEAF8; -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801828C8); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182928); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182968); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801829A8); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182A34); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182A74); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182AEC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182B78); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182BB8); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182CC4); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182D04); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182DFC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182E70); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182EE4); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80182F3C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183168); - -extern void func_80187778(s32 *a0, s32 a1); - extern short D_80191E38; - void func_801831F0(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x5; - func_80187778((s32 *)a0, (s32)&D_80191E38); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018321C); - - -extern void (*D_801922F0[])(void); - -void func_8018333C(void *a0) { - D_801922F0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183378); - -extern void func_80178CBC(s32 *a0, s32 a1); - extern short D_80191E70; - void func_801833DC(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x7; - func_80178CBC((s32 *)a0, (s32)&D_80191E70); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183408); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183448); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801834C0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801835B0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183628); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801836BC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183708); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183778); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183804); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018386C); - -extern void func_80178CBC(s32 *a0, s32 a1); - extern short D_801922C8; - void func_801838BC(short *a0) { - *(short *)((char *)a0 + 0x2) = 0xB; - func_80178CBC((s32 *)a0, (s32)&D_801922C8); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801838E8); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183948); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801839BC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183A14); - - -extern void (*D_80192418[])(void); - -void func_80183A88(void *a0) { - D_80192418[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183AC4); - - -extern s32 D_801DD950; -extern s32 D_801DAAAC; - -void func_80183AFC(void) { - D_801DAAAC = D_801DD950; -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183B14); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183B74); - - -extern s32 func_80029178(s32 arg); - extern void func_80029124(s32, s32); - s32 func_80183BB4(void) { - if ((func_80029178(0x113) & 0xFF) == 0) { - ((void (*)(void *, s32))func_80029124)((void *)0x113, 1); - return 1; - } - return 0; - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183BF0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183C30); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183CC8); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183D08); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183D78); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183E14); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183EE4); - -extern s32 D_80192434; -extern void func_80187778(s32 *a0, s32 a1); - -void func_80183F58(void *arg0) { - *(s16 *)((char *)arg0 + 0x2) = 0x2; - func_80187778(arg0, &D_80192434); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183F84); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80183FF4); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80184054); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801840B8); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801840E4); - - -extern void (*D_80192510[])(void); - -void func_80184210(void *a0) { - D_80192510[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_80178CBC(s32 *a0, s32 a1); - extern short D_8019246C; - void func_8018424C(short *a0) { - *(short *)((char *)a0 + 0x2) = 4; - ((void (*)(s32, s32))func_80178CBC)((int)a0, (int)&D_8019246C); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80184278); - -extern void func_80178CBC(s32 *a0, s32 a1); - extern short D_801924B8; - void func_801842A4(short *param) { - param[1] = 0xC; - ((void (*)(s32, s32))func_80178CBC)((int)param, (int)&D_801924B8); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801842D0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80184310); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80184350); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801843DC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018444C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80184498); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018451C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018456C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801845B8); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801845FC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80184648); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801846A0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801846F0); - - -extern void (*D_80192544[])(void); - -void func_80184748(void *a0) { - D_80192544[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_80184784(void *a0) { - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80184794); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801847D0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80184840); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801848A0); - - -extern void (*D_80192624[])(void); - -void func_80184900(void *a0) { - D_80192624[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_80178CBC(s32 *a0, s32 a1); - extern short D_801925AC; - void func_8018493C(short *param) { - param[1] = 0x5; - ((void (*)(s32, s32))func_80178CBC)((int)param, (int)&D_801925AC); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80184968); - - -extern s32 func_80029178(s32 arg); - extern void func_80029124(s32, s32); - s32 func_801849E0(void) { - if ((func_80029178(0x115) & 0xFF) == 0) { - ((void (*)(void *, s32))func_80029124)((void *)0x115, 1); - return 1; - } - return 0; - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80184A1C); - -extern s32 func_80187A64(s32); - extern void func_80184840(s32); - void func_80184A8C(s32 arg0) { - if (func_80187A64(arg0)) { - func_80184840(arg0); - } - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80184AC4); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80184B60); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80184BB0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80184BF4); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80184CF0); - -extern void func_80187778(s32 *a0, s32 a1); - extern short D_80192640; - void func_80184D64(short *param_1) { - *(short *)((char *)param_1 + 2) = 1; - func_80187778((s32 *)param_1, (s32)&D_80192640); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80184D90); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80184DDC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80184F18); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80184F64); - - -extern void (*D_80192828[])(void); - -void func_801850A0(void *a0) { - D_80192828[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801850DC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018511C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018515C); - - -extern s32 func_80029178(s32 arg); - extern void func_80029124(s32, s32); - s32 func_8018519C(void) { - if ((func_80029178(0x116) & 0xFF) == 0) { - ((void (*)(void *, s32))func_80029124)((void *)0x116, 1); - return 1; - } - return 0; - } - - - -extern void func_80178CBC(s32 *a0, s32 a1); - extern short D_801926F8; - void func_801851D8(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x8; - *(short *)((char *)a0 + 0x34) = 0; - func_80178CBC((s32 *)a0, (s32)&D_801926F8); - } - - -extern void func_80178CBC(s32 *a0, s32 a1); -extern short D_80192740; - -void func_80185208(void *a0) { - *(short *)((char *)a0 + 0x2) = 0xe; - *(short *)((char *)a0 + 0x34) = 0; - ((void (*)(int, int))func_80178CBC)((int)a0, (int)&D_80192740); -} - - - -extern void func_80178CBC(s32 *a0, s32 a1); - extern short D_80192748; - void func_80185238(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x4; - *(short *)((char *)a0 + 0x34) = 0; - func_80178CBC((s32 *)a0, (s32)&D_80192748); - } - - -extern void func_80178CBC(s32 *a0, s32 a1); -extern short D_801927B8; - -void func_80185268(short *a0) { - *(short *)((char *)a0 + 0x2) = 0xB; - *(short *)((char *)a0 + 0x34) = 0; - ((void (*)(void *, s32))func_80178CBC)(a0, &D_801927B8); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80185298); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801852E4); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80185334); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80185380); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801853D0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018541C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80185474); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801854D0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80185528); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801855CC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801856A8); - -extern void func_80187778(s32 *a0, s32 a1); - extern short D_80192864; - void func_80185874(short *param_1) { - *(short *)((char *)param_1 + 2) = 0x2; - ((void (*)(int, int))func_80187778)((int)param_1, (int)&D_80192864); - } - - -extern void func_80187778(s32 *a0, s32 a1); - extern short D_80192864; - void func_801858A0(short *param_1) { - param_1[1] = 0x7; - func_80187778(param_1, &D_80192864); - } - - -extern void func_80187778(s32 *a0, s32 a1); - extern short D_80192864; - void func_801858CC(short *param_1) { - *(short *)((char *)param_1 + 2) = 0x12; - func_80187778((s32 *)param_1, (int)&D_80192864); - } - - -extern void func_80187778(s32 *a0, s32 a1); - extern short D_80192864; - void func_801858F8(short *param_1) { - *(short *)((char *)param_1 + 0x2) = 0x17; - func_80187778(param_1, &D_80192864); - } - - -extern void func_80187778(s32 *a0, s32 a1); - extern short D_80192864; - void func_80185924(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x1F; - func_80187778((s32 *)a0, (s32)&D_80192864); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80185950); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801859AC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80185B54); - - -extern void (*D_801928D8[])(void); - -void func_80185C60(void *a0) { - D_801928D8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80185C9C); - - -extern void (*D_80192968[])(void); - -void func_80185CD8(void *a0) { - D_80192968[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_80128C98(s32 arg); - extern void func_801EF734(void *a0); - void func_80185D14(void *a0) { - if (func_80128C98(1)) { - ((void (*)(void *))func_801EF734)(a0); - } - } - - - -extern s32 func_80128C98(s32 arg); - extern void func_801EF904(void *a0); - void func_80185D50(void *a0) { - if (func_80128C98(1)) { - ((void (*)(void *))func_801EF904)(a0); - } - } - - - -extern s32 func_80128C98(s32 arg); - extern void func_801EF46C(void *a0); - void func_80185D8C(void *a0) { - if (func_80128C98(1)) { - ((void (*)(void *))func_801EF46C)(a0); - } - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80185DC8); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80185E44); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80185EC8); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80185F3C); - -void func_80185F9C(void) { -} - - -void func_80185FA4(void *a0) { - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 2; - } - - - -extern s32 func_80128C98(s32 arg); - extern void func_801EF58C(void *a0); - void func_80185FB4(void *a0) { - if (func_80128C98(1)) { - ((void (*)(void *))func_801EF58C)(a0); - } - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80185FF0); - -extern s32 func_80128C98(s32 arg); -extern void func_801EF624(void *a0); - -void func_80186064(void *a0) { - if (func_80128C98(1)) { - ((void (*)(void *))func_801EF624)(a0); - } -} - - -extern void func_80178CBC(s32 *a0, s32 a1); - extern short D_80192888; - void func_801860A0(short *param_1) { - param_1[1] = 0x1d; - ((void (*)(s32, s32))func_80178CBC)((int)param_1, (int)&D_80192888); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801860CC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80186124); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018617C); - -extern void func_80187778(s32 *a0, s32 a1); - extern short D_80192970; - void func_80186288(short *param_1) { - param_1[1] = 2; - func_80187778(param_1, &D_80192970); - } - - - -extern void (*D_801929D4[])(void); - -void func_801862B4(void *a0) { - D_801929D4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801862F0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018631C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018640C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018644C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80186498); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801864E8); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80186568); - -extern void func_80187778(s32 *a0, s32 a1); - extern short D_801929E8; - void func_801865E0(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x2; - func_80187778((s32 *)a0, (s32)&D_801929E8); - } - - - -extern void (*D_80192A50[])(void); - -void func_8018660C(void *a0) { - D_80192A50[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_80178CBC(s32 *a0, s32 a1); - extern short D_80192A18; - void func_80186648(short *param) { - param[1] = 0x4; - ((void (*)(s32, s32))func_80178CBC)((int)param, (int)&D_80192A18); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80186674); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801866B4); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80186700); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80186758); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801867A8); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80186828); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80186890); - - -extern void (*D_80192AE8[])(void); - -void func_801868E0(void *a0) { - D_80192AE8[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80192B10[])(void); - -void func_8018691C(void *a0) { - D_80192B10[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_80178CBC(s32 *a0, s32 a1); -extern short D_80192AC8; - -void func_80186958(short *param) { - param[1] = 0x3; - ((void (*)(s32, s32))func_80178CBC)((int)param, (int)&D_80192AC8); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80186984); - -extern s32 func_80029504(void); - extern void func_80186890(s32 arg0); - void func_801869C8(s32 arg0) { - if ((u32)func_80029504() >= 0x1E) { - func_80186890(arg0); - } - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80186A04); - -void func_80186A6C(void) { -} - -void func_80186A74(void) { -} - -void func_80186A7C(void) { -} - -void func_80186A84(void) { -} - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80186A8C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80186B54); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80186BEC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80186C54); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80186CD0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80186D18); - - -extern void func_8012B2CC(s32 arg); - void func_80186D7C(void *arg0) { - s32 *p = *(s32 **)((char *)arg0 + 0x20); - *(s16 *)((char *)arg0 + 0x2) = 2; - *(s16 *)((char *)p + 0x12) = -0x600; - func_8012B2CC((s32)arg0); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80186DAC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80186DDC); - - -extern void (*D_801C063C[])(void); - -void func_80186F4C(void *a0) { - D_801C063C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80186F88); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80187004); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80187074); - -extern void func_8002D4C8(s32 arg0, s32 arg1); - void func_8018708C(void) { - func_8002D4C8(0x7E0, 0); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801870B0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801871E4); - -void func_8018724C(void) { -} - -void func_80187254(void) { -} - -void func_8018725C(void *a0) { - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; - } - - -void func_8018726C(void *a0) { - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 2; - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018727C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80187318); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80187344); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80187370); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018739C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80187420); - -extern s32 func_80187420(s32 arg); -extern void func_80187584(void *a0); - -void func_80187550(void *a0) { - *(s32 *)((char *)a0 + 0xe0) = func_80187420((s32)a0); - func_80187584(a0); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80187584); - - -extern short D_800BA2BA; - s32 func_801875C4(s32 arg0) { - return *(short *)((char *)&D_800BA2BA + (*(short *)(*(s32 *)(arg0 + 0xd0) + 0x10) << 2)); - } - - - -extern void (*D_801C0B00[])(void); - -void func_801875EC(void *a0) { - D_801C0B00[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_80187628(void) { -} - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80187630); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018766C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80187690); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801876E8); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80187750); - -void func_80187770(void *a0) { - *(s16 *)((s32)a0 + 0x5C) = 0; - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80187778); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801877C0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018781C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80187890); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80187904); - - -extern s32 func_80029504(void); - extern void func_80029514(s32 arg0); - void func_80187960(void) { - if (((s32 (*)(void))func_80029504)() == 0x3A2) { - ((void (*)(s32))func_80029514)(0x3AC); - } - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80187994); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80187A64); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80187C2C); - - -extern void (*D_801C0B20[])(void); - -void func_80187C74(void *a0) { - D_801C0B20[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_80187CB0(void) { -} - -void func_80187CB8(void) { -} - -void func_80187CC0(void) { -} - -void func_80187CC8(void) { -} - -void func_80187CD0(void) { -} - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80187CD8); - -void func_80187D1C(void) { -} - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80187D24); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80187DAC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80187F84); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80188124); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801881A0); - -extern s32 func_801889AC(void); - void func_8018826C(void) { - func_801889AC(); - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018828C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018835C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801883C4); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80188438); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80188498); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80188518); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80188570); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801885D0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80188618); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80188668); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801886A0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018872C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801887D0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80188830); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801889AC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801889E0); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80188A14); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80188A78); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80188AEC); - - -extern void (*D_801C0E1C[])(void); - -void func_80188B44(void *a0) { - D_801C0E1C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80188B80); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80188BFC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80188D1C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80188D68); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80188E74); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80188ED0); - -extern s16 D_801EEB10; - s32 func_80188F10(void) { - return D_801EEB10; - } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80188F20); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80188F6C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80188FDC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_80189030); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_801898E4); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018A270); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018A3A8); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018ABAC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018AEE8); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018B238); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018B478); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018B644); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018B8DC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018BCD4); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018C000); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018C89C); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018C8D4); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018C914); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018C960); - - -extern void (*D_801EB364[])(void); - -void func_8018CB74(void *a0) { - D_801EB364[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: iv-combine -// @stuck: none — MATCH (49 ins). gcc folds (v0+0x1800)-0x1000 -> v0+0x800; re-tie barrier on the WORKING reg v0 (NOT a saved local) forces the target chain v0=base+0x1800; s2=copy; v0-=0x1000; s1=v0<<5. NO register pins (pins re-trigger the lhu/lh dual-load CSE collapse and shrink the frame; natural alloc gives s0-s3 + frame 0x38). -extern int rand(void); -extern u8 *func_8012913C(s32 a0); - -extern unsigned short D_801EB344[]; - -void func_8018CBB0(s32 param_1, s32 param_2) -{ - int s3; - unsigned short s0; - int s2; - int s1; - int v0; - int iVar3; - - s0 = D_801EB344[*(short *)(param_1 + 0xfc)]; - s3 = param_2; - if (((short *)D_801EB344)[*(short *)(param_1 + 0xfc)] == 0) { - *(short *)(param_1 + 0xfc) = 0; - s0 = D_801EB344[0]; - } - *(short *)(param_1 + 0xfc) = *(short *)(param_1 + 0xfc) + 1; - v0 = (rand() & 3) * 0x400 + 0x1800; - s2 = v0; - __asm__ __volatile__("" : "=r"(v0) : "0"(v0)); - s1 = (v0 - 0x1000) * 0x20; - iVar3 = ((int (*)(int))func_8012913C)(4); - if (iVar3 != 0) { - *(short *)(iVar3 + 6) = s3; - *(short *)(iVar3 + 0xa) = s0; - *(short *)(iVar3 + 0xe) = 0; - *(int *)(iVar3 + 0x10) = s1; - *(short *)(iVar3 + 0x2c) = s2; - } -} - - - -extern void (*D_801EB378[])(void); - -void func_8018CC74(void *a0) { - D_801EB378[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH - -extern void func_8018CBB0(s32, s32); -extern s32 func_8012AD50(void *a0); - -void func_8018CCB0(int param_1) { - short uVar1; - - *(short *)(param_1 + 0xfc) = 0; - *(int *)(param_1 + 0x1c) = 1; - uVar1 = *(unsigned short *)(param_1 + 0x70) & 7; - *(short *)(param_1 + 0xfe) = (uVar1 < 2) ? 0x1e : 0xf; - if (uVar1 != 0) { - func_8018CBB0(param_1, -0x80); - func_8018CBB0(param_1, -0x30); - func_8018CBB0(param_1, 0x20); - func_8018CBB0(param_1, 0x70); - func_8018CBB0(param_1, 0xc0); - } - if (1 < uVar1) { - func_8018CBB0(param_1, -0x58); - func_8018CBB0(param_1, -0x8); - func_8018CBB0(param_1, 0x48); - func_8018CBB0(param_1, 0x98); - func_8018CBB0(param_1, 0xe8); - } - ((void (*)(int))func_8012AD50)(param_1); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (param_1 naturally lands in $s0 across the call, mirrors sibling func_80184AEC) - -extern s32 func_8012BEE8(s32 a0); -extern void func_8018CBB0(s32, s32); - -void func_8018CD98(s32 arg0) { - if (func_8012BEE8(arg0)) { - *(s32 *)(arg0 + 0x1c) = (s32)*(s16 *)(arg0 + 0xfe); - func_8018CBB0(arg0, 0x110); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (expected) -extern void func_8001CB00(int param_1, void *src, int len, int n); - -extern unsigned char D_801EB36C; - -void func_8018CDD8(int param_1) -{ - unsigned short uVar1; - int iVar2; - - iVar2 = *(int *)(param_1 + 0x20); - func_8001CB00(iVar2, &D_801EB36C, 0x280, 0x100); - *(unsigned int *)(iVar2 + 4) = *(unsigned int *)(iVar2 + 4) | 0x70000000; - uVar1 = *(unsigned short *)(param_1 + 0x2c); - *(unsigned char *)(iVar2 + 0x27) = 0x9e; - *(unsigned short *)(iVar2 + 0x2c) = 4; - *(unsigned short *)(iVar2 + 0x1c) = uVar1; - *(unsigned short *)(iVar2 + 0x1a) = uVar1; - *(unsigned short *)(iVar2 + 0x18) = uVar1; - *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + 1; - return; -} - - - -extern void func_801292C8(u8 *a0); - -void func_8018CE60(u8 *a0) { - *(s32 *)(a0 + 0x4) = *(s32 *)(a0 + 0x4) - *(s32 *)(a0 + 0x10); - if (*(s16 *)(a0 + 0x6) < -0x110) { - func_801292C8(a0); - } -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018CEA8); - - -extern void (*D_801EB48C[])(void); - -void func_8018CF54(void *a0) { - D_801EB48C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018CF90); - -void func_8018CFF4(void) { -} - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018CFFC); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018D048); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018D088); - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017A4AC", func_8018D0E4); - - - diff --git a/src/ov_SC03_001/ov_SC03_001_jr_8017AE2C.c b/src/ov_SC03_001/ov_SC03_001_jr_8017AE2C.c new file mode 100644 index 000000000..b28379315 --- /dev/null +++ b/src/ov_SC03_001/ov_SC03_001_jr_8017AE2C.c @@ -0,0 +1,5551 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018FA44; +extern u8 D_8018F9B4; +extern u8 D_8018F990; +extern u8 D_8018F96C; +extern u8 D_8018FA20; +extern u8 D_8018F9FC; +extern u8 D_8018F9D8; +extern u8 D_8018F948; +extern void func_80145934(void); +extern u8 D_8018FAD4; +extern u8 D_8018FAB0; +extern u8 D_8018FA8C; +extern u8 D_8018FA68; +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_8018EECC[]; +extern unsigned char D_8018EEFC[]; +extern unsigned char D_8018EF4C[]; +extern unsigned char D_8018EF7C[]; +extern unsigned char D_8018EFAC[]; +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(void); +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_8018EFFC[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018F0C4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018F14C[]; +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_8018F154; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801ED4D8; +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_801ED4DC; +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_8018F184; +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 void 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_8018F22C[])(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_8018F250[])(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_8018F240; +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_8018F264[])(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_8018F270[]; +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_8018F280[])(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_8018F298[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018F288; +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_8018F2AC[])(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_8018F2C8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018F2B8; +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_8018F2DC[])(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_8018F2F0[])(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_8018F304; +extern void (*D_8018F32C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018F30C; +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_8018F378[])(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_8018F37C[])(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(void *a0); +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_8018F7E0[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018F7F0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801ED510; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018F818[])(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_8018F7F8; +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_8018F808; +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_8018F858[])(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_8018F860[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018F82C; +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_8018F86C[])(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_8018F83C; +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_801ED518; +extern s32 D_801ED524; +extern s32 D_801ED528; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018F8A8[])(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_8018F87C[]; +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_801ED520; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018FAF8[])(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_8018F918[]; +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_8018FB9C[])(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_8018FCF0[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018FB0C; +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_8018FCF8[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018FB1C; +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_8018FB3C; +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_8018FD00[])(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(void); +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_8018FD28[])(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_8018FD34[])(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_8018FBA8[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018FDD8; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018EEBC[]; +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_8018FDEC[]; +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_8018FE28[]; +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_8018FE70; +extern u16 D_8018FE72; +extern u16 D_8018FE74; +extern s32 D_8018FE78; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018FE80; +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_8018FB8C; +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_8018FF04[]; +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_8018FFB4[])(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_8018FFE4[]; +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_80190048; +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_801ED530[]; +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_8019006C[])(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_801ED588[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_801900B4[])(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_801900A4; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801EC888[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_801900BC[])(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_80190110[])(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_801900D8; +extern s16 D_8019010C; +extern s16 D_8019010A; +extern s16 D_80190108; +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_8019011C[])(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_801ED5E8; +extern u8 D_801ED5E9; +extern u8 D_801ED5EA; +extern u8 D_801ED5EB; +extern u8 D_801ED5EC; +extern u8 D_801ED5ED; +extern u8 D_801ED5EE; +extern u8 D_801ED5EF; +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_8019012C[])(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_801ED628; +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_80190170[])(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_801901EC[]; +extern s32 D_8019020C[]; +extern u8 D_80190288[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801902A8[]; +extern u8 D_801902C8[]; +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_80190364[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801903E0[])(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_801EC898; +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_801903EC[])(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_801903F4[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801904BC[])(void); +extern void func_80166618(void *a0); +extern void (*D_801904CC[])(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_801904DC[])(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_801904E8[])(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_80190448[]; +extern u8 D_8019045C[]; +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_80190500[])(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_80190508[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80190510[])(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_80190518[])(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_80190520[])(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_80190528[])(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_80190530[])(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_801905E4[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801905EC[])(void); +extern void func_80169F00(void *a0); +extern char D_8019059C[]; +extern char D_8019055C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80190624[])(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_80190630[])(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_80190678[])(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_801906F4[])(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_801ED948; +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_801906E8[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8019072C[]; +extern unsigned short D_80190734[]; +extern unsigned short D_8019073C[]; +extern unsigned char D_801ED950[]; +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_801ED948; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80190744[])(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_801EDA84; +extern M2C_UNK D_801EDA88; +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_801EDA10; +extern void (*D_80190774[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801EDA8C[]; +extern u8 D_801EDA94[]; +extern u8 D_801EDA44[]; +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_8019077C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80190798[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801907A0[])(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_80190808[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801907AC; +extern u8 D_801907B8; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8019083C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80190844[])(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_80190898[])(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_801908CC[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801908BC[]; +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_801908E8; +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); +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_80190960[])(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_80190968[])(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_80190970[])(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_80190978[])(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_80190980[])(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_80190988[])(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_80190994[])(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_801909A0[])(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_801909AC[])(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_801909BC[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801909CC[])(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_801909D4[])(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_801909DC[])(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_801909E4[])(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_801909EC[])(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_801909F4[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801909FC[])(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_80190A04[])(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_80190A0C[])(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_80190A14[])(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_80190A1C[])(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_80190A24[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80190A2C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80190A34[])(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_80190A3C[])(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_80190A44[])(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_80190A4C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80190A54[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80190A5C[])(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_80190A64[])(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_80190A6C[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80190A74[])(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_80190A7C[])(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_80190AC0[])(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_80190A84; +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_80190AF0[])(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_80190B2C[])(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(s32); +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_80190B84[])(); +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_80190B94[])(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_80190B9C[])(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_80190D04[])(); +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_80190D10[])(); +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_801ECAE0; +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 int func_801789AC(void); +extern s16 D_801EF3F0; +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 short D_801EF464; +extern void func_80178D18(void); +extern s32 func_80178D40(s32 arg0, s32 arg1); +extern void func_80179B28(s32 a0); +extern void func_80179B74(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801EE5F4; +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_801EE61C; +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_801EE5D8; +extern s32 func_8017A3B0(void); +extern short D_801EE614; +extern short D_801EE610; +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_801EF3A8; +extern s16 D_801EF3AA; +extern s16 D_801EF3B4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801EF3A8; + + 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_801EF3B4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801EF3A8+0xC == &D_801EF3B4; 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_801EF3A8 + 0xC)) < 0x101) { + D_801EF3A8 = 0; + D_801EF3AA = 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_801EF3B4); + 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_801EF3A8 + 0xC)) < 0x101) { + D_801EF3A8 = 0; + D_801EF3AA = 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_801EE654; + extern s16 D_801EE656; + extern s16 D_801EE658; + extern s16 D_801EE64C; + extern s16 D_801EE64E; + extern s16 D_801EE650; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801EE654, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801EE656, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801EE658, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801EE64C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801EE64E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801EE650, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801EE5DC; +extern u16 D_801EE65C; +extern u16 D_801EE65E; +extern u16 D_801EE660; +extern s16 D_801EF3F0; + +void func_8017B1D8(void) { + func_8012A418(); + D_801EF3F0 = 0; + D_801EE5DC = 0; + D_801EE65C = D_80126B5E; + D_801EE65E = D_80126B62; + D_801EE660 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80190E4C[]; + extern s16 D_801EE654; + extern s16 D_801EE64C; + 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_80190E4C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80190E4C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801EE654; + s16 *p78C = &D_801EE64C; + *(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_801EF3F0 = 1; + D_801EE5DC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801EE5FC; + extern SV4_8017B368 D_801EE604; + extern s16 D_801EE654; + extern s16 D_801EE64C; + extern u16 D_80190E4C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801EE5FC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801EE604; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80190E4C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80190E4C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801EE654) = loc0; + (*(SV4_8017B368 *)&D_801EE64C) = loc1; + D_801EF3F0 = 1; + D_801EE5DC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80190E4C[]; + extern s16 D_801EE654; + extern s16 D_801EE656; + extern s16 D_801EE658; + extern s16 D_801EE64C; + extern s16 D_801EE64E; + extern s16 D_801EE650; + 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_80190E4C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80190E4C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801EE654; + s16 *p78C = &D_801EE64C; + *(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_801EE656; + v798 = D_801EE658; + v78C = *p78C; + v78E = D_801EE64E; + v790 = D_801EE650; + __asm__ __volatile__(""); + D_801EF3F0 = 1; + D_801EE5DC = 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_801EE5DC; +extern s16 D_801EE654; +extern s16 D_801EE656; +extern s16 D_801EE658; +extern s16 D_801EE64C; +extern s16 D_801EE64E; +extern s16 D_801EE650; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801EE5DC = 0; + D_801EE654 = (s16) D_80114F30; + D_801EE656 = (s16) D_80114F34; + D_801EE658 = (s16) D_80114F38; + D_801EE64C = (s16) D_80114F24; + D_801EE64E = (s16) D_80114F28; + D_801EE650 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801EE66C; +extern s16 D_801EE66E; +extern s16 D_801EE670; +extern s16 D_801EE674; +extern s16 D_801EE676; +extern s16 D_801EE678; + +void func_8017B824(void) { + D_801EE66C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801EE66E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801EE670 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801EE674 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801EE676 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801EE678 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801EE66C; +extern s16 D_801EE66E; +extern s16 D_801EE670; +extern s16 D_801EE674; +extern s16 D_801EE676; +extern s16 D_801EE678; + +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_801EE66C; + D_80114F34 = D_801EE66E; + D_80114F38 = D_801EE670; + D_80114F24 = D_801EE674; + D_80114F28 = D_801EE676; + D_80114F2C = D_801EE678; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801EE654), src[8..15] -> (*(S8_8017B8E8 *)&D_801EE64C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801EE654) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801EE64C) = ((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_801EE65C; +extern u16 D_801EE65E; +extern u16 D_801EE660; + +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_801EE5DC; +extern short D_801EE664; +extern short D_801EE666; +extern short D_801EE668; +extern s16 D_801EE654; +extern s16 D_801EE656; +extern s16 D_801EE658; +extern s16 D_801EE64C; +extern s16 D_801EE64E; +extern s16 D_801EE650; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801EE65C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801EE65E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801EE660); + (*(s16 *)&D_801EE664) = buf[0]; + (*(s16 *)&D_801EE666) = buf[1]; + (*(s16 *)&D_801EE668) = buf[2]; + D_801EE654 = D_80114F30 + buf[0]; + D_801EE5DC = 0; + D_801EE656 = D_80114F34 + buf[1]; + D_801EE658 = D_80114F38 + buf[2]; + D_801EE64C = D_80114F24 + buf[0]; + D_801EE64E = D_80114F28 + buf[1]; + D_801EE650 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801EE5FC; +extern SV4 D_801EE604; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801EE604) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801EE5FC = 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_801EE604 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801EE604)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801EE5FC) = 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_801EE604) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801EE624[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801EE624; + 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_801EE5DC; +extern s16 D_801EF3F0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801EE5DC = D_801EE5DC + 1; + if (D_801EE5DC >= 0x1F) { + D_801EF3F0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801EE5DC; +extern s16 D_801EF3F0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801EE5DC = D_801EE5DC + 1; + if (0x18 < D_801EE5DC) { + func_8012A4BC(); + D_801EF3F0 = 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_801EE5DC; +extern void (*D_801EE620)(void); +extern short D_801EE664; +extern short D_801EE666; +extern short D_801EE668; +extern s16 D_801EF3F0; + +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_801EE5DC = D_801EE5DC + 1; + if (D_801EE5DC >= 0x19) { + if (D_801EE620 != 0) { + (*D_801EE620)(); + } else { + D_80114F30 = D_80114F30 + D_801EE664; + D_80114F34 = D_80114F34 + D_801EE666; + D_80114F38 = D_80114F38 + D_801EE668; + D_80114F24 = D_80114F24 + D_801EE664; + D_80114F28 = D_80114F28 + D_801EE666; + D_80114F2C = D_80114F2C + D_801EE668; + func_8012A4BC(); + } + D_801EF3F0 = 0; + } +} + + + +extern void (*D_80190EEC[])(void); + +void func_8017BE60(void *a0) { + D_80190EEC[*(u8 *)((s32)a0 + 0x4)](); +} + + + +extern void (*D_80190F8C[])(void); + +void func_8017BE9C(void *a0) { + D_80190F8C[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80190F94[])(void); + +void func_8017BED8(void *a0) { + D_80190F94[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80190F9C[])(void); + +void func_8017BF14(void *a0) { + D_80190F9C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017BF50); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017C094); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017C100); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017C1AC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017C1EC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017C2B0); + + +extern void (*D_80190FBC[])(void); + +void func_8017C338(void *a0) { + D_80190FBC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017C374); + +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); + } +} + + + +extern void (*D_80190FC4[])(void); + +void func_8017C5CC(void *a0) { + D_80190FC4[*(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_80190FB0; + +void func_8017C608(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_80190FB0, 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; + } +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017C710); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017D5F0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017D734); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017D8A8); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017DA48); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017DB6C); + +void func_8017DC48(void) { +} + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017DC50); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017DCE4); + + +extern void (*D_8019106C[])(void); + +void func_8017DDEC(void *a0) { + D_8019106C[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32, s32); +extern u32 D_8019105C; + +void func_8017DE28(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_8019105C | 0x40000000; + *(s16*)((u8*)(*(s32*)((u8*)arg0 + 0x20)) + 0x12) = *(u16*)((u8*)arg0 + 0xFC); + } +} + + +DEFINE_func_8017DEA4() /* dedup: shared engine-core @0x8017DEA4 (src/shared) */ + + +extern void (*D_801910A4[])(void); + +void func_8017DEAC(void *a0) { + D_801910A4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017DEE8); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017DF78); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017E1B4); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017E204); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017E2C0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017E3D8); + + +// @class: regalloc-order +// @stuck: none — MATCH + +extern u32 D_801EE918; +extern u16 D_801910AC[]; +extern u16 D_801EE91C[]; +extern s32 D_801910CC; + +extern void func_800183E0(s32 a0); + +void func_8017E408(void) +{ + u32 i; + u16 *p; + u32 base; + u16 *tbl; + + i = 0; + tbl = D_801910AC; + base = D_801EE918 >> 8; + p = D_801EE91C; + do { + *p = tbl[(base + i) & 0xF] | 0x8000; + i = i + 1; + p = p + 1; + } while (i < 0x10); + func_800183E0((s32)&D_801910CC); + D_801EE918 = D_801EE918 + 0x100; +} + + + +// @class: plumbing +// @stuck: none — MATCH (simple two-call wrapper, $s0 holds param across calls by default regalloc) + +extern void func_8017E824(void *arg0); +extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); +extern void func_800167B8(s32 a0); + +s32 func_8017E494(s32 param_1) +{ + ((void (*)(void *, s32))func_8016EDEC)(func_8017E824, 0x1000000); + func_800167B8(0); + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + return 0; +} + + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017E4E4(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017E508); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017E578); + +extern void func_800D1EBC(void); + void func_8017E628(void) { + func_800D1EBC(); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017E648); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017E69C); + + +extern void (*D_801910EC[])(void); + +void func_8017E720(void *a0) { + D_801910EC[*(u8 *)((s32)a0 + 0x15)](); +} + + + +extern void (*D_801910F4[])(void); + +void func_8017E75C(void *a0) { + D_801910F4[*(u8 *)((s32)a0 + 0x15)](); +} + + + +extern void (*D_80191100[])(void); + +void func_8017E798(void *a0) { + D_80191100[*(u8 *)((s32)a0 + 0x15)](); +} + + + +extern void (*D_8019110C[])(void); + +void func_8017E7D4(void *a0) { + D_8019110C[*(u8 *)((s32)a0 + 0x15)](); +} + + +extern s32 D_80127050; + void func_8017E810(void) { + D_80127050 = 1; + } + + + +extern void (*D_801913C0[])(void); + +void func_8017E824(void *a0) { + D_801913C0[*(u8 *)((s32)a0 + 0x214)](); +} + + +void func_8017E860(s32 *a0) { + *(u8 *)((s32)a0 + 0x214) += 1; + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017E874); + + +extern void (*D_801913C8[])(void); + +void func_8017E8AC(void *a0) { + D_801913C8[*(u8 *)((s32)a0 + 0x214)](); +} + + +void func_8017E8E8(u8 *a0) { + *(s8 *)(a0 + 0x214) += 1; + } + + +extern void func_8016F0E4(void); + void func_8017E8FC(void) { + ((s32 (*)(void))func_8016F0E4)(); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017E91C); + + +extern void (*D_801913D0[])(void); + +void func_8017E9E0(void *a0) { + D_801913D0[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017EA1C); + +void func_8017EA50(u8 *a0) { + *(s8 *)(a0 + 0xa0) = 0; + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017EA58); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017EB98); + +extern void func_80187778(s32 *a0, s32 a1); + extern short D_801913D4; + void func_8017ED8C(void *a0) { + *(short *)((char *)a0 + 0x2) = 2; + func_80187778(a0, &D_801913D4); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017EDB8); + +extern void (*D_801914A8[])(void); + +void func_8017EEA8(void *a0) { + D_801914A8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017EEE4); + +extern s32 func_800D0EC4(void); + s32 func_8017EF10(void) { + return (func_800D0EC4() == 0); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017EF30); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017EFD4); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017F058); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017F0EC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017F13C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017F1F0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017F258); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017F2AC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017F368); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017F750); + + +extern void (*D_801918FC[])(void); + +void func_8017F7C8(void *a0) { + D_801918FC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017F804); + + +extern void (*D_80191928[])(void); + +void func_8017F920(void *a0) { + D_80191928[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80191930[])(void); + +void func_8017F95C(void *a0) { + D_80191930[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80191940[])(void); + +void func_8017F998(void *a0) { + D_80191940[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80191950[])(void); + +void func_8017F9D4(void *a0) { + D_80191950[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_8017FA10(void) { +} + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017FA18); + + +extern void (*D_80191960[])(void); + +void func_8017FBC4(void *a0) { + D_80191960[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017FC00); + +extern s32 D_801915FC; +extern s32 D_801EEAE8; +extern void func_8017F1F0(s32 arg0, s32 arg1); + +void func_8017FD5C(void) { + D_801EEAE8 = &D_801915FC; + func_8017F1F0(0x474, 0x4B0); +} + + +extern s32 D_80191634; +extern s32 D_801EEAE8; +extern void func_8017F1F0(s32 arg0, s32 arg1); + +void func_8017FD90(void) { + D_801EEAE8 = &D_80191634; + func_8017F1F0(0x474, 0x4EC); +} + + +extern s32 D_8019166C; +extern s32 D_801EEAE8; +extern void func_8017F1F0(s32 arg0, s32 arg1); + +void func_8017FDC4(void) { + D_801EEAE8 = &D_8019166C; + func_8017F1F0(0x474, 0x4B0); +} + + +extern s32 D_80191694; +extern s32 D_801EEAE8; +extern void func_8017F1F0(s32 arg0, s32 arg1); + +void func_8017FDF8(void) { + D_801EEAE8 = &D_80191694; + func_8017F1F0(0x474, 0x4B0); +} + + + +extern s32 D_801916CC; +extern s32 D_801EEAE8; +extern void func_8017F1F0(s32 arg0, s32 arg1); + +void func_8017FE2C(void) { + D_801EEAE8 = &D_801916CC; + func_8017F1F0(0x474, 0x528); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017FE60); + + +extern s32 D_80191744; +extern s32 D_801EEAE8; +extern void func_8017F1F0(s32 arg0, s32 arg1); + +void func_8017FED4(void) { + D_801EEAE8 = &D_80191744; + func_8017F1F0(0x474, 0x1A4); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017FF08); + + +extern s32 D_8019179C; +extern s32 D_801EEAE8; +extern void func_8017F1F0(s32 arg0, s32 arg1); + +void func_8017FF54(void) { + D_801EEAE8 = &D_8019179C; + func_8017F1F0(0x12c, 0x1A4); +} + + + +extern s32 D_801917EC; +extern s32 D_801EEAE8; +extern void func_8017F1F0(s32 arg0, s32 arg1); + +void func_8017FF88(void) { + D_801EEAE8 = &D_801917EC; + func_8017F1F0(0x474, 0x4B0); +} + + + +extern s32 D_8019184C; +extern s32 D_801EEAE8; +extern void func_8017F1F0(s32 arg0, s32 arg1); + +void func_8017FFBC(void) { + D_801EEAE8 = &D_8019184C; + func_8017F1F0(0x474, 0x4B0); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8017FFF0); + + +extern s32 D_80191894; +extern s32 D_801EEAE8; +extern void func_8017F1F0(s32 arg0, s32 arg1); + +void func_8018003C(void) { + D_801EEAE8 = &D_80191894; + func_8017F1F0(0x564, 0x1A4); +} + + +s32 func_80180070(void) { + return -1; + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180078); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180134); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801801E0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180224); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180340); + + +extern void func_8012B414(int a0); + void func_801803DC(s32 arg0) { + s32 temp_v1 = *(s32 *)(arg0 + 0x20); + *(s16 *)(temp_v1 + 0x14) += 0x8; + ((void (*)(void))func_8012B414)(); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180410); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180488); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801804D0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180574); + +void func_801805EC(void *a0) { + *(short *)((char *)a0 + 0x2) = 0x2; + } + + + +extern void (*D_80191978[])(void); + +void func_801805F8(void *a0) { + D_80191978[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180634); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018069C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801806E8); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180728); + +void func_80180770(void *a0) { + *(short *)((char *)a0 + 0x2) = 0x2; + } + + +extern void (*D_8019198C[])(void); + +void func_8018077C(void *a0) { + D_8019198C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801807B8); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180820); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180884); + +void func_801808F0(void *a0) { + *(short *)((char *)a0 + 0x2) = 0x2; + } + + + +extern void (*D_801919A0[])(void); + +void func_801808FC(void *a0) { + D_801919A0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180938); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018098C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801809D0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180A10); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180A58); + + +extern void (*D_80191B0C[])(void); + +void func_80180A88(void *a0) { + D_80191B0C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180AC4); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180B1C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180B5C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180BCC); + + +extern void func_8012A828(s32 a0, s32 a1); + extern short D_801C3B38; + void func_80180C3C(void * arg0) { + *(short *)((char *)arg0 + 0x2) = 3; + func_8012A828((int)arg0, (int)&D_801C3B38); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180C68); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180CD4); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180D34); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180D5C); + + +extern s32 func_80029178(s32 arg); + extern void func_80029124(s32, s32); + s32 func_80180D9C(void) { + if ((func_80029178(0x110) & 0xFF) == 0) { + ((void (*)(void *, s32))func_80029124)((void *)0x110, 1); + return 1; + } + return 0; + } + + +extern s32 func_80180AC4(s32 a0); +extern s32 func_80180B5C(void *a0); +void func_80180DD8(int param_1) +{ + if (((int (*)(void))func_80180AC4)() != 0) { + ((void (*)(int))func_80180B5C)(param_1); + } +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180E10); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180E68); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180ECC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180FA0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80180FF8); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80181078); + +void func_801810EC(void *a0) { + *(short *)((char *)a0 + 0x2) = 0x2; + } + + + +extern void (*D_80191B30[])(void); + +void func_801810F8(void *a0) { + D_80191B30[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80181134); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018119C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80181200); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018126C); + +extern void func_80187778(s32 *a0, s32 a1); + extern short D_80191B3C; + void func_80181298(short *param_1) { + *(short *)((char *)param_1 + 0x2) = 0x3; + func_80187778(param_1, &D_80191B3C); + } + + + +extern void (*D_80191C08[])(void); + +void func_801812C4(void *a0) { + D_80191C08[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80181300); + +extern s32 func_8014CB1C(void); + int func_80181374(void) { + return func_8014CB1C() != 0; + } + + + +extern void func_8014B2A8(void); +extern void func_8002D4C8(s32 a0, s32 a1); + +void func_80181394(void) { + func_8014B2A8(); + ((s32 (*)(s32, s32))func_8002D4C8)(0x464, 0); +} + + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_80191BC0; + void func_801813C0(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x5; + *(short *)((char *)a0 + 0x34) = 0; + func_80178CBC((s32 *)a0, (s32)&D_80191BC0); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801813F0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80181458); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801814C4); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018153C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801815A0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018166C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801816D8); + + +extern void (*D_80191C20[])(void); + +void func_801817C4(void *a0) { + D_80191C20[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80181800); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80181864); + +extern void func_80187778(s32 *a0, s32 a1); + extern short D_80191C28; + void func_801818E0(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x2; + func_80187778((s32 *)a0, (s32)&D_80191C28); + } + + + +extern void (*D_80191C90[])(void); + +void func_8018190C(void *a0) { + D_80191C90[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80181948); + +void func_80181988(void *a0) { + *(short *)((char *)a0 + 0x2) = 4; + *(short *)((char *)a0 + 0x34) = 0; + *(int *)((char *)a0 + 0x1c) = 0x3c; + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801819A0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801819E0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80181A18); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80181A68); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80181B40); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80181BC0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80181C38); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80181CAC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80181D04); + +extern void func_80187778(s32 *a0, s32 a1); + extern short D_80191CA4; + void func_80181D8C(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x5; + func_80187778((s32 *)a0, (s32)&D_80191CA4); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80181DB8); + + +extern void (*D_80191D3C[])(void); + +void func_80181ED4(void *a0) { + D_80191D3C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80181F10); + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_80191CDC; + void func_80181F74(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x7; + func_80178CBC(a0, &D_80191CDC); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80181FA0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80181FE0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182058); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182148); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801821C0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182254); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182294); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182304); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182398); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182400); + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_80191D14; + void func_80182450(short *param) { + param[1] = 0xB; + ((void (*)(s32, s32))func_80178CBC)((int)param, (int)&D_80191D14); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018247C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801824DC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182548); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801825A8); + +extern void func_80187778(s32 *a0, s32 a1); + extern short D_80191D6C; + void func_8018260C(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x7; + func_80187778((s32 *)a0, (s32)&D_80191D6C); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182638); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018268C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801826B8); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182704); + + +extern void (*D_80191E0C[])(void); + +void func_80182824(void *a0) { + D_80191E0C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182860); + +extern s32 D_801DD064; +extern s32 D_801D6014; + +void func_80182898(void) { + D_801D6014 = D_801DD064; +} + + +extern s32 D_801EEAF8; +extern s32 D_801D6014; + +void func_801828B0(void) { + *(s32 *)&D_801D6014 = D_801EEAF8; +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801828C8); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182928); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182968); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801829A8); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182A34); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182A74); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182AEC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182B78); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182BB8); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182CC4); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182D04); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182DFC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182E70); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182EE4); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182F3C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183168); + +extern void func_80187778(s32 *a0, s32 a1); + extern short D_80191E38; + void func_801831F0(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x5; + func_80187778((s32 *)a0, (s32)&D_80191E38); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018321C); + + +extern void (*D_801922F0[])(void); + +void func_8018333C(void *a0) { + D_801922F0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183378); + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_80191E70; + void func_801833DC(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x7; + func_80178CBC((s32 *)a0, (s32)&D_80191E70); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183408); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183448); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801834C0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801835B0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183628); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801836BC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183708); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183778); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183804); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018386C); + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_801922C8; + void func_801838BC(short *a0) { + *(short *)((char *)a0 + 0x2) = 0xB; + func_80178CBC((s32 *)a0, (s32)&D_801922C8); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801838E8); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183948); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801839BC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183A14); + + +extern void (*D_80192418[])(void); + +void func_80183A88(void *a0) { + D_80192418[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183AC4); + + +extern s32 D_801DD950; +extern s32 D_801DAAAC; + +void func_80183AFC(void) { + D_801DAAAC = D_801DD950; +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183B14); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183B74); + + +extern s32 func_80029178(s32 arg); + extern void func_80029124(s32, s32); + s32 func_80183BB4(void) { + if ((func_80029178(0x113) & 0xFF) == 0) { + ((void (*)(void *, s32))func_80029124)((void *)0x113, 1); + return 1; + } + return 0; + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183BF0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183C30); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183CC8); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183D08); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183D78); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183E14); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183EE4); + +extern s32 D_80192434; +extern void func_80187778(s32 *a0, s32 a1); + +void func_80183F58(void *arg0) { + *(s16 *)((char *)arg0 + 0x2) = 0x2; + func_80187778(arg0, &D_80192434); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183F84); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80183FF4); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80184054); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801840B8); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801840E4); + + +extern void (*D_80192510[])(void); + +void func_80184210(void *a0) { + D_80192510[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_8019246C; + void func_8018424C(short *a0) { + *(short *)((char *)a0 + 0x2) = 4; + ((void (*)(s32, s32))func_80178CBC)((int)a0, (int)&D_8019246C); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80184278); + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_801924B8; + void func_801842A4(short *param) { + param[1] = 0xC; + ((void (*)(s32, s32))func_80178CBC)((int)param, (int)&D_801924B8); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801842D0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80184310); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80184350); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801843DC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018444C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80184498); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018451C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018456C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801845B8); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801845FC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80184648); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801846A0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801846F0); + + +extern void (*D_80192544[])(void); + +void func_80184748(void *a0) { + D_80192544[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_80184784(void *a0) { + *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80184794); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801847D0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80184840); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801848A0); + + +extern void (*D_80192624[])(void); + +void func_80184900(void *a0) { + D_80192624[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_801925AC; + void func_8018493C(short *param) { + param[1] = 0x5; + ((void (*)(s32, s32))func_80178CBC)((int)param, (int)&D_801925AC); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80184968); + + +extern s32 func_80029178(s32 arg); + extern void func_80029124(s32, s32); + s32 func_801849E0(void) { + if ((func_80029178(0x115) & 0xFF) == 0) { + ((void (*)(void *, s32))func_80029124)((void *)0x115, 1); + return 1; + } + return 0; + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80184A1C); + +extern s32 func_80187A64(s32); + extern void func_80184840(s32); + void func_80184A8C(s32 arg0) { + if (func_80187A64(arg0)) { + func_80184840(arg0); + } + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80184AC4); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80184B60); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80184BB0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80184BF4); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80184CF0); + +extern void func_80187778(s32 *a0, s32 a1); + extern short D_80192640; + void func_80184D64(short *param_1) { + *(short *)((char *)param_1 + 2) = 1; + func_80187778((s32 *)param_1, (s32)&D_80192640); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80184D90); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80184DDC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80184F18); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80184F64); + + +extern void (*D_80192828[])(void); + +void func_801850A0(void *a0) { + D_80192828[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801850DC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018511C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018515C); + + +extern s32 func_80029178(s32 arg); + extern void func_80029124(s32, s32); + s32 func_8018519C(void) { + if ((func_80029178(0x116) & 0xFF) == 0) { + ((void (*)(void *, s32))func_80029124)((void *)0x116, 1); + return 1; + } + return 0; + } + + + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_801926F8; + void func_801851D8(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x8; + *(short *)((char *)a0 + 0x34) = 0; + func_80178CBC((s32 *)a0, (s32)&D_801926F8); + } + + +extern void func_80178CBC(s32 *a0, s32 a1); +extern short D_80192740; + +void func_80185208(void *a0) { + *(short *)((char *)a0 + 0x2) = 0xe; + *(short *)((char *)a0 + 0x34) = 0; + ((void (*)(int, int))func_80178CBC)((int)a0, (int)&D_80192740); +} + + + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_80192748; + void func_80185238(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x4; + *(short *)((char *)a0 + 0x34) = 0; + func_80178CBC((s32 *)a0, (s32)&D_80192748); + } + + +extern void func_80178CBC(s32 *a0, s32 a1); +extern short D_801927B8; + +void func_80185268(short *a0) { + *(short *)((char *)a0 + 0x2) = 0xB; + *(short *)((char *)a0 + 0x34) = 0; + ((void (*)(void *, s32))func_80178CBC)(a0, &D_801927B8); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80185298); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801852E4); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80185334); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80185380); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801853D0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018541C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80185474); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801854D0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80185528); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801855CC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801856A8); + +extern void func_80187778(s32 *a0, s32 a1); + extern short D_80192864; + void func_80185874(short *param_1) { + *(short *)((char *)param_1 + 2) = 0x2; + ((void (*)(int, int))func_80187778)((int)param_1, (int)&D_80192864); + } + + +extern void func_80187778(s32 *a0, s32 a1); + extern short D_80192864; + void func_801858A0(short *param_1) { + param_1[1] = 0x7; + func_80187778(param_1, &D_80192864); + } + + +extern void func_80187778(s32 *a0, s32 a1); + extern short D_80192864; + void func_801858CC(short *param_1) { + *(short *)((char *)param_1 + 2) = 0x12; + func_80187778((s32 *)param_1, (int)&D_80192864); + } + + +extern void func_80187778(s32 *a0, s32 a1); + extern short D_80192864; + void func_801858F8(short *param_1) { + *(short *)((char *)param_1 + 0x2) = 0x17; + func_80187778(param_1, &D_80192864); + } + + +extern void func_80187778(s32 *a0, s32 a1); + extern short D_80192864; + void func_80185924(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x1F; + func_80187778((s32 *)a0, (s32)&D_80192864); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80185950); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801859AC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80185B54); + + +extern void (*D_801928D8[])(void); + +void func_80185C60(void *a0) { + D_801928D8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80185C9C); + + +extern void (*D_80192968[])(void); + +void func_80185CD8(void *a0) { + D_80192968[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern s32 func_80128C98(s32 arg); + extern void func_801EF734(void *a0); + void func_80185D14(void *a0) { + if (func_80128C98(1)) { + ((void (*)(void *))func_801EF734)(a0); + } + } + + + +extern s32 func_80128C98(s32 arg); + extern void func_801EF904(void *a0); + void func_80185D50(void *a0) { + if (func_80128C98(1)) { + ((void (*)(void *))func_801EF904)(a0); + } + } + + + +extern s32 func_80128C98(s32 arg); + extern void func_801EF46C(void *a0); + void func_80185D8C(void *a0) { + if (func_80128C98(1)) { + ((void (*)(void *))func_801EF46C)(a0); + } + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80185DC8); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80185E44); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80185EC8); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80185F3C); + +void func_80185F9C(void) { +} + + +void func_80185FA4(void *a0) { + *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 2; + } + + + +extern s32 func_80128C98(s32 arg); + extern void func_801EF58C(void *a0); + void func_80185FB4(void *a0) { + if (func_80128C98(1)) { + ((void (*)(void *))func_801EF58C)(a0); + } + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80185FF0); + +extern s32 func_80128C98(s32 arg); +extern void func_801EF624(void *a0); + +void func_80186064(void *a0) { + if (func_80128C98(1)) { + ((void (*)(void *))func_801EF624)(a0); + } +} + + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_80192888; + void func_801860A0(short *param_1) { + param_1[1] = 0x1d; + ((void (*)(s32, s32))func_80178CBC)((int)param_1, (int)&D_80192888); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801860CC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80186124); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018617C); + +extern void func_80187778(s32 *a0, s32 a1); + extern short D_80192970; + void func_80186288(short *param_1) { + param_1[1] = 2; + func_80187778(param_1, &D_80192970); + } + + + +extern void (*D_801929D4[])(void); + +void func_801862B4(void *a0) { + D_801929D4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801862F0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018631C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018640C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018644C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80186498); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801864E8); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80186568); + +extern void func_80187778(s32 *a0, s32 a1); + extern short D_801929E8; + void func_801865E0(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x2; + func_80187778((s32 *)a0, (s32)&D_801929E8); + } + + + +extern void (*D_80192A50[])(void); + +void func_8018660C(void *a0) { + D_80192A50[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_80192A18; + void func_80186648(short *param) { + param[1] = 0x4; + ((void (*)(s32, s32))func_80178CBC)((int)param, (int)&D_80192A18); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80186674); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801866B4); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80186700); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80186758); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801867A8); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80186828); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80186890); + + +extern void (*D_80192AE8[])(void); + +void func_801868E0(void *a0) { + D_80192AE8[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80192B10[])(void); + +void func_8018691C(void *a0) { + D_80192B10[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_80178CBC(s32 *a0, s32 a1); +extern short D_80192AC8; + +void func_80186958(short *param) { + param[1] = 0x3; + ((void (*)(s32, s32))func_80178CBC)((int)param, (int)&D_80192AC8); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80186984); + +extern s32 func_80029504(void); + extern void func_80186890(s32 arg0); + void func_801869C8(s32 arg0) { + if ((u32)func_80029504() >= 0x1E) { + func_80186890(arg0); + } + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80186A04); + +void func_80186A6C(void) { +} + +void func_80186A74(void) { +} + +void func_80186A7C(void) { +} + +void func_80186A84(void) { +} + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80186A8C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80186B54); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80186BEC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80186C54); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80186CD0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80186D18); + + +extern void func_8012B2CC(s32 arg); + void func_80186D7C(void *arg0) { + s32 *p = *(s32 **)((char *)arg0 + 0x20); + *(s16 *)((char *)arg0 + 0x2) = 2; + *(s16 *)((char *)p + 0x12) = -0x600; + func_8012B2CC((s32)arg0); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80186DAC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80186DDC); + + +extern void (*D_801C063C[])(void); + +void func_80186F4C(void *a0) { + D_801C063C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80186F88); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80187004); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80187074); + +extern void func_8002D4C8(s32 arg0, s32 arg1); + void func_8018708C(void) { + func_8002D4C8(0x7E0, 0); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801870B0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801871E4); + +void func_8018724C(void) { +} + +void func_80187254(void) { +} + +void func_8018725C(void *a0) { + *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; + } + + +void func_8018726C(void *a0) { + *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 2; + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018727C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80187318); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80187344); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80187370); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018739C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80187420); + +extern s32 func_80187420(s32 arg); +extern void func_80187584(void *a0); + +void func_80187550(void *a0) { + *(s32 *)((char *)a0 + 0xe0) = func_80187420((s32)a0); + func_80187584(a0); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80187584); + + +extern short D_800BA2BA; + s32 func_801875C4(s32 arg0) { + return *(short *)((char *)&D_800BA2BA + (*(short *)(*(s32 *)(arg0 + 0xd0) + 0x10) << 2)); + } + + + +extern void (*D_801C0B00[])(void); + +void func_801875EC(void *a0) { + D_801C0B00[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_80187628(void) { +} + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80187630); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018766C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80187690); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801876E8); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80187750); + +void func_80187770(void *a0) { + *(s16 *)((s32)a0 + 0x5C) = 0; + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80187778); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801877C0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018781C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80187890); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80187904); + + +extern s32 func_80029504(void); + extern void func_80029514(s32 arg0); + void func_80187960(void) { + if (((s32 (*)(void))func_80029504)() == 0x3A2) { + ((void (*)(s32))func_80029514)(0x3AC); + } + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80187994); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80187A64); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80187C2C); + + +extern void (*D_801C0B20[])(void); + +void func_80187C74(void *a0) { + D_801C0B20[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_80187CB0(void) { +} + +void func_80187CB8(void) { +} + +void func_80187CC0(void) { +} + +void func_80187CC8(void) { +} + +void func_80187CD0(void) { +} + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80187CD8); + +void func_80187D1C(void) { +} + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80187D24); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80187DAC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80187F84); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80188124); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801881A0); + +extern s32 func_801889AC(void); + void func_8018826C(void) { + func_801889AC(); + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018828C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018835C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801883C4); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80188438); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80188498); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80188518); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80188570); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801885D0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80188618); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80188668); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801886A0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018872C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801887D0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80188830); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801889AC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801889E0); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80188A14); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80188A78); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80188AEC); + + +extern void (*D_801C0E1C[])(void); + +void func_80188B44(void *a0) { + D_801C0E1C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80188B80); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80188BFC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80188D1C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80188D68); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80188E74); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80188ED0); + +extern s16 D_801EEB10; + s32 func_80188F10(void) { + return D_801EEB10; + } + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80188F20); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80188F6C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80188FDC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80189030); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_801898E4); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018A270); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018A3A8); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018ABAC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018AEE8); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018B238); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018B478); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018B644); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018B8DC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018BCD4); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018C000); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018C89C); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018C8D4); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018C914); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018C960); + + +extern void (*D_801EB364[])(void); + +void func_8018CB74(void *a0) { + D_801EB364[*(u16 *)((s32)a0 + 0x2)](); +} + + + +// @class: iv-combine +// @stuck: none — MATCH (49 ins). gcc folds (v0+0x1800)-0x1000 -> v0+0x800; re-tie barrier on the WORKING reg v0 (NOT a saved local) forces the target chain v0=base+0x1800; s2=copy; v0-=0x1000; s1=v0<<5. NO register pins (pins re-trigger the lhu/lh dual-load CSE collapse and shrink the frame; natural alloc gives s0-s3 + frame 0x38). +extern int rand(void); +extern u8 *func_8012913C(s32 a0); + +extern unsigned short D_801EB344[]; + +void func_8018CBB0(s32 param_1, s32 param_2) +{ + int s3; + unsigned short s0; + int s2; + int s1; + int v0; + int iVar3; + + s0 = D_801EB344[*(short *)(param_1 + 0xfc)]; + s3 = param_2; + if (((short *)D_801EB344)[*(short *)(param_1 + 0xfc)] == 0) { + *(short *)(param_1 + 0xfc) = 0; + s0 = D_801EB344[0]; + } + *(short *)(param_1 + 0xfc) = *(short *)(param_1 + 0xfc) + 1; + v0 = (rand() & 3) * 0x400 + 0x1800; + s2 = v0; + __asm__ __volatile__("" : "=r"(v0) : "0"(v0)); + s1 = (v0 - 0x1000) * 0x20; + iVar3 = ((int (*)(int))func_8012913C)(4); + if (iVar3 != 0) { + *(short *)(iVar3 + 6) = s3; + *(short *)(iVar3 + 0xa) = s0; + *(short *)(iVar3 + 0xe) = 0; + *(int *)(iVar3 + 0x10) = s1; + *(short *)(iVar3 + 0x2c) = s2; + } +} + + + +extern void (*D_801EB378[])(void); + +void func_8018CC74(void *a0) { + D_801EB378[*(u16 *)((s32)a0 + 0x2)](); +} + + + +// @class: regalloc-order +// @stuck: none — MATCH + +extern void func_8018CBB0(s32, s32); +extern s32 func_8012AD50(void *a0); + +void func_8018CCB0(int param_1) { + short uVar1; + + *(short *)(param_1 + 0xfc) = 0; + *(int *)(param_1 + 0x1c) = 1; + uVar1 = *(unsigned short *)(param_1 + 0x70) & 7; + *(short *)(param_1 + 0xfe) = (uVar1 < 2) ? 0x1e : 0xf; + if (uVar1 != 0) { + func_8018CBB0(param_1, -0x80); + func_8018CBB0(param_1, -0x30); + func_8018CBB0(param_1, 0x20); + func_8018CBB0(param_1, 0x70); + func_8018CBB0(param_1, 0xc0); + } + if (1 < uVar1) { + func_8018CBB0(param_1, -0x58); + func_8018CBB0(param_1, -0x8); + func_8018CBB0(param_1, 0x48); + func_8018CBB0(param_1, 0x98); + func_8018CBB0(param_1, 0xe8); + } + ((void (*)(int))func_8012AD50)(param_1); +} + + + +// @class: regalloc-order +// @stuck: none — MATCH (param_1 naturally lands in $s0 across the call, mirrors sibling func_80184AEC) + +extern s32 func_8012BEE8(s32 a0); +extern void func_8018CBB0(s32, s32); + +void func_8018CD98(s32 arg0) { + if (func_8012BEE8(arg0)) { + *(s32 *)(arg0 + 0x1c) = (s32)*(s16 *)(arg0 + 0xfe); + func_8018CBB0(arg0, 0x110); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (expected) +extern void func_8001CB00(int param_1, void *src, int len, int n); + +extern unsigned char D_801EB36C; + +void func_8018CDD8(int param_1) +{ + unsigned short uVar1; + int iVar2; + + iVar2 = *(int *)(param_1 + 0x20); + func_8001CB00(iVar2, &D_801EB36C, 0x280, 0x100); + *(unsigned int *)(iVar2 + 4) = *(unsigned int *)(iVar2 + 4) | 0x70000000; + uVar1 = *(unsigned short *)(param_1 + 0x2c); + *(unsigned char *)(iVar2 + 0x27) = 0x9e; + *(unsigned short *)(iVar2 + 0x2c) = 4; + *(unsigned short *)(iVar2 + 0x1c) = uVar1; + *(unsigned short *)(iVar2 + 0x1a) = uVar1; + *(unsigned short *)(iVar2 + 0x18) = uVar1; + *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + 1; + return; +} + + + +extern void func_801292C8(u8 *a0); + +void func_8018CE60(u8 *a0) { + *(s32 *)(a0 + 0x4) = *(s32 *)(a0 + 0x4) - *(s32 *)(a0 + 0x10); + if (*(s16 *)(a0 + 0x6) < -0x110) { + func_801292C8(a0); + } +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018CEA8); + + +extern void (*D_801EB48C[])(void); + +void func_8018CF54(void *a0) { + D_801EB48C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018CF90); + +void func_8018CFF4(void) { +} + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018CFFC); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018D048); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018D088); + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_8018D0E4); + + + + diff --git a/src/ov_SC03_002/ov_SC03_002_jr_8017A4AC.c b/src/ov_SC03_002/ov_SC03_002_jr_8017A4AC.c index 77b7fe86a..13d1dda82 100644 --- a/src/ov_SC03_002/ov_SC03_002_jr_8017A4AC.c +++ b/src/ov_SC03_002/ov_SC03_002_jr_8017A4AC.c @@ -2967,654 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801CB6D4; - extern s16 D_801CB6D6; - extern s16 D_801CB6D8; - extern s16 D_801CB6CC; - extern s16 D_801CB6CE; - extern s16 D_801CB6D0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801CB6D4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801CB6D6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801CB6D8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801CB6CC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801CB6CE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801CB6D0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801CB65C; -extern u16 D_801CB6DC; -extern u16 D_801CB6DE; -extern u16 D_801CB6E0; -extern s16 D_801CBAD8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801CBAD8 = 0; - D_801CB65C = 0; - D_801CB6DC = D_80126B5E; - D_801CB6DE = D_80126B62; - D_801CB6E0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80188E3C[]; - extern s16 D_801CB6D4; - extern s16 D_801CB6CC; - 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_80188E3C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80188E3C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801CB6D4; - s16 *p78C = &D_801CB6CC; - *(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_801CBAD8 = 1; - D_801CB65C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801CB67C; - extern SV4_8017B368 D_801CB684; - extern s16 D_801CB6D4; - extern s16 D_801CB6CC; - extern u16 D_80188E3C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801CB67C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801CB684; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80188E3C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80188E3C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801CB6D4) = loc0; - (*(SV4_8017B368 *)&D_801CB6CC) = loc1; - D_801CBAD8 = 1; - D_801CB65C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80188E3C[]; - extern s16 D_801CB6D4; - extern s16 D_801CB6D6; - extern s16 D_801CB6D8; - extern s16 D_801CB6CC; - extern s16 D_801CB6CE; - extern s16 D_801CB6D0; - 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_80188E3C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80188E3C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801CB6D4; - s16 *p78C = &D_801CB6CC; - *(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_801CB6D6; - v798 = D_801CB6D8; - v78C = *p78C; - v78E = D_801CB6CE; - v790 = D_801CB6D0; - __asm__ __volatile__(""); - D_801CBAD8 = 1; - D_801CB65C = 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_801CB65C; -extern s16 D_801CB6D4; -extern s16 D_801CB6D6; -extern s16 D_801CB6D8; -extern s16 D_801CB6CC; -extern s16 D_801CB6CE; -extern s16 D_801CB6D0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801CB65C = 0; - D_801CB6D4 = (s16) D_80114F30; - D_801CB6D6 = (s16) D_80114F34; - D_801CB6D8 = (s16) D_80114F38; - D_801CB6CC = (s16) D_80114F24; - D_801CB6CE = (s16) D_80114F28; - D_801CB6D0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801CB6EC; -extern s16 D_801CB6EE; -extern s16 D_801CB6F0; -extern s16 D_801CB6F4; -extern s16 D_801CB6F6; -extern s16 D_801CB6F8; - -void func_8017B824(void) { - D_801CB6EC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801CB6EE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801CB6F0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801CB6F4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801CB6F6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801CB6F8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801CB6EC; -extern s16 D_801CB6EE; -extern s16 D_801CB6F0; -extern s16 D_801CB6F4; -extern s16 D_801CB6F6; -extern s16 D_801CB6F8; - -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_801CB6EC; - D_80114F34 = D_801CB6EE; - D_80114F38 = D_801CB6F0; - D_80114F24 = D_801CB6F4; - D_80114F28 = D_801CB6F6; - D_80114F2C = D_801CB6F8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801CB6D4), src[8..15] -> (*(S8_8017B8E8 *)&D_801CB6CC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801CB6D4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801CB6CC) = ((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_801CB6DC; -extern u16 D_801CB6DE; -extern u16 D_801CB6E0; - -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_801CB65C; -extern short D_801CB6E4; -extern short D_801CB6E6; -extern short D_801CB6E8; -extern s16 D_801CB6D4; -extern s16 D_801CB6D6; -extern s16 D_801CB6D8; -extern s16 D_801CB6CC; -extern s16 D_801CB6CE; -extern s16 D_801CB6D0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801CB6DC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801CB6DE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801CB6E0); - (*(s16 *)&D_801CB6E4) = buf[0]; - (*(s16 *)&D_801CB6E6) = buf[1]; - (*(s16 *)&D_801CB6E8) = buf[2]; - D_801CB6D4 = D_80114F30 + buf[0]; - D_801CB65C = 0; - D_801CB6D6 = D_80114F34 + buf[1]; - D_801CB6D8 = D_80114F38 + buf[2]; - D_801CB6CC = D_80114F24 + buf[0]; - D_801CB6CE = D_80114F28 + buf[1]; - D_801CB6D0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801CB67C; -extern SV4 D_801CB684; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801CB684) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801CB67C = 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_801CB684 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801CB684)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801CB67C) = 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_801CB684) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801CB6A4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801CB6A4; - 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_801CB65C; -extern s16 D_801CBAD8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801CB65C = D_801CB65C + 1; - if (D_801CB65C >= 0x1F) { - D_801CBAD8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801CB65C; -extern s16 D_801CBAD8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801CB65C = D_801CB65C + 1; - if (0x18 < D_801CB65C) { - func_8012A4BC(); - D_801CBAD8 = 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_801CB65C; -extern void (*D_801CB6A0)(void); -extern short D_801CB6E4; -extern short D_801CB6E6; -extern short D_801CB6E8; -extern s16 D_801CBAD8; - -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_801CB65C = D_801CB65C + 1; - if (D_801CB65C >= 0x19) { - if (D_801CB6A0 != 0) { - (*D_801CB6A0)(); - } else { - D_80114F30 = D_80114F30 + D_801CB6E4; - D_80114F34 = D_80114F34 + D_801CB6E6; - D_80114F38 = D_80114F38 + D_801CB6E8; - D_80114F24 = D_80114F24 + D_801CB6E4; - D_80114F28 = D_80114F28 + D_801CB6E6; - D_80114F2C = D_80114F2C + D_801CB6E8; - func_8012A4BC(); - } - D_801CBAD8 = 0; - } -} - - - -extern void (*D_80188EDC[])(void); - -void func_8017BE60(void *a0) { - D_80188EDC[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017BF88); - - -extern void (*D_80188EF4[])(void); - -void func_8017C0E4(void *a0) { - D_80188EF4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017C120); - - -extern void (*D_80188F90[])(void); - -void func_8017C180(void *a0) { - D_80188F90[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80188F98[])(void); - -void func_8017C1BC(void *a0) { - D_80188F98[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80188FA0[])(void); - -void func_8017C1F8(void *a0) { - D_80188FA0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017C234); - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017C378); - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017C3E4); - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017C490); - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017C4D0); - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017C594); - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017C61C); - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017C7B8); - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017C9BC); - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017CDB0); - - -extern void (*D_8018927C[])(void); - -void func_8017CF30(void *a0) { - D_8018927C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017CF6C); - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017CFE0); - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017D0BC); - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017D2D0); - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017D3A4); - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017D474); - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017D4CC); - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017A4AC", func_8017D5C4); diff --git a/src/ov_SC03_002/ov_SC03_002_jr_8017AE2C.c b/src/ov_SC03_002/ov_SC03_002_jr_8017AE2C.c new file mode 100644 index 000000000..b1fe14691 --- /dev/null +++ b/src/ov_SC03_002/ov_SC03_002_jr_8017AE2C.c @@ -0,0 +1,3552 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80187A34; +extern u8 D_801879A4; +extern u8 D_80187980; +extern u8 D_8018795C; +extern u8 D_80187A10; +extern u8 D_801879EC; +extern u8 D_801879C8; +extern u8 D_80187938; +extern void func_80145934(void); +extern u8 D_80187AC4; +extern u8 D_80187AA0; +extern u8 D_80187A7C; +extern u8 D_80187A58; +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_80186EBC[]; +extern unsigned char D_80186EEC[]; +extern unsigned char D_80186F3C[]; +extern unsigned char D_80186F6C[]; +extern unsigned char D_80186F9C[]; +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(void); +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_80186FEC[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_801870B4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018713C[]; +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_80187144; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801CA558; +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_801CA55C; +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_80187174; +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 void 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_8018721C[])(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_80187240[])(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_80187230; +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_80187254[])(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_80187260[]; +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_80187270[])(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_80187288[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80187278; +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_8018729C[])(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_801872B8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801872A8; +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_801872CC[])(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_801872E0[])(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_801872F4; +extern void (*D_8018731C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801872FC; +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_80187368[])(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_8018736C[])(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(void *a0); +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_801877D0[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_801877E0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801CA590; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80187808[])(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_801877E8; +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_801877F8; +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_80187848[])(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_80187850[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018781C; +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_8018785C[])(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_8018782C; +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_801CA598; +extern s32 D_801CA5A4; +extern s32 D_801CA5A8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80187898[])(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_8018786C[]; +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_801CA5A0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80187AE8[])(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_80187908[]; +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_80187B8C[])(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_80187CE0[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80187AFC; +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_80187CE8[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80187B0C; +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_80187B2C; +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_80187CF0[])(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(void); +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_80187D18[])(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_80187D24[])(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_80187B98[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80187DC8; +extern void func_8015D380(s32 a0); +extern unsigned char D_80186EAC[]; +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_80187DDC[]; +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_80187E18[]; +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_80187E60; +extern u16 D_80187E62; +extern u16 D_80187E64; +extern s32 D_80187E68; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80187E70; +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_80187B7C; +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_80187EF4[]; +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_80187FA4[])(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_80187FD4[]; +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_80188038; +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_801CA5B0[]; +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_8018805C[])(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_801CA608[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_801880A4[])(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_80188094; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801C9DE4[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_801880AC[])(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_80188100[])(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_801880C8; +extern s16 D_801880FC; +extern s16 D_801880FA; +extern s16 D_801880F8; +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_8018810C[])(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_801CA668; +extern u8 D_801CA669; +extern u8 D_801CA66A; +extern u8 D_801CA66B; +extern u8 D_801CA66C; +extern u8 D_801CA66D; +extern u8 D_801CA66E; +extern u8 D_801CA66F; +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_8018811C[])(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_801CA6A8; +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_80188160[])(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_801881DC[]; +extern s32 D_801881FC[]; +extern u8 D_80188278[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80188298[]; +extern u8 D_801882B8[]; +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_80188354[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801883D0[])(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_801C9DF4; +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_801883DC[])(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_801883E4[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801884AC[])(void); +extern void func_80166618(void *a0); +extern void (*D_801884BC[])(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_801884CC[])(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_801884D8[])(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_80188438[]; +extern u8 D_8018844C[]; +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_801884F0[])(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_801884F8[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80188500[])(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_80188508[])(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_80188510[])(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_80188518[])(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_80188520[])(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_801885D4[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801885DC[])(void); +extern void func_80169F00(void *a0); +extern char D_8018858C[]; +extern char D_8018854C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80188614[])(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_80188620[])(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_80188668[])(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_801886E4[])(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_801CA9C8; +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_801886D8[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018871C[]; +extern unsigned short D_80188724[]; +extern unsigned short D_8018872C[]; +extern unsigned char D_801CA9D0[]; +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_801CA9C8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80188734[])(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_801CAB04; +extern M2C_UNK D_801CAB08; +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_801CAA90; +extern void (*D_80188764[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801CAB0C[]; +extern u8 D_801CAB14[]; +extern u8 D_801CAAC4[]; +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_8018876C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80188788[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80188790[])(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_801887F8[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018879C; +extern u8 D_801887A8; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018882C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80188834[])(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_80188888[])(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_801888BC[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801888AC[]; +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_801888D8; +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); +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_80188950[])(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_80188958[])(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_80188960[])(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_80188968[])(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_80188970[])(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_80188978[])(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_80188984[])(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_80188990[])(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_8018899C[])(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_801889AC[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801889BC[])(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_801889C4[])(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_801889CC[])(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_801889D4[])(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_801889DC[])(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_801889E4[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801889EC[])(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_801889F4[])(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_801889FC[])(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_80188A04[])(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_80188A0C[])(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_80188A14[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80188A1C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80188A24[])(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_80188A2C[])(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_80188A34[])(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_80188A3C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80188A44[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80188A4C[])(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_80188A54[])(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_80188A5C[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80188A64[])(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_80188A6C[])(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_80188AB0[])(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_80188A74; +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_80188AE0[])(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_80188B1C[])(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(s32); +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_80188B74[])(); +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_80188B84[])(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_80188B8C[])(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_80188CF4[])(); +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_80188D00[])(); +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_801CA03C; +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 int func_801789AC(void); +extern s16 D_801CBAD8; +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_801CB248; +extern short D_801CBB4C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801CB674; +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_801CB69C; +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_801CB658; +extern s32 func_8017A3B0(void); +extern short D_801CB694; +extern short D_801CB690; +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_801CBA90; +extern s16 D_801CBA92; +extern s16 D_801CBA9C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801CBA90; + + 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_801CBA9C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801CBA90+0xC == &D_801CBA9C; 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_801CBA90 + 0xC)) < 0x101) { + D_801CBA90 = 0; + D_801CBA92 = 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_801CBA9C); + 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_801CBA90 + 0xC)) < 0x101) { + D_801CBA90 = 0; + D_801CBA92 = 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_801CB6D4; + extern s16 D_801CB6D6; + extern s16 D_801CB6D8; + extern s16 D_801CB6CC; + extern s16 D_801CB6CE; + extern s16 D_801CB6D0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801CB6D4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801CB6D6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801CB6D8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801CB6CC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801CB6CE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801CB6D0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801CB65C; +extern u16 D_801CB6DC; +extern u16 D_801CB6DE; +extern u16 D_801CB6E0; +extern s16 D_801CBAD8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801CBAD8 = 0; + D_801CB65C = 0; + D_801CB6DC = D_80126B5E; + D_801CB6DE = D_80126B62; + D_801CB6E0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80188E3C[]; + extern s16 D_801CB6D4; + extern s16 D_801CB6CC; + 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_80188E3C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80188E3C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801CB6D4; + s16 *p78C = &D_801CB6CC; + *(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_801CBAD8 = 1; + D_801CB65C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801CB67C; + extern SV4_8017B368 D_801CB684; + extern s16 D_801CB6D4; + extern s16 D_801CB6CC; + extern u16 D_80188E3C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801CB67C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801CB684; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80188E3C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80188E3C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801CB6D4) = loc0; + (*(SV4_8017B368 *)&D_801CB6CC) = loc1; + D_801CBAD8 = 1; + D_801CB65C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80188E3C[]; + extern s16 D_801CB6D4; + extern s16 D_801CB6D6; + extern s16 D_801CB6D8; + extern s16 D_801CB6CC; + extern s16 D_801CB6CE; + extern s16 D_801CB6D0; + 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_80188E3C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80188E3C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801CB6D4; + s16 *p78C = &D_801CB6CC; + *(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_801CB6D6; + v798 = D_801CB6D8; + v78C = *p78C; + v78E = D_801CB6CE; + v790 = D_801CB6D0; + __asm__ __volatile__(""); + D_801CBAD8 = 1; + D_801CB65C = 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_801CB65C; +extern s16 D_801CB6D4; +extern s16 D_801CB6D6; +extern s16 D_801CB6D8; +extern s16 D_801CB6CC; +extern s16 D_801CB6CE; +extern s16 D_801CB6D0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801CB65C = 0; + D_801CB6D4 = (s16) D_80114F30; + D_801CB6D6 = (s16) D_80114F34; + D_801CB6D8 = (s16) D_80114F38; + D_801CB6CC = (s16) D_80114F24; + D_801CB6CE = (s16) D_80114F28; + D_801CB6D0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801CB6EC; +extern s16 D_801CB6EE; +extern s16 D_801CB6F0; +extern s16 D_801CB6F4; +extern s16 D_801CB6F6; +extern s16 D_801CB6F8; + +void func_8017B824(void) { + D_801CB6EC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801CB6EE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801CB6F0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801CB6F4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801CB6F6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801CB6F8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801CB6EC; +extern s16 D_801CB6EE; +extern s16 D_801CB6F0; +extern s16 D_801CB6F4; +extern s16 D_801CB6F6; +extern s16 D_801CB6F8; + +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_801CB6EC; + D_80114F34 = D_801CB6EE; + D_80114F38 = D_801CB6F0; + D_80114F24 = D_801CB6F4; + D_80114F28 = D_801CB6F6; + D_80114F2C = D_801CB6F8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801CB6D4), src[8..15] -> (*(S8_8017B8E8 *)&D_801CB6CC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801CB6D4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801CB6CC) = ((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_801CB6DC; +extern u16 D_801CB6DE; +extern u16 D_801CB6E0; + +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_801CB65C; +extern short D_801CB6E4; +extern short D_801CB6E6; +extern short D_801CB6E8; +extern s16 D_801CB6D4; +extern s16 D_801CB6D6; +extern s16 D_801CB6D8; +extern s16 D_801CB6CC; +extern s16 D_801CB6CE; +extern s16 D_801CB6D0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801CB6DC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801CB6DE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801CB6E0); + (*(s16 *)&D_801CB6E4) = buf[0]; + (*(s16 *)&D_801CB6E6) = buf[1]; + (*(s16 *)&D_801CB6E8) = buf[2]; + D_801CB6D4 = D_80114F30 + buf[0]; + D_801CB65C = 0; + D_801CB6D6 = D_80114F34 + buf[1]; + D_801CB6D8 = D_80114F38 + buf[2]; + D_801CB6CC = D_80114F24 + buf[0]; + D_801CB6CE = D_80114F28 + buf[1]; + D_801CB6D0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801CB67C; +extern SV4 D_801CB684; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801CB684) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801CB67C = 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_801CB684 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801CB684)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801CB67C) = 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_801CB684) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801CB6A4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801CB6A4; + 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_801CB65C; +extern s16 D_801CBAD8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801CB65C = D_801CB65C + 1; + if (D_801CB65C >= 0x1F) { + D_801CBAD8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801CB65C; +extern s16 D_801CBAD8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801CB65C = D_801CB65C + 1; + if (0x18 < D_801CB65C) { + func_8012A4BC(); + D_801CBAD8 = 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_801CB65C; +extern void (*D_801CB6A0)(void); +extern short D_801CB6E4; +extern short D_801CB6E6; +extern short D_801CB6E8; +extern s16 D_801CBAD8; + +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_801CB65C = D_801CB65C + 1; + if (D_801CB65C >= 0x19) { + if (D_801CB6A0 != 0) { + (*D_801CB6A0)(); + } else { + D_80114F30 = D_80114F30 + D_801CB6E4; + D_80114F34 = D_80114F34 + D_801CB6E6; + D_80114F38 = D_80114F38 + D_801CB6E8; + D_80114F24 = D_80114F24 + D_801CB6E4; + D_80114F28 = D_80114F28 + D_801CB6E6; + D_80114F2C = D_80114F2C + D_801CB6E8; + func_8012A4BC(); + } + D_801CBAD8 = 0; + } +} + + + +extern void (*D_80188EDC[])(void); + +void func_8017BE60(void *a0) { + D_80188EDC[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017BF88); + + +extern void (*D_80188EF4[])(void); + +void func_8017C0E4(void *a0) { + D_80188EF4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017C120); + + +extern void (*D_80188F90[])(void); + +void func_8017C180(void *a0) { + D_80188F90[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80188F98[])(void); + +void func_8017C1BC(void *a0) { + D_80188F98[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80188FA0[])(void); + +void func_8017C1F8(void *a0) { + D_80188FA0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017C234); + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017C378); + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017C3E4); + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017C490); + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017C4D0); + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017C594); + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017C61C); + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017C7B8); + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017C9BC); + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017CDB0); + + +extern void (*D_8018927C[])(void); + +void func_8017CF30(void *a0) { + D_8018927C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017CF6C); + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017CFE0); + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017D0BC); + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017D2D0); + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017D3A4); + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017D474); + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017D4CC); + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017AE2C", func_8017D5C4); + diff --git a/src/ov_SC03_003/ov_SC03_003_jr_8017A4AC.c b/src/ov_SC03_003/ov_SC03_003_jr_8017A4AC.c index 4062c0b03..56fab592c 100644 --- a/src/ov_SC03_003/ov_SC03_003_jr_8017A4AC.c +++ b/src/ov_SC03_003/ov_SC03_003_jr_8017A4AC.c @@ -2967,863 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8018F9DC; - extern s16 D_8018F9DE; - extern s16 D_8018F9E0; - extern s16 D_8018F9D4; - extern s16 D_8018F9D6; - extern s16 D_8018F9D8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8018F9DC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8018F9DE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8018F9E0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8018F9D4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8018F9D6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8018F9D8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8018F964; -extern u16 D_8018F9E4; -extern u16 D_8018F9E6; -extern u16 D_8018F9E8; -extern s16 D_8018FB00; - -void func_8017B1D8(void) { - func_8012A418(); - D_8018FB00 = 0; - D_8018F964 = 0; - D_8018F9E4 = D_80126B5E; - D_8018F9E6 = D_80126B62; - D_8018F9E8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80182C04[]; - extern s16 D_8018F9DC; - extern s16 D_8018F9D4; - 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_80182C04[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182C04[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8018F9DC; - s16 *p78C = &D_8018F9D4; - *(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_8018FB00 = 1; - D_8018F964 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8018F984; - extern SV4_8017B368 D_8018F98C; - extern s16 D_8018F9DC; - extern s16 D_8018F9D4; - extern u16 D_80182C04; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8018F984; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8018F98C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80182C04)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80182C04)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8018F9DC) = loc0; - (*(SV4_8017B368 *)&D_8018F9D4) = loc1; - D_8018FB00 = 1; - D_8018F964 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80182C04[]; - extern s16 D_8018F9DC; - extern s16 D_8018F9DE; - extern s16 D_8018F9E0; - extern s16 D_8018F9D4; - extern s16 D_8018F9D6; - extern s16 D_8018F9D8; - 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_80182C04[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182C04[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8018F9DC; - s16 *p78C = &D_8018F9D4; - *(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_8018F9DE; - v798 = D_8018F9E0; - v78C = *p78C; - v78E = D_8018F9D6; - v790 = D_8018F9D8; - __asm__ __volatile__(""); - D_8018FB00 = 1; - D_8018F964 = 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_8018F964; -extern s16 D_8018F9DC; -extern s16 D_8018F9DE; -extern s16 D_8018F9E0; -extern s16 D_8018F9D4; -extern s16 D_8018F9D6; -extern s16 D_8018F9D8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8018F964 = 0; - D_8018F9DC = (s16) D_80114F30; - D_8018F9DE = (s16) D_80114F34; - D_8018F9E0 = (s16) D_80114F38; - D_8018F9D4 = (s16) D_80114F24; - D_8018F9D6 = (s16) D_80114F28; - D_8018F9D8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8018F9F4; -extern s16 D_8018F9F6; -extern s16 D_8018F9F8; -extern s16 D_8018F9FC; -extern s16 D_8018F9FE; -extern s16 D_8018FA00; - -void func_8017B824(void) { - D_8018F9F4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8018F9F6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8018F9F8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8018F9FC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8018F9FE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8018FA00 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8018F9F4; -extern s16 D_8018F9F6; -extern s16 D_8018F9F8; -extern s16 D_8018F9FC; -extern s16 D_8018F9FE; -extern s16 D_8018FA00; - -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_8018F9F4; - D_80114F34 = D_8018F9F6; - D_80114F38 = D_8018F9F8; - D_80114F24 = D_8018F9FC; - D_80114F28 = D_8018F9FE; - D_80114F2C = D_8018FA00; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8018F9DC), src[8..15] -> (*(S8_8017B8E8 *)&D_8018F9D4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8018F9DC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8018F9D4) = ((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_8018F9E4; -extern u16 D_8018F9E6; -extern u16 D_8018F9E8; - -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_8018F964; -extern short D_8018F9EC; -extern short D_8018F9EE; -extern short D_8018F9F0; -extern s16 D_8018F9DC; -extern s16 D_8018F9DE; -extern s16 D_8018F9E0; -extern s16 D_8018F9D4; -extern s16 D_8018F9D6; -extern s16 D_8018F9D8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8018F9E4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8018F9E6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8018F9E8); - (*(s16 *)&D_8018F9EC) = buf[0]; - (*(s16 *)&D_8018F9EE) = buf[1]; - (*(s16 *)&D_8018F9F0) = buf[2]; - D_8018F9DC = D_80114F30 + buf[0]; - D_8018F964 = 0; - D_8018F9DE = D_80114F34 + buf[1]; - D_8018F9E0 = D_80114F38 + buf[2]; - D_8018F9D4 = D_80114F24 + buf[0]; - D_8018F9D6 = D_80114F28 + buf[1]; - D_8018F9D8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8018F984; -extern SV4 D_8018F98C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8018F98C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8018F984 = 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_8018F98C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8018F98C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8018F984) = 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_8018F98C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8018F9AC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8018F9AC; - 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_8018F964; -extern s16 D_8018FB00; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8018F964 = D_8018F964 + 1; - if (D_8018F964 >= 0x1F) { - D_8018FB00 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8018F964; -extern s16 D_8018FB00; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8018F964 = D_8018F964 + 1; - if (0x18 < D_8018F964) { - func_8012A4BC(); - D_8018FB00 = 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_8018F964; -extern void (*D_8018F9A8)(void); -extern short D_8018F9EC; -extern short D_8018F9EE; -extern short D_8018F9F0; -extern s16 D_8018FB00; - -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_8018F964 = D_8018F964 + 1; - if (D_8018F964 >= 0x19) { - if (D_8018F9A8 != 0) { - (*D_8018F9A8)(); - } else { - D_80114F30 = D_80114F30 + D_8018F9EC; - D_80114F34 = D_80114F34 + D_8018F9EE; - D_80114F38 = D_80114F38 + D_8018F9F0; - D_80114F24 = D_80114F24 + D_8018F9EC; - D_80114F28 = D_80114F28 + D_8018F9EE; - D_80114F2C = D_80114F2C + D_8018F9F0; - func_8012A4BC(); - } - D_8018FB00 = 0; - } -} - - - -extern void (*D_80182CA4[])(void); - -void func_8017BE60(void *a0) { - D_80182CA4[*(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 (*D_80182CBC[])(void); - -void func_8017BEBC(void *a0) { - D_80182CBC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017BEF8); - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017BFA4); - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017C014); - -extern void ReadRotMatrix(void *a0); -extern void PushMatrix(void); -extern void func_8004974C(void *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void PopMatrix(void); -void func_8017C3EC(u16 *a0, void *a1) { - s32 mat[8]; - s32 buf[8]; - s16 sv[4]; - ReadRotMatrix((void *)mat); - PushMatrix(); - sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); - sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); - sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); - func_8004974C((void *)mat, (void *)buf); - ApplyMatrixSV((void *)buf, (void *)sv, a1); - PopMatrix(); -} - - -int func_8017C490(short *param_1, short *param_2, short *param_3, int param_4) { - register int i2o __asm__("$5"); - register int i4o __asm__("$9"); - short sVar1; int rx, rz, uVar5; - i4o = param_2[1]; - __asm__ __volatile__("" : : "r"(i4o)); - i2o = param_1[1]; uVar5 = 0; - if (i2o >= i4o) { - rx = param_1[0] - i2o * (param_2[0] - param_1[0]); - rz = param_1[2] - i2o * (param_2[2] - param_1[2]); - } else { - register int den __asm__("$3"); - int p2x = param_2[0], p2z = param_2[2]; - den = i2o - i4o; - rx = p2x + i4o * (p2x - param_1[0]) / den; - rz = p2z + i4o * (p2z - param_1[2]) / den; - } - if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } - else i2o = -0x7fff; - *param_3 = (short)i2o; - if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } - else i2o = -0x7fff; - param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; - if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } - if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } - if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } - if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } - return uVar5; -} - - -extern void ReadGeomOffset(s32 *a0, s32 *a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8004921C(s32 a0, s32 a1); -void func_8017C688(s32 a0, s32 a1) { - s32 ofx; - s32 ofy; - s32 sxy; - s32 p; - ReadGeomOffset(&ofx, &ofy); - func_8004921C(0, 0); - RotTransPers(a0, a1, &sxy, &p); - func_8004921C(ofx, ofy); -} - - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017C6F4); - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017D5C0); - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017E4A0); - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017E4E4(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017E508); - - -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_8017E550(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_8017E5CC(void) { - func_800D1EBC(); - } - - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017E5EC); - - -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_8017E62C(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_8017E6A8(void) { - func_800D1EBC(); -} - - - -extern void (*D_80182CC4[])(void); - -void func_8017E6C8(void *a0) { - D_80182CC4[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void (*D_80182CCC[])(void); - -void func_8017E704(void *a0) { - D_80182CCC[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void (*D_80182CD8[])(void); - -void func_8017E740(void *a0) { - D_80182CD8[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void (*D_80182F84[])(void); - -void func_8017E77C(void *a0) { - D_80182F84[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017E7B8); - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017E808); - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017E844); - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017E8E8); - -extern void func_80171928(void *a0); -void func_8017E91C(void *a0) { - s32 v0 = *(s32 *)((u8 *)a0 + 0x200) - 1; - *(s32 *)((u8 *)a0 + 0x200) = v0; - if (v0 == -1) { - func_80171928(a0); - } -} - - - -extern void (*D_80182F98[])(void); - -void func_8017E950(void *a0) { - D_80182F98[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017E98C); - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017E9CC); - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017EA10); - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017EA88); - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017EADC); - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017EB6C); - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017EBF4); - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017EC64); - - -extern void (*D_80182FB4[])(void); - -void func_8017ECBC(void *a0) { - D_80182FB4[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017ECF8); - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017ED44); - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017EDB4); - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017EDDC); - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017EE04); - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017EEB4); - - -extern void (*D_80182FC0[])(void); - -void func_8017EF5C(void *a0) { - D_80182FC0[*(u8 *)((s32)a0 + 0x4)](); -} - - -extern s32 func_8017EFEC(void); - void func_8017EF98(void) { - func_8017EFEC(); - } - - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017EFB8); - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017EFEC); - - -s32 func_8017F198(void) { - return 135; -} - - - -extern void (*D_80182FC8[])(void); - -void func_8017F1A0(void *a0) { - D_80182FC8[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_8012AD50(void); -void func_8017F1DC(void) { - - extern s32 D_8018FB78; - D_8018FB78 = 0; - func_8012AD50(); -} - - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017A4AC", func_8017F204); - -void func_8017F270(void) { -} - - - diff --git a/src/ov_SC03_003/ov_SC03_003_jr_8017AE2C.c b/src/ov_SC03_003/ov_SC03_003_jr_8017AE2C.c new file mode 100644 index 000000000..c79bf28fd --- /dev/null +++ b/src/ov_SC03_003/ov_SC03_003_jr_8017AE2C.c @@ -0,0 +1,3761 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801817FC; +extern u8 D_8018176C; +extern u8 D_80181748; +extern u8 D_80181724; +extern u8 D_801817D8; +extern u8 D_801817B4; +extern u8 D_80181790; +extern u8 D_80181700; +extern void func_80145934(void); +extern u8 D_8018188C; +extern u8 D_80181868; +extern u8 D_80181844; +extern u8 D_80181820; +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_80180C84[]; +extern unsigned char D_80180CB4[]; +extern unsigned char D_80180D04[]; +extern unsigned char D_80180D34[]; +extern unsigned char D_80180D64[]; +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(void); +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_80180DB4[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80180E7C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80180F04[]; +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_80180F0C; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8018E860; +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_8018E864; +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_80180F3C; +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 void 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_80180FE4[])(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_80181008[])(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_80180FF8; +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_8018101C[])(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_80181028[]; +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_80181038[])(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_80181050[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80181040; +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_80181064[])(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_80181080[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181070; +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_80181094[])(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_801810A8[])(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_801810BC; +extern void (*D_801810E4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801810C4; +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_80181130[])(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_80181134[])(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(void *a0); +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_80181598[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_801815A8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8018E898; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801815D0[])(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_801815B0; +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_801815C0; +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_80181610[])(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_80181618[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801815E4; +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_80181624[])(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_801815F4; +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_8018E8A0; +extern s32 D_8018E8AC; +extern s32 D_8018E8B0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80181660[])(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_80181634[]; +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_8018E8A8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801818B0[])(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_801816D0[]; +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_80181954[])(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_80181AA8[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801818C4; +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_80181AB0[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801818D4; +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_801818F4; +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_80181AB8[])(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(void); +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_80181AE0[])(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_80181AEC[])(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_80181960[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80181B90; +extern void func_8015D380(s32 a0); +extern unsigned char D_80180C74[]; +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_80181BA4[]; +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_80181BE0[]; +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_80181C28; +extern u16 D_80181C2A; +extern u16 D_80181C2C; +extern s32 D_80181C30; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80181C38; +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_80181944; +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_80181CBC[]; +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_80181D6C[])(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_80181D9C[]; +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_80181E00; +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_8018E8B8[]; +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_80181E24[])(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_8018E910[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80181E6C[])(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_80181E5C; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8018E164[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_80181E74[])(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_80181EC8[])(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_80181E90; +extern s16 D_80181EC4; +extern s16 D_80181EC2; +extern s16 D_80181EC0; +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_80181ED4[])(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_8018E970; +extern u8 D_8018E971; +extern u8 D_8018E972; +extern u8 D_8018E973; +extern u8 D_8018E974; +extern u8 D_8018E975; +extern u8 D_8018E976; +extern u8 D_8018E977; +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_80181EE4[])(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_8018E9B0; +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_80181F28[])(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_80181FA4[]; +extern s32 D_80181FC4[]; +extern u8 D_80182040[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80182060[]; +extern u8 D_80182080[]; +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_8018211C[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80182198[])(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_8018E174; +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_801821A4[])(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_801821AC[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80182274[])(void); +extern void func_80166618(void *a0); +extern void (*D_80182284[])(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_80182294[])(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_801822A0[])(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_80182200[]; +extern u8 D_80182214[]; +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_801822B8[])(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_801822C0[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_801822C8[])(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_801822D0[])(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_801822D8[])(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_801822E0[])(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_801822E8[])(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_8018239C[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801823A4[])(void); +extern void func_80169F00(void *a0); +extern char D_80182354[]; +extern char D_80182314[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_801823DC[])(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_801823E8[])(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_80182430[])(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_801824AC[])(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_8018ECD0; +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_801824A0[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_801824E4[]; +extern unsigned short D_801824EC[]; +extern unsigned short D_801824F4[]; +extern unsigned char D_8018ECD8[]; +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_8018ECD0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801824FC[])(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_8018EE0C; +extern M2C_UNK D_8018EE10; +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_8018ED98; +extern void (*D_8018252C[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018EE14[]; +extern u8 D_8018EE1C[]; +extern u8 D_8018EDCC[]; +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_80182534[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80182550[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80182558[])(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_801825C0[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80182564; +extern u8 D_80182570; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801825F4[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801825FC[])(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_80182650[])(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_80182684[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80182674[]; +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_801826A0; +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); +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_80182718[])(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_80182720[])(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_80182728[])(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_80182730[])(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_80182738[])(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_80182740[])(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_8018274C[])(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_80182758[])(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_80182764[])(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_80182774[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80182784[])(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_8018278C[])(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_80182794[])(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_8018279C[])(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_801827A4[])(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_801827AC[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801827B4[])(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_801827BC[])(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_801827C4[])(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_801827CC[])(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_801827D4[])(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_801827DC[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801827E4[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801827EC[])(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_801827F4[])(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_801827FC[])(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_80182804[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018280C[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80182814[])(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_8018281C[])(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_80182824[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018282C[])(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_80182834[])(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_80182878[])(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_8018283C; +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_801828A8[])(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_801828E4[])(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(s32); +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_8018293C[])(); +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_8018294C[])(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_80182954[])(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_80182ABC[])(); +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_80182AC8[])(); +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_8018E3BC; +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 int func_801789AC(void); +extern s16 D_8018FB00; +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_8018F550; +extern short D_8018FB74; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8018F97C; +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_8018F9A4; +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_8018F960; +extern s32 func_8017A3B0(void); +extern short D_8018F99C; +extern short D_8018F998; +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_8018FAD0; +extern s16 D_8018FAD2; +extern s16 D_8018FADC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_8018FAD0; + + 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_8018FADC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_8018FAD0+0xC == &D_8018FADC; 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_8018FAD0 + 0xC)) < 0x101) { + D_8018FAD0 = 0; + D_8018FAD2 = 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_8018FADC); + 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_8018FAD0 + 0xC)) < 0x101) { + D_8018FAD0 = 0; + D_8018FAD2 = 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_8018F9DC; + extern s16 D_8018F9DE; + extern s16 D_8018F9E0; + extern s16 D_8018F9D4; + extern s16 D_8018F9D6; + extern s16 D_8018F9D8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8018F9DC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8018F9DE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8018F9E0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8018F9D4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8018F9D6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8018F9D8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8018F964; +extern u16 D_8018F9E4; +extern u16 D_8018F9E6; +extern u16 D_8018F9E8; +extern s16 D_8018FB00; + +void func_8017B1D8(void) { + func_8012A418(); + D_8018FB00 = 0; + D_8018F964 = 0; + D_8018F9E4 = D_80126B5E; + D_8018F9E6 = D_80126B62; + D_8018F9E8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80182C04[]; + extern s16 D_8018F9DC; + extern s16 D_8018F9D4; + 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_80182C04[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182C04[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8018F9DC; + s16 *p78C = &D_8018F9D4; + *(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_8018FB00 = 1; + D_8018F964 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8018F984; + extern SV4_8017B368 D_8018F98C; + extern s16 D_8018F9DC; + extern s16 D_8018F9D4; + extern u16 D_80182C04; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8018F984; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8018F98C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80182C04)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80182C04)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8018F9DC) = loc0; + (*(SV4_8017B368 *)&D_8018F9D4) = loc1; + D_8018FB00 = 1; + D_8018F964 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80182C04[]; + extern s16 D_8018F9DC; + extern s16 D_8018F9DE; + extern s16 D_8018F9E0; + extern s16 D_8018F9D4; + extern s16 D_8018F9D6; + extern s16 D_8018F9D8; + 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_80182C04[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182C04[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8018F9DC; + s16 *p78C = &D_8018F9D4; + *(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_8018F9DE; + v798 = D_8018F9E0; + v78C = *p78C; + v78E = D_8018F9D6; + v790 = D_8018F9D8; + __asm__ __volatile__(""); + D_8018FB00 = 1; + D_8018F964 = 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_8018F964; +extern s16 D_8018F9DC; +extern s16 D_8018F9DE; +extern s16 D_8018F9E0; +extern s16 D_8018F9D4; +extern s16 D_8018F9D6; +extern s16 D_8018F9D8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8018F964 = 0; + D_8018F9DC = (s16) D_80114F30; + D_8018F9DE = (s16) D_80114F34; + D_8018F9E0 = (s16) D_80114F38; + D_8018F9D4 = (s16) D_80114F24; + D_8018F9D6 = (s16) D_80114F28; + D_8018F9D8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8018F9F4; +extern s16 D_8018F9F6; +extern s16 D_8018F9F8; +extern s16 D_8018F9FC; +extern s16 D_8018F9FE; +extern s16 D_8018FA00; + +void func_8017B824(void) { + D_8018F9F4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8018F9F6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8018F9F8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8018F9FC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8018F9FE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8018FA00 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8018F9F4; +extern s16 D_8018F9F6; +extern s16 D_8018F9F8; +extern s16 D_8018F9FC; +extern s16 D_8018F9FE; +extern s16 D_8018FA00; + +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_8018F9F4; + D_80114F34 = D_8018F9F6; + D_80114F38 = D_8018F9F8; + D_80114F24 = D_8018F9FC; + D_80114F28 = D_8018F9FE; + D_80114F2C = D_8018FA00; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8018F9DC), src[8..15] -> (*(S8_8017B8E8 *)&D_8018F9D4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8018F9DC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8018F9D4) = ((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_8018F9E4; +extern u16 D_8018F9E6; +extern u16 D_8018F9E8; + +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_8018F964; +extern short D_8018F9EC; +extern short D_8018F9EE; +extern short D_8018F9F0; +extern s16 D_8018F9DC; +extern s16 D_8018F9DE; +extern s16 D_8018F9E0; +extern s16 D_8018F9D4; +extern s16 D_8018F9D6; +extern s16 D_8018F9D8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8018F9E4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8018F9E6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8018F9E8); + (*(s16 *)&D_8018F9EC) = buf[0]; + (*(s16 *)&D_8018F9EE) = buf[1]; + (*(s16 *)&D_8018F9F0) = buf[2]; + D_8018F9DC = D_80114F30 + buf[0]; + D_8018F964 = 0; + D_8018F9DE = D_80114F34 + buf[1]; + D_8018F9E0 = D_80114F38 + buf[2]; + D_8018F9D4 = D_80114F24 + buf[0]; + D_8018F9D6 = D_80114F28 + buf[1]; + D_8018F9D8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8018F984; +extern SV4 D_8018F98C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8018F98C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8018F984 = 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_8018F98C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8018F98C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8018F984) = 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_8018F98C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8018F9AC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8018F9AC; + 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_8018F964; +extern s16 D_8018FB00; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8018F964 = D_8018F964 + 1; + if (D_8018F964 >= 0x1F) { + D_8018FB00 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8018F964; +extern s16 D_8018FB00; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8018F964 = D_8018F964 + 1; + if (0x18 < D_8018F964) { + func_8012A4BC(); + D_8018FB00 = 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_8018F964; +extern void (*D_8018F9A8)(void); +extern short D_8018F9EC; +extern short D_8018F9EE; +extern short D_8018F9F0; +extern s16 D_8018FB00; + +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_8018F964 = D_8018F964 + 1; + if (D_8018F964 >= 0x19) { + if (D_8018F9A8 != 0) { + (*D_8018F9A8)(); + } else { + D_80114F30 = D_80114F30 + D_8018F9EC; + D_80114F34 = D_80114F34 + D_8018F9EE; + D_80114F38 = D_80114F38 + D_8018F9F0; + D_80114F24 = D_80114F24 + D_8018F9EC; + D_80114F28 = D_80114F28 + D_8018F9EE; + D_80114F2C = D_80114F2C + D_8018F9F0; + func_8012A4BC(); + } + D_8018FB00 = 0; + } +} + + + +extern void (*D_80182CA4[])(void); + +void func_8017BE60(void *a0) { + D_80182CA4[*(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 (*D_80182CBC[])(void); + +void func_8017BEBC(void *a0) { + D_80182CBC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017BEF8); + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017BFA4); + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017C014); + +extern void ReadRotMatrix(void *a0); +extern void PushMatrix(void); +extern void func_8004974C(void *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern void PopMatrix(void); +void func_8017C3EC(u16 *a0, void *a1) { + s32 mat[8]; + s32 buf[8]; + s16 sv[4]; + ReadRotMatrix((void *)mat); + PushMatrix(); + sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); + sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); + sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); + func_8004974C((void *)mat, (void *)buf); + ApplyMatrixSV((void *)buf, (void *)sv, a1); + PopMatrix(); +} + + +int func_8017C490(short *param_1, short *param_2, short *param_3, int param_4) { + register int i2o __asm__("$5"); + register int i4o __asm__("$9"); + short sVar1; int rx, rz, uVar5; + i4o = param_2[1]; + __asm__ __volatile__("" : : "r"(i4o)); + i2o = param_1[1]; uVar5 = 0; + if (i2o >= i4o) { + rx = param_1[0] - i2o * (param_2[0] - param_1[0]); + rz = param_1[2] - i2o * (param_2[2] - param_1[2]); + } else { + register int den __asm__("$3"); + int p2x = param_2[0], p2z = param_2[2]; + den = i2o - i4o; + rx = p2x + i4o * (p2x - param_1[0]) / den; + rz = p2z + i4o * (p2z - param_1[2]) / den; + } + if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } + else i2o = -0x7fff; + *param_3 = (short)i2o; + if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } + else i2o = -0x7fff; + param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; + if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } + if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } + if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } + if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } + return uVar5; +} + + +extern void ReadGeomOffset(s32 *a0, s32 *a1); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +extern void func_8004921C(s32 a0, s32 a1); +void func_8017C688(s32 a0, s32 a1) { + s32 ofx; + s32 ofy; + s32 sxy; + s32 p; + ReadGeomOffset(&ofx, &ofy); + func_8004921C(0, 0); + RotTransPers(a0, a1, &sxy, &p); + func_8004921C(ofx, ofy); +} + + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017C6F4); + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017D5C0); + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017E4A0); + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017E4E4(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017E508); + + +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_8017E550(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_8017E5CC(void) { + func_800D1EBC(); + } + + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017E5EC); + + +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_8017E62C(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_8017E6A8(void) { + func_800D1EBC(); +} + + + +extern void (*D_80182CC4[])(void); + +void func_8017E6C8(void *a0) { + D_80182CC4[*(u8 *)((s32)a0 + 0x15)](); +} + + + +extern void (*D_80182CCC[])(void); + +void func_8017E704(void *a0) { + D_80182CCC[*(u8 *)((s32)a0 + 0x15)](); +} + + + +extern void (*D_80182CD8[])(void); + +void func_8017E740(void *a0) { + D_80182CD8[*(u8 *)((s32)a0 + 0x15)](); +} + + + +extern void (*D_80182F84[])(void); + +void func_8017E77C(void *a0) { + D_80182F84[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017E7B8); + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017E808); + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017E844); + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017E8E8); + +extern void func_80171928(void *a0); +void func_8017E91C(void *a0) { + s32 v0 = *(s32 *)((u8 *)a0 + 0x200) - 1; + *(s32 *)((u8 *)a0 + 0x200) = v0; + if (v0 == -1) { + func_80171928(a0); + } +} + + + +extern void (*D_80182F98[])(void); + +void func_8017E950(void *a0) { + D_80182F98[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017E98C); + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017E9CC); + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017EA10); + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017EA88); + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017EADC); + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017EB6C); + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017EBF4); + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017EC64); + + +extern void (*D_80182FB4[])(void); + +void func_8017ECBC(void *a0) { + D_80182FB4[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017ECF8); + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017ED44); + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017EDB4); + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017EDDC); + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017EE04); + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017EEB4); + + +extern void (*D_80182FC0[])(void); + +void func_8017EF5C(void *a0) { + D_80182FC0[*(u8 *)((s32)a0 + 0x4)](); +} + + +extern s32 func_8017EFEC(void); + void func_8017EF98(void) { + func_8017EFEC(); + } + + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017EFB8); + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017EFEC); + + +s32 func_8017F198(void) { + return 135; +} + + + +extern void (*D_80182FC8[])(void); + +void func_8017F1A0(void *a0) { + D_80182FC8[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_8012AD50(void); +void func_8017F1DC(void) { + + extern s32 D_8018FB78; + D_8018FB78 = 0; + func_8012AD50(); +} + + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8017AE2C", func_8017F204); + +void func_8017F270(void) { +} + + + + diff --git a/src/ov_SC03_006/ov_SC03_006_jr_8017A4AC.c b/src/ov_SC03_006/ov_SC03_006_jr_8017A4AC.c index a3541253f..71c0102c4 100644 --- a/src/ov_SC03_006/ov_SC03_006_jr_8017A4AC.c +++ b/src/ov_SC03_006/ov_SC03_006_jr_8017A4AC.c @@ -2960,1939 +2960,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801F7354; - extern s16 D_801F7356; - extern s16 D_801F7358; - extern s16 D_801F734C; - extern s16 D_801F734E; - extern s16 D_801F7350; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801F7354, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801F7356, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801F7358, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801F734C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801F734E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801F7350, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801F72DC; -extern u16 D_801F735C; -extern u16 D_801F735E; -extern u16 D_801F7360; -extern s16 D_801F7840; - -void func_8017B1D8(void) { - func_8012A418(); - D_801F7840 = 0; - D_801F72DC = 0; - D_801F735C = D_80126B5E; - D_801F735E = D_80126B62; - D_801F7360 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018FF20[]; - extern s16 D_801F7354; - extern s16 D_801F734C; - 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_8018FF20[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018FF20[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801F7354; - s16 *p78C = &D_801F734C; - *(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_801F7840 = 1; - D_801F72DC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801F72FC; - extern SV4_8017B368 D_801F7304; - extern s16 D_801F7354; - extern s16 D_801F734C; - extern u16 D_8018FF20; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801F72FC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801F7304; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018FF20)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018FF20)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801F7354) = loc0; - (*(SV4_8017B368 *)&D_801F734C) = loc1; - D_801F7840 = 1; - D_801F72DC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018FF20[]; - extern s16 D_801F7354; - extern s16 D_801F7356; - extern s16 D_801F7358; - extern s16 D_801F734C; - extern s16 D_801F734E; - extern s16 D_801F7350; - 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_8018FF20[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018FF20[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801F7354; - s16 *p78C = &D_801F734C; - *(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_801F7356; - v798 = D_801F7358; - v78C = *p78C; - v78E = D_801F734E; - v790 = D_801F7350; - __asm__ __volatile__(""); - D_801F7840 = 1; - D_801F72DC = 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_801F72DC; -extern s16 D_801F7354; -extern s16 D_801F7356; -extern s16 D_801F7358; -extern s16 D_801F734C; -extern s16 D_801F734E; -extern s16 D_801F7350; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801F72DC = 0; - D_801F7354 = (s16) D_80114F30; - D_801F7356 = (s16) D_80114F34; - D_801F7358 = (s16) D_80114F38; - D_801F734C = (s16) D_80114F24; - D_801F734E = (s16) D_80114F28; - D_801F7350 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801F736C; -extern s16 D_801F736E; -extern s16 D_801F7370; -extern s16 D_801F7374; -extern s16 D_801F7376; -extern s16 D_801F7378; - -void func_8017B824(void) { - D_801F736C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801F736E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801F7370 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801F7374 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801F7376 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801F7378 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801F736C; -extern s16 D_801F736E; -extern s16 D_801F7370; -extern s16 D_801F7374; -extern s16 D_801F7376; -extern s16 D_801F7378; - -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_801F736C; - D_80114F34 = D_801F736E; - D_80114F38 = D_801F7370; - D_80114F24 = D_801F7374; - D_80114F28 = D_801F7376; - D_80114F2C = D_801F7378; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801F7354), src[8..15] -> (*(S8_8017B8E8 *)&D_801F734C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801F7354) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801F734C) = ((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_801F735C; -extern u16 D_801F735E; -extern u16 D_801F7360; - -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_801F72DC; -extern short D_801F7364; -extern short D_801F7366; -extern short D_801F7368; -extern s16 D_801F7354; -extern s16 D_801F7356; -extern s16 D_801F7358; -extern s16 D_801F734C; -extern s16 D_801F734E; -extern s16 D_801F7350; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801F735C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801F735E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801F7360); - (*(s16 *)&D_801F7364) = buf[0]; - (*(s16 *)&D_801F7366) = buf[1]; - (*(s16 *)&D_801F7368) = buf[2]; - D_801F7354 = D_80114F30 + buf[0]; - D_801F72DC = 0; - D_801F7356 = D_80114F34 + buf[1]; - D_801F7358 = D_80114F38 + buf[2]; - D_801F734C = D_80114F24 + buf[0]; - D_801F734E = D_80114F28 + buf[1]; - D_801F7350 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801F72FC; -extern SV4 D_801F7304; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801F7304) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801F72FC = 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_801F7304 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801F7304)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801F72FC) = 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_801F7304) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801F7324[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801F7324; - 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_801F72DC; -extern s16 D_801F7840; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801F72DC = D_801F72DC + 1; - if (D_801F72DC >= 0x1F) { - D_801F7840 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801F72DC; -extern s16 D_801F7840; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801F72DC = D_801F72DC + 1; - if (0x18 < D_801F72DC) { - func_8012A4BC(); - D_801F7840 = 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_801F72DC; -extern void (*D_801F7320)(void); -extern short D_801F7364; -extern short D_801F7366; -extern short D_801F7368; -extern s16 D_801F7840; - -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_801F72DC = D_801F72DC + 1; - if (D_801F72DC >= 0x19) { - if (D_801F7320 != 0) { - (*D_801F7320)(); - } else { - D_80114F30 = D_80114F30 + D_801F7364; - D_80114F34 = D_80114F34 + D_801F7366; - D_80114F38 = D_80114F38 + D_801F7368; - D_80114F24 = D_80114F24 + D_801F7364; - D_80114F28 = D_80114F28 + D_801F7366; - D_80114F2C = D_80114F2C + D_801F7368; - func_8012A4BC(); - } - D_801F7840 = 0; - } -} - - - -extern void (*D_8018FFC0[])(void); - -void func_8017BE60(void *a0) { - D_8018FFC0[*(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 (*D_8018FFE4[])(void); - -void func_8017BEBC(void *a0) { - D_8018FFE4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017BEF8); - -DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ - - -extern void (*D_8018FFEC[])(void); - -void func_8017C150(void *a0) { - D_8018FFEC[*(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_8018FFD8; - -void func_8017C18C(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_8018FFD8, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017C294); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017C3C4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017C750); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017C9C8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017CB10); - - -extern void (*D_80190104[])(void); - -void func_8017CC90(void *a0) { - D_80190104[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017CCCC); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017CD18); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017CE0C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017CE8C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017CF40); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017CFAC); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017D038); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017D058); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017D0AC); - - -extern void (*D_8019015C[])(void); - -void func_8017D0E8(void *a0) { - D_8019015C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017D124); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017D174); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017D1D0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017D254); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017D3BC); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017D408); - - -extern void (*D_80190170[])(void); - -void func_8017D714(void *a0) { - D_80190170[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017D750); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017D790); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017D800); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017D88C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017D960); - - -extern void (*D_80190184[])(void); - -void func_8017D9B4(void *a0) { - D_80190184[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017D9F0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017DAA4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017DB00); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017DC70); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017DE0C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017E010); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017E404); - -extern void (*D_80190460[])(void); - -void func_8017E584(void *a0) { - D_80190460[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017E5C0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017E634); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017E710); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017E924); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017E9F8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017EAC8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017EB20); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017EC18); - - -extern void (*D_80190534[])(void); - -void func_8017EC58(void *a0) { - D_80190534[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017EC94); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017ECD4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017ED50); - -void func_8017EDB0(void) { -} - -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); - extern s32 D_8019052C; - void func_8017EDB8(void) { - ((void (*)(void *, s32))func_8016EE40)(&D_8019052C, 0x1000000); - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017EDE0); - -extern s16 D_80126B0C; - s32 func_8017EDFC(void) { - return D_80126B0C; - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017EE0C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017EE6C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017EF38); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017F104); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017F160); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017F1BC); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017F220); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017F2D0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017F394); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017F454); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017F498); - -extern void func_8017F510(s32 arg0, s32 arg1, s32 arg2); - void func_8017F4EC(s32 arg0) { - func_8017F510(arg0, *(s32 *)(arg0 + 0x8), arg0 + 0x10); - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8017F510); - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80180CAC); - -extern void func_80029124(s32 arg0, s32 arg1); - void func_80180CF0(void) { - func_80029124(0x142, 0); - } - - - -extern void (*D_801907B8[])(void); - -void func_80180D14(void *a0) { - D_801907B8[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80180D50); - - -extern s32 func_800167F0(s32 a0); - -s32 func_80180D94(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_801907C0[])(void); - -void func_80180DB8(void *a0) { - D_801907C0[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80180DF4); - - -extern void (*D_801907C8[])(void); - -void func_80180E38(void *a0) { - D_801907C8[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80180E74); - - -extern void (*D_801907D4[])(void); - -void func_80180EC8(void *a0) { - D_801907D4[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80180F04); - - -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_80180F44(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_80180FC0(void) { - func_800D1EBC(); - } - - - -extern void (*D_801907E0[])(void); - -void func_80180FE0(void *a0) { - D_801907E0[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018101C); - -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801907EC; - -void func_801810B4(void) { - ((void (*)(void *, s32))func_8016EE40)(&D_801907EC, 0x1000000); -} - - -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801907F8; - -void func_801810DC(void) { - ((void (*)(void *, s32))func_8016EE40)(&D_801907F8, 0x1000000); -} - - -extern s32 D_801907FC; -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); - -void func_80181104(void) { - ((void (*)(s32, s32))func_8016EE40)((s32)&D_801907FC, 0x1000000); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018112C); - -extern void (*D_80190810[])(void); - -void func_801811CC(u8 *param_1) -{ - D_80190810[param_1[0x4]](); -} - - -extern s32 func_80181228(); - void func_80181208(void) { - func_80181228(); - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80181228); - -extern void (*D_80190824[])(void); - -void func_80181418(void *a0) { - D_80190824[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80181454); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801814DC); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801815A8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018163C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80181694); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018185C); - - -extern void (*D_80190844[])(void); - -void func_8018189C(void *a0) { - D_80190844[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801818D8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80181A14); - -extern void (*D_801908B4[])(void); - -void func_80181ACC(void *a0) { - D_801908B4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80181B08); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80181B50); - -void func_80181C48(void) { -} - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) - -extern u16 D_801270C0; -extern void (*D_801908EC[])(); - -void func_80181C50(int param_1) -{ - if (*(s16 *)&D_801270C0 != 3) { - D_801908EC[*(u16 *)(param_1 + 2)](); - } -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80181C9C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80181D38); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80181F74); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80181FC4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80182080); - - -extern void (*D_80190C34[])(void); - -void func_80182290(void *a0) { - D_80190C34[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801822CC); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801823B8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801826EC); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80182740); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80182794); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801827E8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801828B0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801829FC); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80182A44); - - -// @class: regalloc-order -// @stuck: none — MATCH - -extern u32 D_801F76A8; -extern u16 D_80190C5C[]; -extern u16 D_801F76AC[]; -extern s32 D_80190C7C; - -extern void func_800183E0(s32 a0); - -void func_80182C8C(void) -{ - u32 i; - u16 *p; - u32 base; - u16 *tbl; - - i = 0; - tbl = D_80190C5C; - base = D_801F76A8 >> 8; - p = D_801F76AC; - do { - *p = tbl[(base + i) & 0xF] | 0x8000; - i = i + 1; - p = p + 1; - } while (i < 0x10); - func_800183E0((s32)&D_80190C7C); - D_801F76A8 = D_801F76A8 + 0x100; -} - - - -extern void (*D_80190D34[])(void); - -void func_80182D18(void *a0) { - D_80190D34[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80182D54); - -void func_80182DB8(void) { -} - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80182DC0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80182E0C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80182E4C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80182EA8); - - -extern void (*D_80190D44[])(void); - -void func_80182F10(void *a0) { - D_80190D44[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80182F4C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80183090); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801830D0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80183118); - - -extern void (*D_80190F70[])(void); - -void func_8018316C(void *a0) { - D_80190F70[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801831A8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801833E4); - - -extern void (*D_801910DC[])(void); - -void func_801834B4(void *a0) { - D_801910DC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801834F0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80183564); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801835FC); - - -extern void func_8012BE98(s32 a0, u16 *a1); - extern s32 D_80190D9C; - s32 func_8018360C(s32 arg0) { - return ((s32 (*)(s32, void *))func_8012BE98)(arg0, &D_80190D9C) < 0x401; - } - - -extern void func_8012BE98(s32 a0, u16 *a1); - extern s32 D_80190DA4; - s32 func_80183634(s32 arg0) { - return ((s32 (*)(s32, void *))func_8012BE98)(arg0, &D_80190DA4) < 0x401; - } - - -void func_8018365C(void *a0) { - *(s32 *)((s32)a0 + 0x1C) = 0; - *(s16 *)((s32)a0 + 0xFC) = 0; - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80183668); - -s32 func_80183738(s32 *a0) { - return *(s16 *)((s32)a0 + 0xFC) > 0; - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80183744); - -extern void func_80029124(s32 arg0, s32 arg1); -extern void func_800D0CA0(s32 arg0); - -void func_80183774(void) { - func_80029124(0x138, 1); - func_800D0CA0(1); -} - - -extern s16 func_800D0CE0(void); -s32 func_801837A0(void) { - return ((s32 (*)(void))func_800D0CE0)() == 1; -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801837C4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80183864); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801838FC); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801839A4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80183A70); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80183B14); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80183B9C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80183BC8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80183C08); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80183C4C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80183CC4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80183D18); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80183DD4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80183E3C); - -void func_80183EE0(s32 *a0) { - *(s32 *)((s32)a0 + 0x1C) = 6; - *(s16 *)((s32)a0 + 0x5C) = 0; - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80183EF0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80183FC8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80184034); - -void func_801840B8(void *a0) { - *(short *)((char *)a0 + 0x2) = 0x7; - *(short *)((char *)a0 + 0xfe) = 0; - *(unsigned short *)((char *)a0 + 0x5c) = 0xaa10; - *(short *)((char *)a0 + 0x102) = 1; - } - - -void func_801840D8(void) { -} - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801840E0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018415C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801841E4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80184300); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80184380); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018450C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801846D0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80184800); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80184860); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801848E4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801849A0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80184A94); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80184B30); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80184B90); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80184BF0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80184C4C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80184C9C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80184CE8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80184D98); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80184DC8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80184FDC); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80185030); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801850D8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80185120); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801851F4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80185254); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801852C8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80185304); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80185344); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801853B4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018549C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80185658); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801856A0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018584C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018594C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801859E4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80185BD4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80185D20); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80185E8C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80185EFC); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80185F5C); - - -extern void (*D_801C5B6C[])(void); - -void func_80186034(void *a0) { - D_801C5B6C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80186070); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80186140); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801861D8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80186334); - - -extern void (*D_801C5BD4[])(void); - -void func_80186484(void *a0) { - D_801C5BD4[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_801864C0(void *a0) { - *(s16 *)((char *)a0 + 0x2) = 1; - *(s32 *)((char *)a0 + 0x1c) = 2; - *(s8 *)((char *)a0 + 0xfc) = 1; - *(s8 *)((char *)a0 + 0xfe) = 2; - *(s8 *)((char *)a0 + 0xfd) = 0; - *(s8 *)((char *)a0 + 0xff) = 4; - *(s16 *)((char *)a0 + 0xdc) = 0; - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801864F4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018654C); - - -extern void (*D_801C5C08[])(void); - -void func_801865E8(void *a0) { - D_801C5C08[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80186624); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80186710); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801867A4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801868AC); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801869CC); - - -extern void (*D_801C5C58[])(void); - -void func_80186D18(void *a0) { - D_801C5C58[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80186D54); - - -extern void (*D_801C9794[])(void); - -void func_80186DD4(void *a0) { - D_801C9794[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80186E10); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80186EE4); - -void func_80186F0C(void) { -} - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80186F14); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80187060); - -extern void func_8012C218(void *a0); - void func_80187180(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 2; - ((void (*)(s32))func_8012C218)(*(s32 *)((char *)arg0 + 0xcc)); - } - - -void func_801871AC(void *a0) { - *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 1; - } - - -void func_801871BC(void *a0) { - *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 2; - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801871CC); - - -extern s32 D_80126B58; -extern void func_8014ADA8(s32 a0, s32 a1); - -void func_8018720C(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_80187240(void) { - return ((u32)((s32 (*)(void))func_80174764)() == 1); - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80187264); - - -extern void (*D_801C97BC[])(void); - -void func_801872C8(void *a0) { - D_801C97BC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80187304); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018738C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018744C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801874BC); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801875B4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80187628); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801876E4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80187778); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801877D8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80187914); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801879C4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80187A9C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80187C94); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80187CFC); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80187E24); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80187EF0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018803C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80188080); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801880A8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80188134); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80188410); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80188528); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801886C0); - -extern void func_8013240C(s32 a0); -extern s32 D_801F7730; - -void func_80188710(void) { - ((void (*)(void *))func_8013240C)(&D_801F7730); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80188738); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018876C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801887B0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801888A8); - - -extern s32 rand(void); - void func_8018893C(s32 arg0) { - if ((rand() & 1) != 0) { - *(s16*)(arg0 + 0x2) = 0x1; - } else { - *(s16*)(arg0 + 0x2) = 0x3; - } - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80188978); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80188A2C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80188A94); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80188AF4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80188C18); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80188C90); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80188D1C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80188DA0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80188DD0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80188EA0); - -extern s32 func_8012BEE8(s32 arg); - void func_80188F14(void *a0) { - if (func_8012BEE8((s32)a0)) { - *(s16 *)((s32)a0 + 0x2) = 0x5; - } - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80188F48); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80188FB0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801890C4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80189194); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801891DC); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80189304); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801893BC); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018944C); - -extern s32 func_80189CD4(void); - void func_80189478(void) { - func_80189CD4(); - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80189498); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801894B0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801894DC); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80189554); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018960C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801896EC); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80189744); - -void func_801897E8(s32 *a0) { - *(s32 *)((s32)a0 + 0x1C) = 6; - *(s16 *)((s32)a0 + 0x5C) = 0; - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801897F8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801898E0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018993C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_801899B4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80189A84); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80189B3C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80189C68); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80189CD4); - -extern s32 rand(void); - void func_80189DE0(s32 arg0) { - if ((rand() & 1) != 0) { - *(s16*)(arg0 + 0x2) = 0xA; - } else { - *(s16*)(arg0 + 0x2) = 0x3; - } - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80189E1C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_80189E88); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018A05C); - -extern void func_8002D4C8(s32 arg0, s32 arg1); - void func_8018A100(void) { - func_8002D4C8(0x6AA, 0); - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018A124); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018A168); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018A1B4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018A2F8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018A384); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018A3D4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018A484); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018A4B4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018A538); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018A598); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018A5C4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018A624); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018A698); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018A6F4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018A86C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018A928); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018A96C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018AA60); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018AAE4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018AC10); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018AC60); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018ACD0); - -extern void func_8012C098(void); - void func_8018AD7C(void) { - func_8012C098(); - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018AD9C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018AE08); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018AE90); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018AED4); - - -void func_8018AF78(s32 *a0) { - *(s32 *)((s32)a0 + 0x1C) = 6; - *(s16 *)((s32)a0 + 0x5C) = 0; - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018AF88); - - -// @class: plumbing -// @stuck: none — MATCH (18 ins): if((b&1) && p!=&sym) call(param,&sym); $a0 live, $a1=&sym fall out -extern void func_8012A828(s32 a0, void *a1); -extern void D_801E7D24; - -void func_8018B034(s32 arg0) -{ - if ((M2C_FIELD(arg0, u8 *, 0xC3) & 1) && (M2C_FIELD(arg0, void **, 0x90) != &D_801E7D24)) { - func_8012A828(arg0, &D_801E7D24); - } -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018B07C); - - -extern void func_8012A828(s32 a0, void *a1); -extern u8 D_801E81AC; - -void func_8018B0C4(s32 a0) { - *(s16 *)(a0 + 0x2) = 2; - func_8012A828(a0, &D_801E81AC); - *(s32 *)(a0 + 0x1C) = 0x14; -} - - - -// @class: schedule -// @stuck: none — MATCH (44 ins). Two §3-T4 branch-polarity inversions: outer if(param_2>=iVar2) makes the func_8018B1B4 else-block fall-through; inner if(param_3>=iVar2) return 0 makes the func_8012A828 body fall-through. No pins needed — natural $s1/$s0/$s2 alloc matched. -extern s32 func_8012BCCC(s32 a0); -extern void func_8018B1B4(s32 param_1); -extern void func_8012A828(s32 a0, void *a1); -extern u8 D_801E8104; - -s32 func_8018B104(s32 param_1, s32 param_2, s32 param_3) { - s32 iVar2; - s16 sVar1; - - iVar2 = func_8012BCCC(param_1); - if (param_2 >= iVar2) { - func_8018B1B4(param_1); - return 1; - } - sVar1 = *(s16 *)(param_1 + 0xdc) + 1; - *(s16 *)(param_1 + 0xdc) = sVar1; - if (sVar1 < 0x79) { - return 0; - } - if (param_3 >= iVar2) { - return 0; - } - *(s16 *)(param_1 + 2) = 1; - func_8012A828(param_1, &D_801E8104); - return 1; -} - - - -// @class: plumbing -// @stuck: none — MATCH (straightforward; callee sigs canonical from overlay) -extern void func_8012A828(s32 a0, void *a1); -extern void func_80142414(s32 a0, s16 a1); -extern u8 D_801E7EC4; - -void func_8018B1B4(s32 param_1) { - *(s16 *)(param_1 + 2) = 4; - func_8012A828(param_1, &D_801E7EC4); - *(s32 *)(param_1 + 0x1c) = 0x1e; - if (*(s16 *)(param_1 + 0xfc) == 0) { - *(s16 *)(param_1 + 0xfc) = 1; - ((void (*)(s32, s32))func_80142414)(param_1, -0x96); - } -} - - -void func_8018B210(void *a0) { - *(short *)((char *)a0 + 0x2) = 0x5; - *(int *)((char *)a0 + 0x1c) = 0x14; - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018B224); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018B280); - - -extern void (*D_801E01A8[])(void); - -void func_8018B304(void *a0) { - D_801E01A8[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801E01F0[])(void); - -void func_8018B340(void *a0) { - D_801E01F0[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: plumbing -// @stuck: none — MATCH (clean if/else, sh into delay slot of func_8001CA88 call) - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern int func_8001CA88(int, void *); -extern void func_80143994(s32 a0, s32 a1); -extern int D_801E01B0; - -void func_8018B37C(int param_1) -{ - int iVar1; - - iVar1 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = iVar1; - if (iVar1 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - *(short *)(param_1 + 2) = 1; - func_8001CA88(*(int *)(param_1 + 0x20), &D_801E01B0); - func_80143994(param_1, 0x1000); - } -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018B3E0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018B438); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018B4A4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018B5E0); - -extern s32 func_8012BEE8(s32 arg); - extern void func_8018B224(s32 arg); - void func_8018B64C(void *a0) { - if (func_8012BEE8((s32)a0)) { - ((void (*)(s32))func_8018B224)((s32)a0); - } - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018B684); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018B6E8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018B740); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018B7F8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018B868); - -extern void func_80029124(s32 arg0, s32 arg1); - void func_8018B9F8(void) { - func_80029124(0xF0, 1); - } - - -extern void (*D_801F1714[])(void); - -void func_8018BA1C(void *a0) { - D_801F1714[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018BA58); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018BB54); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018BDE4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018BF78); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018BFD0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018C04C); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018C090); - -extern void func_80174684(void *); - extern s32 func_8018C118; - void func_8018C0F0(void) { - func_80174684(&func_8018C118); - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018C118); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018C154); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018C1C4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018C240); - -void func_8018C29C(void) { -} - -extern void func_80174684(void *); - extern s32 func_8018C2CC; - void func_8018C2A4(void) { - func_80174684(&func_8018C2CC); - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018C2CC); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018C308); - -void func_8018C374(void) { -} - -extern void func_80174684(void *); - extern s32 func_8018C3A4(s32); - void func_8018C37C(void) { - func_80174684((void *)func_8018C3A4); - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018C3A4); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018C3E0); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018C43C); - -void func_8018C48C(void) { -} - -extern void func_80174684(void *); - extern s32 func_8018C4BC(s32); - void func_8018C494(void) { - func_80174684((void *)func_8018C4BC); - } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018C4BC); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018C4F8); - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017A4AC", func_8018C548); - -void func_8018C58C(void) { -} - - - diff --git a/src/ov_SC03_006/ov_SC03_006_jr_8017AE2C.c b/src/ov_SC03_006/ov_SC03_006_jr_8017AE2C.c new file mode 100644 index 000000000..70e599d4d --- /dev/null +++ b/src/ov_SC03_006/ov_SC03_006_jr_8017AE2C.c @@ -0,0 +1,4832 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018EB18; +extern u8 D_8018EA88; +extern u8 D_8018EA64; +extern u8 D_8018EA40; +extern u8 D_8018EAF4; +extern u8 D_8018EAD0; +extern u8 D_8018EAAC; +extern u8 D_8018EA1C; +extern void func_80145934(void); +extern u8 D_8018EBA8; +extern u8 D_8018EB84; +extern u8 D_8018EB60; +extern u8 D_8018EB3C; +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_8018DFA0[]; +extern unsigned char D_8018DFD0[]; +extern unsigned char D_8018E020[]; +extern unsigned char D_8018E050[]; +extern unsigned char D_8018E080[]; +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(void); +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_8018E0D0[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018E198[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018E220[]; +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_8018E228; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801F61D8; +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_801F61DC; +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_8018E258; +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 void 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_8018E300[])(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_8018E324[])(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_8018E314; +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_8018E338[])(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_8018E344[]; +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_8018E354[])(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_8018E36C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018E35C; +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_8018E380[])(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_8018E39C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018E38C; +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_8018E3B0[])(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_8018E3C4[])(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_8018E3D8; +extern void (*D_8018E400[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018E3E0; +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_8018E44C[])(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_8018E450[])(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(void *a0); +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_8018E8B4[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018E8C4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801F6210; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018E8EC[])(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_8018E8CC; +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_8018E8DC; +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_8018E92C[])(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_8018E934[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018E900; +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_8018E940[])(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_8018E910; +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_801F6218; +extern s32 D_801F6224; +extern s32 D_801F6228; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018E97C[])(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_8018E950[]; +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_801F6220; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018EBCC[])(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_8018E9EC[]; +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_8018EC70[])(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_8018EDC4[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018EBE0; +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_8018EDCC[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018EBF0; +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_8018EC10; +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_8018EDD4[])(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(void); +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_8018EDFC[])(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_8018EE08[])(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_8018EC7C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018EEAC; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018DF90[]; +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_8018EEC0[]; +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_8018EEFC[]; +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_8018EF44; +extern u16 D_8018EF46; +extern u16 D_8018EF48; +extern s32 D_8018EF4C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018EF54; +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_8018EC60; +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_8018EFD8[]; +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_8018F088[])(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_8018F0B8[]; +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_8018F11C; +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_801F6230[]; +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_8018F140[])(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_801F6288[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018F188[])(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_8018F178; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801F5A20[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_8018F190[])(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_8018F1E4[])(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_8018F1AC; +extern s16 D_8018F1E0; +extern s16 D_8018F1DE; +extern s16 D_8018F1DC; +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_8018F1F0[])(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_801F62E8; +extern u8 D_801F62E9; +extern u8 D_801F62EA; +extern u8 D_801F62EB; +extern u8 D_801F62EC; +extern u8 D_801F62ED; +extern u8 D_801F62EE; +extern u8 D_801F62EF; +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_8018F200[])(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_801F6328; +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_8018F244[])(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_8018F2C0[]; +extern s32 D_8018F2E0[]; +extern u8 D_8018F35C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018F37C[]; +extern u8 D_8018F39C[]; +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_8018F438[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018F4B4[])(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_801F5A30; +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_8018F4C0[])(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_8018F4C8[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018F590[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018F5A0[])(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_8018F5B0[])(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_8018F5BC[])(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_8018F51C[]; +extern u8 D_8018F530[]; +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_8018F5D4[])(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_8018F5DC[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018F5E4[])(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_8018F5EC[])(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_8018F5F4[])(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_8018F5FC[])(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_8018F604[])(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_8018F6B8[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018F6C0[])(void); +extern void func_80169F00(void *a0); +extern char D_8018F670[]; +extern char D_8018F630[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018F6F8[])(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_8018F704[])(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_8018F74C[])(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_8018F7C8[])(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_801F6648; +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_8018F7BC[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018F800[]; +extern unsigned short D_8018F808[]; +extern unsigned short D_8018F810[]; +extern unsigned char D_801F6650[]; +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_801F6648; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018F818[])(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_801F6784; +extern M2C_UNK D_801F6788; +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_801F6710; +extern void (*D_8018F848[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801F678C[]; +extern u8 D_801F6794[]; +extern u8 D_801F6744[]; +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_8018F850[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018F86C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018F874[])(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_8018F8DC[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018F880; +extern u8 D_8018F88C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018F910[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018F918[])(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_8018F96C[])(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_8018F9A0[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018F990[]; +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_8018F9BC; +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); +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_8018FA34[])(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_8018FA3C[])(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_8018FA44[])(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_8018FA4C[])(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_8018FA54[])(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_8018FA5C[])(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_8018FA68[])(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_8018FA74[])(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_8018FA80[])(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_8018FA90[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018FAA0[])(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_8018FAA8[])(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_8018FAB0[])(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_8018FAB8[])(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_8018FAC0[])(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_8018FAC8[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018FAD0[])(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_8018FAD8[])(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_8018FAE0[])(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_8018FAE8[])(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_8018FAF0[])(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_8018FAF8[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018FB00[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018FB08[])(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_8018FB10[])(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_8018FB18[])(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_8018FB20[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018FB28[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018FB30[])(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_8018FB38[])(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_8018FB40[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018FB48[])(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_8018FB50[])(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_8018FB94[])(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_8018FB58; +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_8018FBC4[])(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_8018FC00[])(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(s32); +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_8018FC58[])(); +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_8018FC68[])(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_8018FC70[])(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_8018FDD8[])(); +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_8018FDE4[])(); +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_801F5C78; +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 int func_801789AC(void); +extern s16 D_801F7840; +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_801F6EC8; +extern short D_801F78B4; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801F72F4; +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_801F731C; +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_801F72D8; +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 void func_8012BE98(s32, u16*); +extern s32 func_80012A60(s32 a0, s32 a1); + + +void func_8017AE2C(s32 param_1) { + + extern s16 D_801F7810; + extern s16 D_801F7812; + extern s16 D_801F781C; + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801F7810; + + 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_801F781C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801F7810+0xC == &D_801F781C; distinct rtx defeats gcc's address-CSE + so BE98's arg rematerializes instead of sharing the store's reg (byte-gate). */ + if (((s32 (*)(s32, u16 *))func_8012BE98)(pv, (u16 *)((s32)&D_801F7810 + 0xC)) < 0x101) { + D_801F7810 = 0; + D_801F7812 = 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_801F781C); + 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 (((s32 (*)(s32, u16 *))func_8012BE98)(pv, (u16 *)((s32)&D_801F7810 + 0xC)) < 0x101) { + D_801F7810 = 0; + D_801F7812 = 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_801F7354; + extern s16 D_801F7356; + extern s16 D_801F7358; + extern s16 D_801F734C; + extern s16 D_801F734E; + extern s16 D_801F7350; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801F7354, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801F7356, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801F7358, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801F734C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801F734E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801F7350, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801F72DC; +extern u16 D_801F735C; +extern u16 D_801F735E; +extern u16 D_801F7360; +extern s16 D_801F7840; + +void func_8017B1D8(void) { + func_8012A418(); + D_801F7840 = 0; + D_801F72DC = 0; + D_801F735C = D_80126B5E; + D_801F735E = D_80126B62; + D_801F7360 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018FF20[]; + extern s16 D_801F7354; + extern s16 D_801F734C; + 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_8018FF20[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018FF20[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801F7354; + s16 *p78C = &D_801F734C; + *(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_801F7840 = 1; + D_801F72DC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801F72FC; + extern SV4_8017B368 D_801F7304; + extern s16 D_801F7354; + extern s16 D_801F734C; + extern u16 D_8018FF20; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801F72FC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801F7304; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018FF20)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018FF20)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801F7354) = loc0; + (*(SV4_8017B368 *)&D_801F734C) = loc1; + D_801F7840 = 1; + D_801F72DC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018FF20[]; + extern s16 D_801F7354; + extern s16 D_801F7356; + extern s16 D_801F7358; + extern s16 D_801F734C; + extern s16 D_801F734E; + extern s16 D_801F7350; + 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_8018FF20[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018FF20[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801F7354; + s16 *p78C = &D_801F734C; + *(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_801F7356; + v798 = D_801F7358; + v78C = *p78C; + v78E = D_801F734E; + v790 = D_801F7350; + __asm__ __volatile__(""); + D_801F7840 = 1; + D_801F72DC = 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_801F72DC; +extern s16 D_801F7354; +extern s16 D_801F7356; +extern s16 D_801F7358; +extern s16 D_801F734C; +extern s16 D_801F734E; +extern s16 D_801F7350; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801F72DC = 0; + D_801F7354 = (s16) D_80114F30; + D_801F7356 = (s16) D_80114F34; + D_801F7358 = (s16) D_80114F38; + D_801F734C = (s16) D_80114F24; + D_801F734E = (s16) D_80114F28; + D_801F7350 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801F736C; +extern s16 D_801F736E; +extern s16 D_801F7370; +extern s16 D_801F7374; +extern s16 D_801F7376; +extern s16 D_801F7378; + +void func_8017B824(void) { + D_801F736C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801F736E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801F7370 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801F7374 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801F7376 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801F7378 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801F736C; +extern s16 D_801F736E; +extern s16 D_801F7370; +extern s16 D_801F7374; +extern s16 D_801F7376; +extern s16 D_801F7378; + +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_801F736C; + D_80114F34 = D_801F736E; + D_80114F38 = D_801F7370; + D_80114F24 = D_801F7374; + D_80114F28 = D_801F7376; + D_80114F2C = D_801F7378; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801F7354), src[8..15] -> (*(S8_8017B8E8 *)&D_801F734C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801F7354) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801F734C) = ((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_801F735C; +extern u16 D_801F735E; +extern u16 D_801F7360; + +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_801F72DC; +extern short D_801F7364; +extern short D_801F7366; +extern short D_801F7368; +extern s16 D_801F7354; +extern s16 D_801F7356; +extern s16 D_801F7358; +extern s16 D_801F734C; +extern s16 D_801F734E; +extern s16 D_801F7350; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801F735C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801F735E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801F7360); + (*(s16 *)&D_801F7364) = buf[0]; + (*(s16 *)&D_801F7366) = buf[1]; + (*(s16 *)&D_801F7368) = buf[2]; + D_801F7354 = D_80114F30 + buf[0]; + D_801F72DC = 0; + D_801F7356 = D_80114F34 + buf[1]; + D_801F7358 = D_80114F38 + buf[2]; + D_801F734C = D_80114F24 + buf[0]; + D_801F734E = D_80114F28 + buf[1]; + D_801F7350 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801F72FC; +extern SV4 D_801F7304; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801F7304) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801F72FC = 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_801F7304 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801F7304)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801F72FC) = 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_801F7304) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801F7324[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801F7324; + 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_801F72DC; +extern s16 D_801F7840; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801F72DC = D_801F72DC + 1; + if (D_801F72DC >= 0x1F) { + D_801F7840 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801F72DC; +extern s16 D_801F7840; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801F72DC = D_801F72DC + 1; + if (0x18 < D_801F72DC) { + func_8012A4BC(); + D_801F7840 = 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_801F72DC; +extern void (*D_801F7320)(void); +extern short D_801F7364; +extern short D_801F7366; +extern short D_801F7368; +extern s16 D_801F7840; + +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_801F72DC = D_801F72DC + 1; + if (D_801F72DC >= 0x19) { + if (D_801F7320 != 0) { + (*D_801F7320)(); + } else { + D_80114F30 = D_80114F30 + D_801F7364; + D_80114F34 = D_80114F34 + D_801F7366; + D_80114F38 = D_80114F38 + D_801F7368; + D_80114F24 = D_80114F24 + D_801F7364; + D_80114F28 = D_80114F28 + D_801F7366; + D_80114F2C = D_80114F2C + D_801F7368; + func_8012A4BC(); + } + D_801F7840 = 0; + } +} + + + +extern void (*D_8018FFC0[])(void); + +void func_8017BE60(void *a0) { + D_8018FFC0[*(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 (*D_8018FFE4[])(void); + +void func_8017BEBC(void *a0) { + D_8018FFE4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017BEF8); + +DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ + + +extern void (*D_8018FFEC[])(void); + +void func_8017C150(void *a0) { + D_8018FFEC[*(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_8018FFD8; + +void func_8017C18C(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_8018FFD8, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017C294); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017C3C4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017C750); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017C9C8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017CB10); + + +extern void (*D_80190104[])(void); + +void func_8017CC90(void *a0) { + D_80190104[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017CCCC); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017CD18); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017CE0C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017CE8C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017CF40); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017CFAC); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017D038); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017D058); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017D0AC); + + +extern void (*D_8019015C[])(void); + +void func_8017D0E8(void *a0) { + D_8019015C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017D124); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017D174); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017D1D0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017D254); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017D3BC); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017D408); + + +extern void (*D_80190170[])(void); + +void func_8017D714(void *a0) { + D_80190170[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017D750); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017D790); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017D800); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017D88C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017D960); + + +extern void (*D_80190184[])(void); + +void func_8017D9B4(void *a0) { + D_80190184[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017D9F0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017DAA4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017DB00); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017DC70); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017DE0C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017E010); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017E404); + +extern void (*D_80190460[])(void); + +void func_8017E584(void *a0) { + D_80190460[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017E5C0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017E634); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017E710); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017E924); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017E9F8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017EAC8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017EB20); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017EC18); + + +extern void (*D_80190534[])(void); + +void func_8017EC58(void *a0) { + D_80190534[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017EC94); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017ECD4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017ED50); + +void func_8017EDB0(void) { +} + +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); + extern s32 D_8019052C; + void func_8017EDB8(void) { + ((void (*)(void *, s32))func_8016EE40)(&D_8019052C, 0x1000000); + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017EDE0); + +extern s16 D_80126B0C; + s32 func_8017EDFC(void) { + return D_80126B0C; + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017EE0C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017EE6C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017EF38); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017F104); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017F160); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017F1BC); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017F220); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017F2D0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017F394); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017F454); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017F498); + +extern void func_8017F510(s32 arg0, s32 arg1, s32 arg2); + void func_8017F4EC(s32 arg0) { + func_8017F510(arg0, *(s32 *)(arg0 + 0x8), arg0 + 0x10); + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8017F510); + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80180CAC); + +extern void func_80029124(s32 arg0, s32 arg1); + void func_80180CF0(void) { + func_80029124(0x142, 0); + } + + + +extern void (*D_801907B8[])(void); + +void func_80180D14(void *a0) { + D_801907B8[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80180D50); + + +extern s32 func_800167F0(s32 a0); + +s32 func_80180D94(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_801907C0[])(void); + +void func_80180DB8(void *a0) { + D_801907C0[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80180DF4); + + +extern void (*D_801907C8[])(void); + +void func_80180E38(void *a0) { + D_801907C8[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80180E74); + + +extern void (*D_801907D4[])(void); + +void func_80180EC8(void *a0) { + D_801907D4[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80180F04); + + +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_80180F44(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_80180FC0(void) { + func_800D1EBC(); + } + + + +extern void (*D_801907E0[])(void); + +void func_80180FE0(void *a0) { + D_801907E0[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018101C); + +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); +extern M2C_UNK D_801907EC; + +void func_801810B4(void) { + ((void (*)(void *, s32))func_8016EE40)(&D_801907EC, 0x1000000); +} + + +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); +extern M2C_UNK D_801907F8; + +void func_801810DC(void) { + ((void (*)(void *, s32))func_8016EE40)(&D_801907F8, 0x1000000); +} + + +extern s32 D_801907FC; +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); + +void func_80181104(void) { + ((void (*)(s32, s32))func_8016EE40)((s32)&D_801907FC, 0x1000000); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018112C); + +extern void (*D_80190810[])(void); + +void func_801811CC(u8 *param_1) +{ + D_80190810[param_1[0x4]](); +} + + +extern s32 func_80181228(); + void func_80181208(void) { + func_80181228(); + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80181228); + +extern void (*D_80190824[])(void); + +void func_80181418(void *a0) { + D_80190824[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80181454); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801814DC); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801815A8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018163C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80181694); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018185C); + + +extern void (*D_80190844[])(void); + +void func_8018189C(void *a0) { + D_80190844[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801818D8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80181A14); + +extern void (*D_801908B4[])(void); + +void func_80181ACC(void *a0) { + D_801908B4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80181B08); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80181B50); + +void func_80181C48(void) { +} + + +// @class: struct +// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) + +extern u16 D_801270C0; +extern void (*D_801908EC[])(); + +void func_80181C50(int param_1) +{ + if (*(s16 *)&D_801270C0 != 3) { + D_801908EC[*(u16 *)(param_1 + 2)](); + } +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80181C9C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80181D38); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80181F74); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80181FC4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80182080); + + +extern void (*D_80190C34[])(void); + +void func_80182290(void *a0) { + D_80190C34[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801822CC); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801823B8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801826EC); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80182740); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80182794); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801827E8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801828B0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801829FC); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80182A44); + + +// @class: regalloc-order +// @stuck: none — MATCH + +extern u32 D_801F76A8; +extern u16 D_80190C5C[]; +extern u16 D_801F76AC[]; +extern s32 D_80190C7C; + +extern void func_800183E0(s32 a0); + +void func_80182C8C(void) +{ + u32 i; + u16 *p; + u32 base; + u16 *tbl; + + i = 0; + tbl = D_80190C5C; + base = D_801F76A8 >> 8; + p = D_801F76AC; + do { + *p = tbl[(base + i) & 0xF] | 0x8000; + i = i + 1; + p = p + 1; + } while (i < 0x10); + func_800183E0((s32)&D_80190C7C); + D_801F76A8 = D_801F76A8 + 0x100; +} + + + +extern void (*D_80190D34[])(void); + +void func_80182D18(void *a0) { + D_80190D34[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80182D54); + +void func_80182DB8(void) { +} + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80182DC0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80182E0C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80182E4C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80182EA8); + + +extern void (*D_80190D44[])(void); + +void func_80182F10(void *a0) { + D_80190D44[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80182F4C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80183090); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801830D0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80183118); + + +extern void (*D_80190F70[])(void); + +void func_8018316C(void *a0) { + D_80190F70[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801831A8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801833E4); + + +extern void (*D_801910DC[])(void); + +void func_801834B4(void *a0) { + D_801910DC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801834F0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80183564); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801835FC); + + +extern void func_8012BE98(s32 a0, u16 *a1); + extern s32 D_80190D9C; + s32 func_8018360C(s32 arg0) { + return ((s32 (*)(s32, void *))func_8012BE98)(arg0, &D_80190D9C) < 0x401; + } + + +extern void func_8012BE98(s32 a0, u16 *a1); + extern s32 D_80190DA4; + s32 func_80183634(s32 arg0) { + return ((s32 (*)(s32, void *))func_8012BE98)(arg0, &D_80190DA4) < 0x401; + } + + +void func_8018365C(void *a0) { + *(s32 *)((s32)a0 + 0x1C) = 0; + *(s16 *)((s32)a0 + 0xFC) = 0; + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80183668); + +s32 func_80183738(s32 *a0) { + return *(s16 *)((s32)a0 + 0xFC) > 0; + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80183744); + +extern void func_80029124(s32 arg0, s32 arg1); +extern void func_800D0CA0(s32 arg0); + +void func_80183774(void) { + func_80029124(0x138, 1); + func_800D0CA0(1); +} + + +extern s16 func_800D0CE0(void); +s32 func_801837A0(void) { + return ((s32 (*)(void))func_800D0CE0)() == 1; +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801837C4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80183864); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801838FC); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801839A4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80183A70); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80183B14); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80183B9C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80183BC8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80183C08); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80183C4C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80183CC4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80183D18); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80183DD4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80183E3C); + +void func_80183EE0(s32 *a0) { + *(s32 *)((s32)a0 + 0x1C) = 6; + *(s16 *)((s32)a0 + 0x5C) = 0; + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80183EF0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80183FC8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80184034); + +void func_801840B8(void *a0) { + *(short *)((char *)a0 + 0x2) = 0x7; + *(short *)((char *)a0 + 0xfe) = 0; + *(unsigned short *)((char *)a0 + 0x5c) = 0xaa10; + *(short *)((char *)a0 + 0x102) = 1; + } + + +void func_801840D8(void) { +} + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801840E0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018415C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801841E4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80184300); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80184380); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018450C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801846D0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80184800); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80184860); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801848E4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801849A0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80184A94); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80184B30); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80184B90); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80184BF0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80184C4C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80184C9C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80184CE8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80184D98); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80184DC8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80184FDC); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80185030); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801850D8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80185120); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801851F4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80185254); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801852C8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80185304); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80185344); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801853B4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018549C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80185658); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801856A0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018584C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018594C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801859E4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80185BD4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80185D20); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80185E8C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80185EFC); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80185F5C); + + +extern void (*D_801C5B6C[])(void); + +void func_80186034(void *a0) { + D_801C5B6C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80186070); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80186140); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801861D8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80186334); + + +extern void (*D_801C5BD4[])(void); + +void func_80186484(void *a0) { + D_801C5BD4[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_801864C0(void *a0) { + *(s16 *)((char *)a0 + 0x2) = 1; + *(s32 *)((char *)a0 + 0x1c) = 2; + *(s8 *)((char *)a0 + 0xfc) = 1; + *(s8 *)((char *)a0 + 0xfe) = 2; + *(s8 *)((char *)a0 + 0xfd) = 0; + *(s8 *)((char *)a0 + 0xff) = 4; + *(s16 *)((char *)a0 + 0xdc) = 0; + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801864F4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018654C); + + +extern void (*D_801C5C08[])(void); + +void func_801865E8(void *a0) { + D_801C5C08[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80186624); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80186710); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801867A4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801868AC); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801869CC); + + +extern void (*D_801C5C58[])(void); + +void func_80186D18(void *a0) { + D_801C5C58[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80186D54); + + +extern void (*D_801C9794[])(void); + +void func_80186DD4(void *a0) { + D_801C9794[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80186E10); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80186EE4); + +void func_80186F0C(void) { +} + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80186F14); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80187060); + +extern void func_8012C218(void *a0); + void func_80187180(void * arg0) { + *(short *)((char *)arg0 + 0x2) = 2; + ((void (*)(s32))func_8012C218)(*(s32 *)((char *)arg0 + 0xcc)); + } + + +void func_801871AC(void *a0) { + *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 1; + } + + +void func_801871BC(void *a0) { + *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 2; + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801871CC); + + +extern s32 D_80126B58; +extern void func_8014ADA8(s32 a0, s32 a1); + +void func_8018720C(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_80187240(void) { + return ((u32)((s32 (*)(void))func_80174764)() == 1); + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80187264); + + +extern void (*D_801C97BC[])(void); + +void func_801872C8(void *a0) { + D_801C97BC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80187304); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018738C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018744C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801874BC); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801875B4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80187628); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801876E4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80187778); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801877D8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80187914); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801879C4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80187A9C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80187C94); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80187CFC); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80187E24); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80187EF0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018803C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80188080); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801880A8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80188134); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80188410); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80188528); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801886C0); + +extern void func_8013240C(s32 a0); +extern s32 D_801F7730; + +void func_80188710(void) { + ((void (*)(void *))func_8013240C)(&D_801F7730); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80188738); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018876C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801887B0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801888A8); + + +extern s32 rand(void); + void func_8018893C(s32 arg0) { + if ((rand() & 1) != 0) { + *(s16*)(arg0 + 0x2) = 0x1; + } else { + *(s16*)(arg0 + 0x2) = 0x3; + } + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80188978); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80188A2C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80188A94); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80188AF4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80188C18); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80188C90); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80188D1C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80188DA0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80188DD0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80188EA0); + +extern s32 func_8012BEE8(s32 arg); + void func_80188F14(void *a0) { + if (func_8012BEE8((s32)a0)) { + *(s16 *)((s32)a0 + 0x2) = 0x5; + } + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80188F48); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80188FB0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801890C4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80189194); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801891DC); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80189304); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801893BC); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018944C); + +extern s32 func_80189CD4(void); + void func_80189478(void) { + func_80189CD4(); + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80189498); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801894B0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801894DC); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80189554); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018960C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801896EC); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80189744); + +void func_801897E8(s32 *a0) { + *(s32 *)((s32)a0 + 0x1C) = 6; + *(s16 *)((s32)a0 + 0x5C) = 0; + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801897F8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801898E0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018993C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801899B4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80189A84); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80189B3C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80189C68); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80189CD4); + +extern s32 rand(void); + void func_80189DE0(s32 arg0) { + if ((rand() & 1) != 0) { + *(s16*)(arg0 + 0x2) = 0xA; + } else { + *(s16*)(arg0 + 0x2) = 0x3; + } + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80189E1C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80189E88); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A05C); + +extern void func_8002D4C8(s32 arg0, s32 arg1); + void func_8018A100(void) { + func_8002D4C8(0x6AA, 0); + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A124); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A168); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A1B4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A2F8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A384); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A3D4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A484); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A4B4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A538); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A598); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A5C4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A624); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A698); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A6F4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A86C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A928); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018A96C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018AA60); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018AAE4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018AC10); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018AC60); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018ACD0); + +extern void func_8012C098(void); + void func_8018AD7C(void) { + func_8012C098(); + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018AD9C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018AE08); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018AE90); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018AED4); + + +void func_8018AF78(s32 *a0) { + *(s32 *)((s32)a0 + 0x1C) = 6; + *(s16 *)((s32)a0 + 0x5C) = 0; + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018AF88); + + +// @class: plumbing +// @stuck: none — MATCH (18 ins): if((b&1) && p!=&sym) call(param,&sym); $a0 live, $a1=&sym fall out +extern void func_8012A828(s32 a0, void *a1); +extern void D_801E7D24; + +void func_8018B034(s32 arg0) +{ + if ((M2C_FIELD(arg0, u8 *, 0xC3) & 1) && (M2C_FIELD(arg0, void **, 0x90) != &D_801E7D24)) { + func_8012A828(arg0, &D_801E7D24); + } +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018B07C); + + +extern void func_8012A828(s32 a0, void *a1); +extern u8 D_801E81AC; + +void func_8018B0C4(s32 a0) { + *(s16 *)(a0 + 0x2) = 2; + func_8012A828(a0, &D_801E81AC); + *(s32 *)(a0 + 0x1C) = 0x14; +} + + + +// @class: schedule +// @stuck: none — MATCH (44 ins). Two §3-T4 branch-polarity inversions: outer if(param_2>=iVar2) makes the func_8018B1B4 else-block fall-through; inner if(param_3>=iVar2) return 0 makes the func_8012A828 body fall-through. No pins needed — natural $s1/$s0/$s2 alloc matched. +extern s32 func_8012BCCC(s32 a0); +extern void func_8018B1B4(s32 param_1); +extern void func_8012A828(s32 a0, void *a1); +extern u8 D_801E8104; + +s32 func_8018B104(s32 param_1, s32 param_2, s32 param_3) { + s32 iVar2; + s16 sVar1; + + iVar2 = func_8012BCCC(param_1); + if (param_2 >= iVar2) { + func_8018B1B4(param_1); + return 1; + } + sVar1 = *(s16 *)(param_1 + 0xdc) + 1; + *(s16 *)(param_1 + 0xdc) = sVar1; + if (sVar1 < 0x79) { + return 0; + } + if (param_3 >= iVar2) { + return 0; + } + *(s16 *)(param_1 + 2) = 1; + func_8012A828(param_1, &D_801E8104); + return 1; +} + + + +// @class: plumbing +// @stuck: none — MATCH (straightforward; callee sigs canonical from overlay) +extern void func_8012A828(s32 a0, void *a1); +extern void func_80142414(s32 a0, s16 a1); +extern u8 D_801E7EC4; + +void func_8018B1B4(s32 param_1) { + *(s16 *)(param_1 + 2) = 4; + func_8012A828(param_1, &D_801E7EC4); + *(s32 *)(param_1 + 0x1c) = 0x1e; + if (*(s16 *)(param_1 + 0xfc) == 0) { + *(s16 *)(param_1 + 0xfc) = 1; + ((void (*)(s32, s32))func_80142414)(param_1, -0x96); + } +} + + +void func_8018B210(void *a0) { + *(short *)((char *)a0 + 0x2) = 0x5; + *(int *)((char *)a0 + 0x1c) = 0x14; + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018B224); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018B280); + + +extern void (*D_801E01A8[])(void); + +void func_8018B304(void *a0) { + D_801E01A8[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_801E01F0[])(void); + +void func_8018B340(void *a0) { + D_801E01F0[*(u16 *)((s32)a0 + 0x2)](); +} + + + +// @class: plumbing +// @stuck: none — MATCH (clean if/else, sh into delay slot of func_8001CA88 call) + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern int func_8001CA88(int, void *); +extern void func_80143994(s32 a0, s32 a1); +extern int D_801E01B0; + +void func_8018B37C(int param_1) +{ + int iVar1; + + iVar1 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = iVar1; + if (iVar1 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + *(short *)(param_1 + 2) = 1; + func_8001CA88(*(int *)(param_1 + 0x20), &D_801E01B0); + func_80143994(param_1, 0x1000); + } +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018B3E0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018B438); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018B4A4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018B5E0); + +extern s32 func_8012BEE8(s32 arg); + extern void func_8018B224(s32 arg); + void func_8018B64C(void *a0) { + if (func_8012BEE8((s32)a0)) { + ((void (*)(s32))func_8018B224)((s32)a0); + } + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018B684); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018B6E8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018B740); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018B7F8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018B868); + +extern void func_80029124(s32 arg0, s32 arg1); + void func_8018B9F8(void) { + func_80029124(0xF0, 1); + } + + +extern void (*D_801F1714[])(void); + +void func_8018BA1C(void *a0) { + D_801F1714[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018BA58); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018BB54); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018BDE4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018BF78); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018BFD0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018C04C); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018C090); + +extern void func_80174684(void *); + extern s32 func_8018C118; + void func_8018C0F0(void) { + func_80174684(&func_8018C118); + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018C118); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018C154); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018C1C4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018C240); + +void func_8018C29C(void) { +} + +extern void func_80174684(void *); + extern s32 func_8018C2CC; + void func_8018C2A4(void) { + func_80174684(&func_8018C2CC); + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018C2CC); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018C308); + +void func_8018C374(void) { +} + +extern void func_80174684(void *); + extern s32 func_8018C3A4(s32); + void func_8018C37C(void) { + func_80174684((void *)func_8018C3A4); + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018C3A4); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018C3E0); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018C43C); + +void func_8018C48C(void) { +} + +extern void func_80174684(void *); + extern s32 func_8018C4BC(s32); + void func_8018C494(void) { + func_80174684((void *)func_8018C4BC); + } + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018C4BC); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018C4F8); + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018C548); + +void func_8018C58C(void) { +} + + + + diff --git a/src/ov_SC03_007/ov_SC03_007_jr_8017A4AC.c b/src/ov_SC03_007/ov_SC03_007_jr_8017A4AC.c index 34a7de3cb..df25270d9 100644 --- a/src/ov_SC03_007/ov_SC03_007_jr_8017A4AC.c +++ b/src/ov_SC03_007/ov_SC03_007_jr_8017A4AC.c @@ -2967,1685 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801E9CAC; - extern s16 D_801E9CAE; - extern s16 D_801E9CB0; - extern s16 D_801E9CA4; - extern s16 D_801E9CA6; - extern s16 D_801E9CA8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801E9CAC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801E9CAE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801E9CB0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801E9CA4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801E9CA6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801E9CA8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801E9C34; -extern u16 D_801E9CB4; -extern u16 D_801E9CB6; -extern u16 D_801E9CB8; -extern s16 D_801EB250; - -void func_8017B1D8(void) { - func_8012A418(); - D_801EB250 = 0; - D_801E9C34 = 0; - D_801E9CB4 = D_80126B5E; - D_801E9CB6 = D_80126B62; - D_801E9CB8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018AD18[]; - extern s16 D_801E9CAC; - extern s16 D_801E9CA4; - 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_8018AD18[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018AD18[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E9CAC; - s16 *p78C = &D_801E9CA4; - *(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_801EB250 = 1; - D_801E9C34 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801E9C54; - extern SV4_8017B368 D_801E9C5C; - extern s16 D_801E9CAC; - extern s16 D_801E9CA4; - extern u16 D_8018AD18; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801E9C54; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801E9C5C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018AD18)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018AD18)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801E9CAC) = loc0; - (*(SV4_8017B368 *)&D_801E9CA4) = loc1; - D_801EB250 = 1; - D_801E9C34 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018AD18[]; - extern s16 D_801E9CAC; - extern s16 D_801E9CAE; - extern s16 D_801E9CB0; - extern s16 D_801E9CA4; - extern s16 D_801E9CA6; - extern s16 D_801E9CA8; - 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_8018AD18[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018AD18[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E9CAC; - s16 *p78C = &D_801E9CA4; - *(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_801E9CAE; - v798 = D_801E9CB0; - v78C = *p78C; - v78E = D_801E9CA6; - v790 = D_801E9CA8; - __asm__ __volatile__(""); - D_801EB250 = 1; - D_801E9C34 = 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_801E9C34; -extern s16 D_801E9CAC; -extern s16 D_801E9CAE; -extern s16 D_801E9CB0; -extern s16 D_801E9CA4; -extern s16 D_801E9CA6; -extern s16 D_801E9CA8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801E9C34 = 0; - D_801E9CAC = (s16) D_80114F30; - D_801E9CAE = (s16) D_80114F34; - D_801E9CB0 = (s16) D_80114F38; - D_801E9CA4 = (s16) D_80114F24; - D_801E9CA6 = (s16) D_80114F28; - D_801E9CA8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801E9CC4; -extern s16 D_801E9CC6; -extern s16 D_801E9CC8; -extern s16 D_801E9CCC; -extern s16 D_801E9CCE; -extern s16 D_801E9CD0; - -void func_8017B824(void) { - D_801E9CC4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801E9CC6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801E9CC8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801E9CCC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801E9CCE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801E9CD0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801E9CC4; -extern s16 D_801E9CC6; -extern s16 D_801E9CC8; -extern s16 D_801E9CCC; -extern s16 D_801E9CCE; -extern s16 D_801E9CD0; - -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_801E9CC4; - D_80114F34 = D_801E9CC6; - D_80114F38 = D_801E9CC8; - D_80114F24 = D_801E9CCC; - D_80114F28 = D_801E9CCE; - D_80114F2C = D_801E9CD0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801E9CAC), src[8..15] -> (*(S8_8017B8E8 *)&D_801E9CA4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801E9CAC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801E9CA4) = ((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_801E9CB4; -extern u16 D_801E9CB6; -extern u16 D_801E9CB8; - -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_801E9C34; -extern short D_801E9CBC; -extern short D_801E9CBE; -extern short D_801E9CC0; -extern s16 D_801E9CAC; -extern s16 D_801E9CAE; -extern s16 D_801E9CB0; -extern s16 D_801E9CA4; -extern s16 D_801E9CA6; -extern s16 D_801E9CA8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801E9CB4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801E9CB6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801E9CB8); - (*(s16 *)&D_801E9CBC) = buf[0]; - (*(s16 *)&D_801E9CBE) = buf[1]; - (*(s16 *)&D_801E9CC0) = buf[2]; - D_801E9CAC = D_80114F30 + buf[0]; - D_801E9C34 = 0; - D_801E9CAE = D_80114F34 + buf[1]; - D_801E9CB0 = D_80114F38 + buf[2]; - D_801E9CA4 = D_80114F24 + buf[0]; - D_801E9CA6 = D_80114F28 + buf[1]; - D_801E9CA8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801E9C54; -extern SV4 D_801E9C5C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801E9C5C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801E9C54 = 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_801E9C5C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801E9C5C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801E9C54) = 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_801E9C5C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801E9C7C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801E9C7C; - 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_801E9C34; -extern s16 D_801EB250; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801E9C34 = D_801E9C34 + 1; - if (D_801E9C34 >= 0x1F) { - D_801EB250 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801E9C34; -extern s16 D_801EB250; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801E9C34 = D_801E9C34 + 1; - if (0x18 < D_801E9C34) { - func_8012A4BC(); - D_801EB250 = 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_801E9C34; -extern void (*D_801E9C78)(void); -extern short D_801E9CBC; -extern short D_801E9CBE; -extern short D_801E9CC0; -extern s16 D_801EB250; - -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_801E9C34 = D_801E9C34 + 1; - if (D_801E9C34 >= 0x19) { - if (D_801E9C78 != 0) { - (*D_801E9C78)(); - } else { - D_80114F30 = D_80114F30 + D_801E9CBC; - D_80114F34 = D_80114F34 + D_801E9CBE; - D_80114F38 = D_80114F38 + D_801E9CC0; - D_80114F24 = D_80114F24 + D_801E9CBC; - D_80114F28 = D_80114F28 + D_801E9CBE; - D_80114F2C = D_80114F2C + D_801E9CC0; - func_8012A4BC(); - } - D_801EB250 = 0; - } -} - - - -extern void (*D_8018ADB8[])(void); - -void func_8017BE60(void *a0) { - D_8018ADB8[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017BEBC); - -extern void ReadRotMatrix(void *a0); -extern void PushMatrix(void); -extern void func_8004974C(void *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void PopMatrix(void); -void func_8017C294(u16 *a0, void *a1) { - s32 mat[8]; - s32 buf[8]; - s16 sv[4]; - ReadRotMatrix((void *)mat); - PushMatrix(); - sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); - sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); - sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); - func_8004974C((void *)mat, (void *)buf); - ApplyMatrixSV((void *)buf, (void *)sv, a1); - PopMatrix(); -} - - -int func_8017C338(short *param_1, short *param_2, short *param_3, int param_4) { - register int i2o __asm__("$5"); - register int i4o __asm__("$9"); - short sVar1; int rx, rz, uVar5; - i4o = param_2[1]; - __asm__ __volatile__("" : : "r"(i4o)); - i2o = param_1[1]; uVar5 = 0; - if (i2o >= i4o) { - rx = param_1[0] - i2o * (param_2[0] - param_1[0]); - rz = param_1[2] - i2o * (param_2[2] - param_1[2]); - } else { - register int den __asm__("$3"); - int p2x = param_2[0], p2z = param_2[2]; - den = i2o - i4o; - rx = p2x + i4o * (p2x - param_1[0]) / den; - rz = p2z + i4o * (p2z - param_1[2]) / den; - } - if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } - else i2o = -0x7fff; - *param_3 = (short)i2o; - if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } - else i2o = -0x7fff; - param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; - if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } - if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } - if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } - if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } - return uVar5; -} - - -extern void ReadGeomOffset(s32 *a0, s32 *a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8004921C(s32 a0, s32 a1); -void func_8017C530(s32 a0, s32 a1) { - s32 ofx; - s32 ofy; - s32 sxy; - s32 p; - ReadGeomOffset(&ofx, &ofy); - func_8004921C(0, 0); - RotTransPers(a0, a1, &sxy, &p); - func_8004921C(ofx, ofy); -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017C59C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017D468); - - -extern s32 D_8018CE04; - extern u8 *D_801274C8; - extern s32 D_8018CE90; - extern void *D_801274CC; - void func_8017D4C4(void) { - D_801274C8 = &D_8018CE04; - D_801274CC = &D_8018CE90; - } - - -extern s32 D_8018CEA4; - extern u8 *D_801274C8; - extern s32 D_8018CF1C; - extern void *D_801274CC; - void func_8017D4EC(void) { - D_801274C8 = &D_8018CEA4; - D_801274CC = &D_8018CF1C; - } - - - -extern s32 D_8018CF30; - extern u8 *D_801274C8; - extern s32 D_8018CF94; - extern void *D_801274CC; - void func_8017D514(void) { - D_801274C8 = &D_8018CF30; - D_801274CC = &D_8018CF94; - } - - -extern s32 D_8018CFA8; - extern u8 *D_801274C8; - extern s32 D_8018D034; - extern void *D_801274CC; - void func_8017D53C(void) { - D_801274C8 = &D_8018CFA8; - D_801274CC = &D_8018D034; - } - - - -extern s32 D_8018D048; - extern u8 *D_801274C8; - extern s32 D_8018D0AC; - extern void *D_801274CC; - void func_8017D564(void) { - D_801274C8 = &D_8018D048; - D_801274CC = &D_8018D0AC; - } - - - -extern s32 D_8018D0C0; - extern u8 *D_801274C8; - extern s32 D_8018D14C; - extern void *D_801274CC; - void func_8017D58C(void) { - D_801274C8 = &D_8018D0C0; - D_801274CC = &D_8018D14C; - } - - - -extern s32 D_8018D160; - extern u8 *D_801274C8; - extern s32 D_8018D1EC; - extern void *D_801274CC; - void func_8017D5B4(void) { - D_801274C8 = &D_8018D160; - D_801274CC = &D_8018D1EC; - } - - - -extern s32 D_8018D200; - extern u8 *D_801274C8; - extern s32 D_8018D2A0; - extern void *D_801274CC; - void func_8017D5DC(void) { - D_801274C8 = &D_8018D200; - D_801274CC = &D_8018D2A0; - } - - - -extern s32 D_8018D2B4; - extern u8 *D_801274C8; - extern s32 D_8018D32C; - extern void *D_801274CC; - void func_8017D604(void) { - D_801274C8 = &D_8018D2B4; - D_801274CC = &D_8018D32C; - } - - - -extern s32 D_8018D340; - extern u8 *D_801274C8; - extern s32 D_8018D3B8; - extern void *D_801274CC; - void func_8017D62C(void) { - D_801274C8 = &D_8018D340; - D_801274CC = &D_8018D3B8; - } - - - -extern s32 D_8018D3CC; - extern u8 *D_801274C8; - extern s32 D_8018D46C; - extern void *D_801274CC; - void func_8017D654(void) { - D_801274C8 = &D_8018D3CC; - D_801274CC = &D_8018D46C; - } - - - -extern s32 D_8018D480; - extern u8 *D_801274C8; - extern s32 D_8018D4F8; - extern void *D_801274CC; - void func_8017D67C(void) { - D_801274C8 = &D_8018D480; - D_801274CC = &D_8018D4F8; - } - - - -extern s32 D_8018D50C; - extern u8 *D_801274C8; - extern s32 D_8018D584; - extern void *D_801274CC; - void func_8017D6A4(void) { - D_801274C8 = &D_8018D50C; - D_801274CC = &D_8018D584; - } - - - -extern s32 D_8018D598; - extern u8 *D_801274C8; - extern s32 D_8018D610; - extern void *D_801274CC; - void func_8017D6CC(void) { - D_801274C8 = &D_8018D598; - D_801274CC = &D_8018D610; - } - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017D6F4); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017D740); - -void func_8017D7E4(void) { -} - -extern s32 D_8018CAA8; - extern u8 *D_801274C8; - extern s32 D_8018CDC8; - extern void *D_801274CC; - void func_8017D7EC(void) { - D_801274C8 = &D_8018CAA8; - D_801274CC = &D_8018CDC8; - } - - -extern s32 D_8018CB84; - extern u8 *D_801274C8; - extern s32 D_8018CDDC; - extern void *D_801274CC; - void func_8017D814(void) { - D_801274C8 = &D_8018CB84; - D_801274CC = &D_8018CDDC; - } - - -extern s32 D_8018CCC4; - extern u8 *D_801274C8; - extern s32 D_8018CDF0; - extern void *D_801274CC; - void func_8017D83C(void) { - D_801274C8 = &D_8018CCC4; - D_801274CC = &D_8018CDF0; - } - - - -extern void (*D_8018BBCC[])(void); - -void func_8017D864(void *a0) { - D_8018BBCC[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017D8A0); - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017D8E4(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_8018BBD4[])(void); - -void func_8017D908(void *a0) { - D_8018BBD4[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017D944); - - -extern void (*D_8018BBE0[])(void); - -void func_8017D9D0(void *a0) { - D_8018BBE0[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017DA0C); - - -extern void (*D_8018BBEC[])(void); - -void func_8017DA9C(void *a0) { - D_8018BBEC[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017DAD8); - - -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_8017DB18(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_8017DB94(void) { - func_800D1EBC(); - } - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017DBB4); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017DBDC); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017DC04); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017DC54); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017DCA4); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017DCF4); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017DD44); - - -extern void (*D_8018BC38[])(void); - -void func_8017DDE4(void *a0) { - D_8018BC38[*(u8 *)((s32)a0 + 0x4)](); -} - - -extern void func_8017DE40(void); - void func_8017DE20(void) { - func_8017DE40(); - } - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017DE40); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017E0B4); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017E124); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017E218); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017E294); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017E2C0); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017E2FC); - - -extern s32 func_8012BEE8(s32 arg); - void func_8017E33C(void *a0) { - if (func_8012BEE8((s32)a0)) { - *(s16 *)((u8 *)a0 + 0x2) = 0x6; - } - } - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017E370); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017E3C0); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017E47C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017E4C8); - -void func_8017E56C(s32 *a0) { - *(s32 *)((s32)a0 + 0x1c) = 6; - *(s16 *)((s32)a0 + 0x5c) = 0; - } - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017E57C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017E654); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017E6C0); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017E730); - -void func_8017E748(void) { -} - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017E750); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017E7B4); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017E83C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017EA04); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017EA48); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017EC90); - -extern void func_8002A04C(s32 a0); -extern void func_8012C098(void); - -void func_8017EE20(s32 arg0) { - ((void (*)(void))func_8002A04C)(); - ((s32 (*)(s32))func_8012C098)(arg0); -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017EE50); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017EEA4); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017EF1C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017EF68); - - -extern void (*D_8018BEF0[])(void); - -void func_8017EF98(void *a0) { - D_8018BEF0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017EFD4); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017F0C8); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017F164); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017F1F8); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017F258); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017F2B4); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017F334); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017F37C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017F414); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017F444); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017F658); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017F6A8); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017F750); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017F794); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017F850); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017F8AC); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017F920); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017F95C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017F99C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017FA84); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017FB40); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017FBA0); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017FC6C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017FD6C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8017FE04); - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80180064); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8018022C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801802A4); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8018033C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80180388); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801803DC); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80180454); - - -extern void (*D_8018BF50[])(void); - -void func_801804A0(void *a0) { - D_8018BF50[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801804DC); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80180598); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801806B8); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80180838); - - -extern void (*D_8018BFC8[])(void); - -void func_80180990(void *a0) { - D_8018BFC8[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_801809CC(void *a0) { - *(short *)((char *)a0 + 0x2) = 1; - *(int *)((char *)a0 + 0x1c) = 2; - *(unsigned char *)((char *)a0 + 0xfc) = 1; - *(unsigned char *)((char *)a0 + 0xfe) = 2; - *(unsigned char *)((char *)a0 + 0xfd) = 0; - *(unsigned char *)((char *)a0 + 0xff) = 4; - *(short *)((char *)a0 + 0xdc) = 0; - } - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80180A00); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80180A58); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80180AF4); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80180B24); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80180BF8); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80180C48); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80180C74); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80180E3C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80180F4C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801810E4); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801813D0); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80181544); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80181668); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801816EC); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8018178C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80181954); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80181A44); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80181B04); - - -extern void (*D_8018C0EC[])(void); - -void func_80181BE8(void *a0) { - D_8018C0EC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80181C24); - -void func_80181CB4(void) { -} - - -extern void (*D_8018C150[])(void); - -void func_80181CBC(void *a0) { - D_8018C150[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80181CF8); - -void func_80181DB0(void) { -} - -extern void func_80178CBC(s32 arg0, s32 arg1); - extern short D_8018C138; - void func_80181DB8(int param_1) { - int iVar1; - iVar1 = param_1; - ((void (*)(int, int))func_80178CBC)(iVar1, &D_8018C138); - *(short *)(iVar1 + 2) = 0x3; - } - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80181DF0); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80181E30); - - -extern void (*D_8018C230[])(void); - -void func_80181E8C(void *a0) { - D_8018C230[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80181EC8); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80181F94); - -extern void func_8002A04C(s32 a0); - extern void func_8012C098(void); - void func_801820AC(s32 param_1) { - ((void (*)(void))func_8002A04C)(); - ((void (*)(s32))func_8012C098)(param_1); - } - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801820DC); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80182148); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801821D0); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80182214); - - -void func_801822B8(s32 *a0) { - *(s32 *)((s32)a0 + 0x1C) = 6; - *(s16 *)((s32)a0 + 0x5C) = 0; - } - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801822C8); - - -// @class: plumbing -// @stuck: none — MATCH (18 ins): if((b&1) && p!=&sym) call(param,&sym); $a0 live, $a1=&sym fall out -extern void func_8012A828(s32 a0, void *a1); -extern void D_801CAB58; - -void func_80182374(s32 arg0) -{ - if ((M2C_FIELD(arg0, u8 *, 0xC3) & 1) && (M2C_FIELD(arg0, void **, 0x90) != &D_801CAB58)) { - func_8012A828(arg0, &D_801CAB58); - } -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801823BC); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80182420); - - -extern void func_8012A828(s32 a0, void *a1); -extern u8 D_801CAFE0; - -void func_80182468(s32 a0) { - *(s16 *)(a0 + 0x2) = 2; - func_8012A828(a0, &D_801CAFE0); - *(s32 *)(a0 + 0x1C) = 0x14; -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801824A8); - - -// @class: plumbing -// @stuck: none — MATCH (straightforward; callee sigs canonical from overlay) -extern void func_8012A828(s32 a0, void *a1); -extern void func_80142414(s32 a0, s16 a1); -extern u8 D_801CACF8; - -void func_801824FC(s32 param_1) { - *(s16 *)(param_1 + 2) = 4; - func_8012A828(param_1, &D_801CACF8); - *(s32 *)(param_1 + 0x1c) = 0x1e; - if (*(s16 *)(param_1 + 0xfc) == 0) { - *(s16 *)(param_1 + 0xfc) = 1; - ((void (*)(s32, s32))func_80142414)(param_1, -0x96); - } -} - - -void func_80182558(void *a0) { - *(s16 *)((s32)a0 + 0x2) = 0x5; - *(s32 *)((s32)a0 + 0x1C) = 0x14; - } - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8018256C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801827CC); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8018283C); - - -extern void (*D_8018C37C[])(void); - -void func_801829DC(void *a0) { - D_8018C37C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80182A18); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80182A80); - -extern s32 func_8012BEE8(s32 arg); - extern s32 func_801824A8(void); - void func_80182AC4(s32 param_1) { - if (((s32 (*)(void))func_8012BEE8)() != 0) { - ((void (*)(s32))func_801824A8)(param_1); - } - } - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80182AFC); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80182BA4); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80182BFC); - - -// @class: struct -// @stuck: none — MATCH expected (folded %lo via extern array decay; a0 carries iVar2 into func_8001C214) - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); - -extern int D_8018C36C[]; - -void func_80182D04(int param_1) -{ - int iVar2; - short uVar1; - - iVar2 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = iVar2; - if (iVar2 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - func_8001C214(iVar2, D_8018C36C[*(short *)(param_1 + 0x70)]); - uVar1 = *(short *)(*(int *)(param_1 + 100) + 0x36); - *(short *)(param_1 + 2) = 1; - *(short *)(param_1 + 0xfe) = 0x7fff; - *(short *)(param_1 + 0xfc) = uVar1; - } - return; -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80182D88); - -extern void func_8002D4C8(s32 arg0, s32 arg1); - void func_80182F00(void) { - func_8002D4C8(0x6AA, 0); - } - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80182F24); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80182F74); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80182FB8); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80183004); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801830C0); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80183284); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801832B4); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8018335C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80183670); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801836B8); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80183894); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80183B58); - - -extern void (*D_8018C534[])(void); - -void func_80183C94(void *a0) { - D_8018C534[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80183CD0); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80183D14); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80183E18); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80183E9C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80183F7C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80183FB4); - -extern void func_8013CB84(void); - void func_80183FCC(void) { - func_8013CB84(); - } - - - -extern void (*D_8018C574[])(void); - -void func_80183FEC(void *a0) { - D_8018C574[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80184028); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80184170); - - -extern void (*D_8018C57C[])(void); - -void func_8018423C(void *a0) { - D_8018C57C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80184278); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80184410); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80184500); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80184560); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801846EC); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8018471C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801848BC); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80184AFC); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80184E8C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801850B4); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80185230); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801854A4); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80185620); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8018574C); - - -extern void (*D_8018C830[])(void); - -void func_80185898(void *a0) { - D_8018C830[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801858D4); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80185948); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80185A24); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80185B20); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80185B48); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80185D3C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80185DD8); - -void func_80185E30(void *a0) { - *(short *)((char *)a0 + 0x2) = *(unsigned short *)((char *)a0 + 0xf8); - } - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80185E3C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80185E68); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80185EF8); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80185F84); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80185FE0); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80186074); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8018611C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80186200); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80186310); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80186408); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801864D8); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80186584); - -extern s32 func_80185230(void); - void func_8018667C(void) { - func_80185230(); - } - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8018669C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8018676C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80186818); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801868C8); - - -extern void (*D_801E4D70[])(void); - -void func_80186984(void *a0) { - D_801E4D70[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: iv-combine -// @stuck: none — MATCH (49 ins). gcc folds (v0+0x1800)-0x1000 -> v0+0x800; re-tie barrier on the WORKING reg v0 (NOT a saved local) forces the target chain v0=base+0x1800; s2=copy; v0-=0x1000; s1=v0<<5. NO register pins (pins re-trigger the lhu/lh dual-load CSE collapse and shrink the frame; natural alloc gives s0-s3 + frame 0x38). -extern int rand(void); -extern u8 *func_8012913C(s32 a0); - -extern unsigned short D_801E4D50[]; - -void func_801869C0(s32 param_1, s32 param_2) -{ - int s3; - unsigned short s0; - int s2; - int s1; - int v0; - int iVar3; - - s0 = D_801E4D50[*(short *)(param_1 + 0xfc)]; - s3 = param_2; - if (((short *)D_801E4D50)[*(short *)(param_1 + 0xfc)] == 0) { - *(short *)(param_1 + 0xfc) = 0; - s0 = D_801E4D50[0]; - } - *(short *)(param_1 + 0xfc) = *(short *)(param_1 + 0xfc) + 1; - v0 = (rand() & 3) * 0x400 + 0x1800; - s2 = v0; - __asm__ __volatile__("" : "=r"(v0) : "0"(v0)); - s1 = (v0 - 0x1000) * 0x20; - iVar3 = ((int (*)(int))func_8012913C)(4); - if (iVar3 != 0) { - *(short *)(iVar3 + 6) = s3; - *(short *)(iVar3 + 0xa) = s0; - *(short *)(iVar3 + 0xe) = 0; - *(int *)(iVar3 + 0x10) = s1; - *(short *)(iVar3 + 0x2c) = s2; - } -} - - - -extern void (*D_801E4D84[])(void); - -void func_80186A84(void *a0) { - D_801E4D84[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH - -extern void func_801869C0(s32, s32); -extern s32 func_8012AD50(void *a0); - -void func_80186AC0(int param_1) { - short uVar1; - - *(short *)(param_1 + 0xfc) = 0; - *(int *)(param_1 + 0x1c) = 1; - uVar1 = *(unsigned short *)(param_1 + 0x70) & 7; - *(short *)(param_1 + 0xfe) = (uVar1 < 2) ? 0x1e : 0xf; - if (uVar1 != 0) { - func_801869C0(param_1, -0x80); - func_801869C0(param_1, -0x30); - func_801869C0(param_1, 0x20); - func_801869C0(param_1, 0x70); - func_801869C0(param_1, 0xc0); - } - if (1 < uVar1) { - func_801869C0(param_1, -0x58); - func_801869C0(param_1, -0x8); - func_801869C0(param_1, 0x48); - func_801869C0(param_1, 0x98); - func_801869C0(param_1, 0xe8); - } - ((void (*)(int))func_8012AD50)(param_1); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (param_1 naturally lands in $s0 across the call, mirrors sibling func_80184AEC) - -extern s32 func_8012BEE8(s32 a0); -extern void func_801869C0(s32, s32); - -void func_80186BA8(s32 arg0) { - if (func_8012BEE8(arg0)) { - *(s32 *)(arg0 + 0x1c) = (s32)*(s16 *)(arg0 + 0xfe); - func_801869C0(arg0, 0x110); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (expected) -extern void func_8001CB00(int param_1, void *src, int len, int n); - -extern unsigned char D_801E4D78; - -void func_80186BE8(int param_1) -{ - unsigned short uVar1; - int iVar2; - - iVar2 = *(int *)(param_1 + 0x20); - func_8001CB00(iVar2, &D_801E4D78, 0x280, 0x100); - *(unsigned int *)(iVar2 + 4) = *(unsigned int *)(iVar2 + 4) | 0x70000000; - uVar1 = *(unsigned short *)(param_1 + 0x2c); - *(unsigned char *)(iVar2 + 0x27) = 0x9e; - *(unsigned short *)(iVar2 + 0x2c) = 4; - *(unsigned short *)(iVar2 + 0x1c) = uVar1; - *(unsigned short *)(iVar2 + 0x1a) = uVar1; - *(unsigned short *)(iVar2 + 0x18) = uVar1; - *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + 1; - return; -} - - - -extern void func_801292C8(u8 *a0); - -void func_80186C70(u8 *a0) { - *(s32 *)(a0 + 0x4) = *(s32 *)(a0 + 0x4) - *(s32 *)(a0 + 0x10); - if (*(s16 *)(a0 + 0x6) < -0x110) { - func_801292C8(a0); - } -} - - - -extern void (*D_801E4DD8[])(void); - -void func_80186CB8(void *a0) { - D_801E4DD8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80186CF4); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80186DF0); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80187080); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_80187214); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8018726C); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_801872E8); - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017A4AC", func_8018732C); - - - diff --git a/src/ov_SC03_007/ov_SC03_007_jr_8017AE2C.c b/src/ov_SC03_007/ov_SC03_007_jr_8017AE2C.c new file mode 100644 index 000000000..bd7246485 --- /dev/null +++ b/src/ov_SC03_007/ov_SC03_007_jr_8017AE2C.c @@ -0,0 +1,4583 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80189910; +extern u8 D_80189880; +extern u8 D_8018985C; +extern u8 D_80189838; +extern u8 D_801898EC; +extern u8 D_801898C8; +extern u8 D_801898A4; +extern u8 D_80189814; +extern void func_80145934(void); +extern u8 D_801899A0; +extern u8 D_8018997C; +extern u8 D_80189958; +extern u8 D_80189934; +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_80188D98[]; +extern unsigned char D_80188DC8[]; +extern unsigned char D_80188E18[]; +extern unsigned char D_80188E48[]; +extern unsigned char D_80188E78[]; +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(void); +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_80188EC8[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80188F90[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80189018[]; +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_80189020; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801E8B30; +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_801E8B34; +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_80189050; +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 void 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_801890F8[])(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_8018911C[])(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_8018910C; +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_80189130[])(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_8018913C[]; +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_8018914C[])(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_80189164[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80189154; +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_80189178[])(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_80189194[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80189184; +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_801891A8[])(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_801891BC[])(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_801891D0; +extern void (*D_801891F8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801891D8; +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_80189244[])(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_80189248[])(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(void *a0); +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_801896AC[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_801896BC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801E8B68; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801896E4[])(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_801896C4; +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_801896D4; +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_80189724[])(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_8018972C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801896F8; +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_80189738[])(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_80189708; +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_801E8B70; +extern s32 D_801E8B7C; +extern s32 D_801E8B80; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80189774[])(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_80189748[]; +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_801E8B78; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801899C4[])(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_801897E4[]; +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_80189A68[])(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_80189BBC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801899D8; +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_80189BC4[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801899E8; +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_80189A08; +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_80189BCC[])(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(void); +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_80189BF4[])(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_80189C00[])(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_80189A74[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80189CA4; +extern void func_8015D380(s32 a0); +extern unsigned char D_80188D88[]; +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_80189CB8[]; +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_80189CF4[]; +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_80189D3C; +extern u16 D_80189D3E; +extern u16 D_80189D40; +extern s32 D_80189D44; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80189D4C; +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_80189A58; +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_80189DD0[]; +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_80189E80[])(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_80189EB0[]; +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_80189F14; +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_801E8B88[]; +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_80189F38[])(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_801E8BE0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80189F80[])(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_80189F70; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801E83A8[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_80189F88[])(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_80189FDC[])(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_80189FA4; +extern s16 D_80189FD8; +extern s16 D_80189FD6; +extern s16 D_80189FD4; +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_80189FE8[])(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_801E8C40; +extern u8 D_801E8C41; +extern u8 D_801E8C42; +extern u8 D_801E8C43; +extern u8 D_801E8C44; +extern u8 D_801E8C45; +extern u8 D_801E8C46; +extern u8 D_801E8C47; +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_80189FF8[])(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_801E8C80; +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_8018A03C[])(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_8018A0B8[]; +extern s32 D_8018A0D8[]; +extern u8 D_8018A154[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018A174[]; +extern u8 D_8018A194[]; +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_8018A230[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018A2AC[])(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_801E83B8; +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_8018A2B8[])(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_8018A2C0[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018A388[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018A398[])(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_8018A3A8[])(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_8018A3B4[])(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_8018A314[]; +extern u8 D_8018A328[]; +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_8018A3CC[])(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_8018A3D4[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018A3DC[])(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_8018A3E4[])(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_8018A3EC[])(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_8018A3F4[])(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_8018A3FC[])(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_8018A4B0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018A4B8[])(void); +extern void func_80169F00(void *a0); +extern char D_8018A468[]; +extern char D_8018A428[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018A4F0[])(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_8018A4FC[])(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_8018A544[])(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_8018A5C0[])(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_801E8FA0; +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_8018A5B4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018A5F8[]; +extern unsigned short D_8018A600[]; +extern unsigned short D_8018A608[]; +extern unsigned char D_801E8FA8[]; +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_801E8FA0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018A610[])(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_801E90DC; +extern M2C_UNK D_801E90E0; +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_801E9068; +extern void (*D_8018A640[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801E90E4[]; +extern u8 D_801E90EC[]; +extern u8 D_801E909C[]; +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_8018A648[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018A664[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018A66C[])(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_8018A6D4[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018A678; +extern u8 D_8018A684; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018A708[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018A710[])(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_8018A764[])(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_8018A798[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018A788[]; +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_8018A7B4; +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); +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_8018A82C[])(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_8018A834[])(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_8018A83C[])(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_8018A844[])(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_8018A84C[])(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_8018A854[])(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_8018A860[])(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_8018A86C[])(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_8018A878[])(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_8018A888[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018A898[])(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_8018A8A0[])(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_8018A8A8[])(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_8018A8B0[])(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_8018A8B8[])(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_8018A8C0[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018A8C8[])(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_8018A8D0[])(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_8018A8D8[])(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_8018A8E0[])(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_8018A8E8[])(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_8018A8F0[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018A8F8[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018A900[])(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_8018A908[])(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_8018A910[])(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_8018A918[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018A920[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018A928[])(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_8018A930[])(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_8018A938[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018A940[])(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_8018A948[])(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_8018A98C[])(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_8018A950; +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_8018A9BC[])(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_8018A9F8[])(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(s32); +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_8018AA50[])(); +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_8018AA60[])(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_8018AA68[])(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_8018ABD0[])(); +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_8018ABDC[])(); +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_801E8600; +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 int func_801789AC(void); +extern s16 D_801EB250; +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_801E9820; +extern short D_801EB2C4; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801E9C4C; +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_801E9C74; +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_801E9C30; +extern s32 func_8017A3B0(void); +extern short D_801E9C6C; +extern short D_801E9C68; +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_801EB220; +extern s16 D_801EB222; +extern s16 D_801EB22C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801EB220; + + 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_801EB22C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801EB220+0xC == &D_801EB22C; 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_801EB220 + 0xC)) < 0x101) { + D_801EB220 = 0; + D_801EB222 = 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_801EB22C); + 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_801EB220 + 0xC)) < 0x101) { + D_801EB220 = 0; + D_801EB222 = 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_801E9CAC; + extern s16 D_801E9CAE; + extern s16 D_801E9CB0; + extern s16 D_801E9CA4; + extern s16 D_801E9CA6; + extern s16 D_801E9CA8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801E9CAC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801E9CAE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801E9CB0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801E9CA4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801E9CA6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801E9CA8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801E9C34; +extern u16 D_801E9CB4; +extern u16 D_801E9CB6; +extern u16 D_801E9CB8; +extern s16 D_801EB250; + +void func_8017B1D8(void) { + func_8012A418(); + D_801EB250 = 0; + D_801E9C34 = 0; + D_801E9CB4 = D_80126B5E; + D_801E9CB6 = D_80126B62; + D_801E9CB8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018AD18[]; + extern s16 D_801E9CAC; + extern s16 D_801E9CA4; + 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_8018AD18[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018AD18[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801E9CAC; + s16 *p78C = &D_801E9CA4; + *(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_801EB250 = 1; + D_801E9C34 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801E9C54; + extern SV4_8017B368 D_801E9C5C; + extern s16 D_801E9CAC; + extern s16 D_801E9CA4; + extern u16 D_8018AD18; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801E9C54; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801E9C5C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018AD18)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018AD18)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801E9CAC) = loc0; + (*(SV4_8017B368 *)&D_801E9CA4) = loc1; + D_801EB250 = 1; + D_801E9C34 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018AD18[]; + extern s16 D_801E9CAC; + extern s16 D_801E9CAE; + extern s16 D_801E9CB0; + extern s16 D_801E9CA4; + extern s16 D_801E9CA6; + extern s16 D_801E9CA8; + 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_8018AD18[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018AD18[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801E9CAC; + s16 *p78C = &D_801E9CA4; + *(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_801E9CAE; + v798 = D_801E9CB0; + v78C = *p78C; + v78E = D_801E9CA6; + v790 = D_801E9CA8; + __asm__ __volatile__(""); + D_801EB250 = 1; + D_801E9C34 = 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_801E9C34; +extern s16 D_801E9CAC; +extern s16 D_801E9CAE; +extern s16 D_801E9CB0; +extern s16 D_801E9CA4; +extern s16 D_801E9CA6; +extern s16 D_801E9CA8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801E9C34 = 0; + D_801E9CAC = (s16) D_80114F30; + D_801E9CAE = (s16) D_80114F34; + D_801E9CB0 = (s16) D_80114F38; + D_801E9CA4 = (s16) D_80114F24; + D_801E9CA6 = (s16) D_80114F28; + D_801E9CA8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801E9CC4; +extern s16 D_801E9CC6; +extern s16 D_801E9CC8; +extern s16 D_801E9CCC; +extern s16 D_801E9CCE; +extern s16 D_801E9CD0; + +void func_8017B824(void) { + D_801E9CC4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801E9CC6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801E9CC8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801E9CCC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801E9CCE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801E9CD0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801E9CC4; +extern s16 D_801E9CC6; +extern s16 D_801E9CC8; +extern s16 D_801E9CCC; +extern s16 D_801E9CCE; +extern s16 D_801E9CD0; + +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_801E9CC4; + D_80114F34 = D_801E9CC6; + D_80114F38 = D_801E9CC8; + D_80114F24 = D_801E9CCC; + D_80114F28 = D_801E9CCE; + D_80114F2C = D_801E9CD0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801E9CAC), src[8..15] -> (*(S8_8017B8E8 *)&D_801E9CA4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801E9CAC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801E9CA4) = ((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_801E9CB4; +extern u16 D_801E9CB6; +extern u16 D_801E9CB8; + +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_801E9C34; +extern short D_801E9CBC; +extern short D_801E9CBE; +extern short D_801E9CC0; +extern s16 D_801E9CAC; +extern s16 D_801E9CAE; +extern s16 D_801E9CB0; +extern s16 D_801E9CA4; +extern s16 D_801E9CA6; +extern s16 D_801E9CA8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801E9CB4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801E9CB6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801E9CB8); + (*(s16 *)&D_801E9CBC) = buf[0]; + (*(s16 *)&D_801E9CBE) = buf[1]; + (*(s16 *)&D_801E9CC0) = buf[2]; + D_801E9CAC = D_80114F30 + buf[0]; + D_801E9C34 = 0; + D_801E9CAE = D_80114F34 + buf[1]; + D_801E9CB0 = D_80114F38 + buf[2]; + D_801E9CA4 = D_80114F24 + buf[0]; + D_801E9CA6 = D_80114F28 + buf[1]; + D_801E9CA8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801E9C54; +extern SV4 D_801E9C5C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801E9C5C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801E9C54 = 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_801E9C5C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801E9C5C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801E9C54) = 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_801E9C5C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801E9C7C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801E9C7C; + 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_801E9C34; +extern s16 D_801EB250; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801E9C34 = D_801E9C34 + 1; + if (D_801E9C34 >= 0x1F) { + D_801EB250 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801E9C34; +extern s16 D_801EB250; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801E9C34 = D_801E9C34 + 1; + if (0x18 < D_801E9C34) { + func_8012A4BC(); + D_801EB250 = 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_801E9C34; +extern void (*D_801E9C78)(void); +extern short D_801E9CBC; +extern short D_801E9CBE; +extern short D_801E9CC0; +extern s16 D_801EB250; + +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_801E9C34 = D_801E9C34 + 1; + if (D_801E9C34 >= 0x19) { + if (D_801E9C78 != 0) { + (*D_801E9C78)(); + } else { + D_80114F30 = D_80114F30 + D_801E9CBC; + D_80114F34 = D_80114F34 + D_801E9CBE; + D_80114F38 = D_80114F38 + D_801E9CC0; + D_80114F24 = D_80114F24 + D_801E9CBC; + D_80114F28 = D_80114F28 + D_801E9CBE; + D_80114F2C = D_80114F2C + D_801E9CC0; + func_8012A4BC(); + } + D_801EB250 = 0; + } +} + + + +extern void (*D_8018ADB8[])(void); + +void func_8017BE60(void *a0) { + D_8018ADB8[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017BEBC); + +extern void ReadRotMatrix(void *a0); +extern void PushMatrix(void); +extern void func_8004974C(void *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern void PopMatrix(void); +void func_8017C294(u16 *a0, void *a1) { + s32 mat[8]; + s32 buf[8]; + s16 sv[4]; + ReadRotMatrix((void *)mat); + PushMatrix(); + sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); + sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); + sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); + func_8004974C((void *)mat, (void *)buf); + ApplyMatrixSV((void *)buf, (void *)sv, a1); + PopMatrix(); +} + + +int func_8017C338(short *param_1, short *param_2, short *param_3, int param_4) { + register int i2o __asm__("$5"); + register int i4o __asm__("$9"); + short sVar1; int rx, rz, uVar5; + i4o = param_2[1]; + __asm__ __volatile__("" : : "r"(i4o)); + i2o = param_1[1]; uVar5 = 0; + if (i2o >= i4o) { + rx = param_1[0] - i2o * (param_2[0] - param_1[0]); + rz = param_1[2] - i2o * (param_2[2] - param_1[2]); + } else { + register int den __asm__("$3"); + int p2x = param_2[0], p2z = param_2[2]; + den = i2o - i4o; + rx = p2x + i4o * (p2x - param_1[0]) / den; + rz = p2z + i4o * (p2z - param_1[2]) / den; + } + if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } + else i2o = -0x7fff; + *param_3 = (short)i2o; + if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } + else i2o = -0x7fff; + param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; + if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } + if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } + if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } + if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } + return uVar5; +} + + +extern void ReadGeomOffset(s32 *a0, s32 *a1); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +extern void func_8004921C(s32 a0, s32 a1); +void func_8017C530(s32 a0, s32 a1) { + s32 ofx; + s32 ofy; + s32 sxy; + s32 p; + ReadGeomOffset(&ofx, &ofy); + func_8004921C(0, 0); + RotTransPers(a0, a1, &sxy, &p); + func_8004921C(ofx, ofy); +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017C59C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017D468); + + +extern s32 D_8018CE04; + extern u8 *D_801274C8; + extern s32 D_8018CE90; + extern void *D_801274CC; + void func_8017D4C4(void) { + D_801274C8 = &D_8018CE04; + D_801274CC = &D_8018CE90; + } + + +extern s32 D_8018CEA4; + extern u8 *D_801274C8; + extern s32 D_8018CF1C; + extern void *D_801274CC; + void func_8017D4EC(void) { + D_801274C8 = &D_8018CEA4; + D_801274CC = &D_8018CF1C; + } + + + +extern s32 D_8018CF30; + extern u8 *D_801274C8; + extern s32 D_8018CF94; + extern void *D_801274CC; + void func_8017D514(void) { + D_801274C8 = &D_8018CF30; + D_801274CC = &D_8018CF94; + } + + +extern s32 D_8018CFA8; + extern u8 *D_801274C8; + extern s32 D_8018D034; + extern void *D_801274CC; + void func_8017D53C(void) { + D_801274C8 = &D_8018CFA8; + D_801274CC = &D_8018D034; + } + + + +extern s32 D_8018D048; + extern u8 *D_801274C8; + extern s32 D_8018D0AC; + extern void *D_801274CC; + void func_8017D564(void) { + D_801274C8 = &D_8018D048; + D_801274CC = &D_8018D0AC; + } + + + +extern s32 D_8018D0C0; + extern u8 *D_801274C8; + extern s32 D_8018D14C; + extern void *D_801274CC; + void func_8017D58C(void) { + D_801274C8 = &D_8018D0C0; + D_801274CC = &D_8018D14C; + } + + + +extern s32 D_8018D160; + extern u8 *D_801274C8; + extern s32 D_8018D1EC; + extern void *D_801274CC; + void func_8017D5B4(void) { + D_801274C8 = &D_8018D160; + D_801274CC = &D_8018D1EC; + } + + + +extern s32 D_8018D200; + extern u8 *D_801274C8; + extern s32 D_8018D2A0; + extern void *D_801274CC; + void func_8017D5DC(void) { + D_801274C8 = &D_8018D200; + D_801274CC = &D_8018D2A0; + } + + + +extern s32 D_8018D2B4; + extern u8 *D_801274C8; + extern s32 D_8018D32C; + extern void *D_801274CC; + void func_8017D604(void) { + D_801274C8 = &D_8018D2B4; + D_801274CC = &D_8018D32C; + } + + + +extern s32 D_8018D340; + extern u8 *D_801274C8; + extern s32 D_8018D3B8; + extern void *D_801274CC; + void func_8017D62C(void) { + D_801274C8 = &D_8018D340; + D_801274CC = &D_8018D3B8; + } + + + +extern s32 D_8018D3CC; + extern u8 *D_801274C8; + extern s32 D_8018D46C; + extern void *D_801274CC; + void func_8017D654(void) { + D_801274C8 = &D_8018D3CC; + D_801274CC = &D_8018D46C; + } + + + +extern s32 D_8018D480; + extern u8 *D_801274C8; + extern s32 D_8018D4F8; + extern void *D_801274CC; + void func_8017D67C(void) { + D_801274C8 = &D_8018D480; + D_801274CC = &D_8018D4F8; + } + + + +extern s32 D_8018D50C; + extern u8 *D_801274C8; + extern s32 D_8018D584; + extern void *D_801274CC; + void func_8017D6A4(void) { + D_801274C8 = &D_8018D50C; + D_801274CC = &D_8018D584; + } + + + +extern s32 D_8018D598; + extern u8 *D_801274C8; + extern s32 D_8018D610; + extern void *D_801274CC; + void func_8017D6CC(void) { + D_801274C8 = &D_8018D598; + D_801274CC = &D_8018D610; + } + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017D6F4); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017D740); + +void func_8017D7E4(void) { +} + +extern s32 D_8018CAA8; + extern u8 *D_801274C8; + extern s32 D_8018CDC8; + extern void *D_801274CC; + void func_8017D7EC(void) { + D_801274C8 = &D_8018CAA8; + D_801274CC = &D_8018CDC8; + } + + +extern s32 D_8018CB84; + extern u8 *D_801274C8; + extern s32 D_8018CDDC; + extern void *D_801274CC; + void func_8017D814(void) { + D_801274C8 = &D_8018CB84; + D_801274CC = &D_8018CDDC; + } + + +extern s32 D_8018CCC4; + extern u8 *D_801274C8; + extern s32 D_8018CDF0; + extern void *D_801274CC; + void func_8017D83C(void) { + D_801274C8 = &D_8018CCC4; + D_801274CC = &D_8018CDF0; + } + + + +extern void (*D_8018BBCC[])(void); + +void func_8017D864(void *a0) { + D_8018BBCC[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017D8A0); + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017D8E4(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_8018BBD4[])(void); + +void func_8017D908(void *a0) { + D_8018BBD4[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017D944); + + +extern void (*D_8018BBE0[])(void); + +void func_8017D9D0(void *a0) { + D_8018BBE0[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017DA0C); + + +extern void (*D_8018BBEC[])(void); + +void func_8017DA9C(void *a0) { + D_8018BBEC[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017DAD8); + + +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_8017DB18(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_8017DB94(void) { + func_800D1EBC(); + } + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017DBB4); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017DBDC); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017DC04); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017DC54); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017DCA4); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017DCF4); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017DD44); + + +extern void (*D_8018BC38[])(void); + +void func_8017DDE4(void *a0) { + D_8018BC38[*(u8 *)((s32)a0 + 0x4)](); +} + + +extern void func_8017DE40(void); + void func_8017DE20(void) { + func_8017DE40(); + } + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017DE40); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017E0B4); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017E124); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017E218); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017E294); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017E2C0); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017E2FC); + + +extern s32 func_8012BEE8(s32 arg); + void func_8017E33C(void *a0) { + if (func_8012BEE8((s32)a0)) { + *(s16 *)((u8 *)a0 + 0x2) = 0x6; + } + } + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017E370); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017E3C0); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017E47C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017E4C8); + +void func_8017E56C(s32 *a0) { + *(s32 *)((s32)a0 + 0x1c) = 6; + *(s16 *)((s32)a0 + 0x5c) = 0; + } + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017E57C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017E654); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017E6C0); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017E730); + +void func_8017E748(void) { +} + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017E750); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017E7B4); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017E83C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017EA04); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017EA48); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017EC90); + +extern void func_8002A04C(s32 a0); +extern void func_8012C098(void); + +void func_8017EE20(s32 arg0) { + ((void (*)(void))func_8002A04C)(); + ((s32 (*)(s32))func_8012C098)(arg0); +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017EE50); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017EEA4); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017EF1C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017EF68); + + +extern void (*D_8018BEF0[])(void); + +void func_8017EF98(void *a0) { + D_8018BEF0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017EFD4); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F0C8); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F164); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F1F8); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F258); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F2B4); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F334); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F37C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F414); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F444); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F658); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F6A8); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F750); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F794); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F850); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F8AC); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F920); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F95C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F99C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017FA84); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017FB40); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017FBA0); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017FC6C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017FD6C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017FE04); + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80180064); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8018022C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801802A4); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8018033C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80180388); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801803DC); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80180454); + + +extern void (*D_8018BF50[])(void); + +void func_801804A0(void *a0) { + D_8018BF50[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801804DC); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80180598); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801806B8); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80180838); + + +extern void (*D_8018BFC8[])(void); + +void func_80180990(void *a0) { + D_8018BFC8[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_801809CC(void *a0) { + *(short *)((char *)a0 + 0x2) = 1; + *(int *)((char *)a0 + 0x1c) = 2; + *(unsigned char *)((char *)a0 + 0xfc) = 1; + *(unsigned char *)((char *)a0 + 0xfe) = 2; + *(unsigned char *)((char *)a0 + 0xfd) = 0; + *(unsigned char *)((char *)a0 + 0xff) = 4; + *(short *)((char *)a0 + 0xdc) = 0; + } + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80180A00); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80180A58); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80180AF4); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80180B24); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80180BF8); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80180C48); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80180C74); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80180E3C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80180F4C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801810E4); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801813D0); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80181544); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80181668); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801816EC); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8018178C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80181954); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80181A44); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80181B04); + + +extern void (*D_8018C0EC[])(void); + +void func_80181BE8(void *a0) { + D_8018C0EC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80181C24); + +void func_80181CB4(void) { +} + + +extern void (*D_8018C150[])(void); + +void func_80181CBC(void *a0) { + D_8018C150[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80181CF8); + +void func_80181DB0(void) { +} + +extern void func_80178CBC(s32 arg0, s32 arg1); + extern short D_8018C138; + void func_80181DB8(int param_1) { + int iVar1; + iVar1 = param_1; + ((void (*)(int, int))func_80178CBC)(iVar1, &D_8018C138); + *(short *)(iVar1 + 2) = 0x3; + } + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80181DF0); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80181E30); + + +extern void (*D_8018C230[])(void); + +void func_80181E8C(void *a0) { + D_8018C230[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80181EC8); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80181F94); + +extern void func_8002A04C(s32 a0); + extern void func_8012C098(void); + void func_801820AC(s32 param_1) { + ((void (*)(void))func_8002A04C)(); + ((void (*)(s32))func_8012C098)(param_1); + } + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801820DC); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80182148); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801821D0); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80182214); + + +void func_801822B8(s32 *a0) { + *(s32 *)((s32)a0 + 0x1C) = 6; + *(s16 *)((s32)a0 + 0x5C) = 0; + } + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801822C8); + + +// @class: plumbing +// @stuck: none — MATCH (18 ins): if((b&1) && p!=&sym) call(param,&sym); $a0 live, $a1=&sym fall out +extern void func_8012A828(s32 a0, void *a1); +extern void D_801CAB58; + +void func_80182374(s32 arg0) +{ + if ((M2C_FIELD(arg0, u8 *, 0xC3) & 1) && (M2C_FIELD(arg0, void **, 0x90) != &D_801CAB58)) { + func_8012A828(arg0, &D_801CAB58); + } +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801823BC); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80182420); + + +extern void func_8012A828(s32 a0, void *a1); +extern u8 D_801CAFE0; + +void func_80182468(s32 a0) { + *(s16 *)(a0 + 0x2) = 2; + func_8012A828(a0, &D_801CAFE0); + *(s32 *)(a0 + 0x1C) = 0x14; +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801824A8); + + +// @class: plumbing +// @stuck: none — MATCH (straightforward; callee sigs canonical from overlay) +extern void func_8012A828(s32 a0, void *a1); +extern void func_80142414(s32 a0, s16 a1); +extern u8 D_801CACF8; + +void func_801824FC(s32 param_1) { + *(s16 *)(param_1 + 2) = 4; + func_8012A828(param_1, &D_801CACF8); + *(s32 *)(param_1 + 0x1c) = 0x1e; + if (*(s16 *)(param_1 + 0xfc) == 0) { + *(s16 *)(param_1 + 0xfc) = 1; + ((void (*)(s32, s32))func_80142414)(param_1, -0x96); + } +} + + +void func_80182558(void *a0) { + *(s16 *)((s32)a0 + 0x2) = 0x5; + *(s32 *)((s32)a0 + 0x1C) = 0x14; + } + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8018256C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801827CC); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8018283C); + + +extern void (*D_8018C37C[])(void); + +void func_801829DC(void *a0) { + D_8018C37C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80182A18); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80182A80); + +extern s32 func_8012BEE8(s32 arg); + extern s32 func_801824A8(void); + void func_80182AC4(s32 param_1) { + if (((s32 (*)(void))func_8012BEE8)() != 0) { + ((void (*)(s32))func_801824A8)(param_1); + } + } + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80182AFC); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80182BA4); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80182BFC); + + +// @class: struct +// @stuck: none — MATCH expected (folded %lo via extern array decay; a0 carries iVar2 into func_8001C214) + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32 a0, s32 a1); + +extern int D_8018C36C[]; + +void func_80182D04(int param_1) +{ + int iVar2; + short uVar1; + + iVar2 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = iVar2; + if (iVar2 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(iVar2, D_8018C36C[*(short *)(param_1 + 0x70)]); + uVar1 = *(short *)(*(int *)(param_1 + 100) + 0x36); + *(short *)(param_1 + 2) = 1; + *(short *)(param_1 + 0xfe) = 0x7fff; + *(short *)(param_1 + 0xfc) = uVar1; + } + return; +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80182D88); + +extern void func_8002D4C8(s32 arg0, s32 arg1); + void func_80182F00(void) { + func_8002D4C8(0x6AA, 0); + } + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80182F24); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80182F74); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80182FB8); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80183004); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801830C0); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80183284); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801832B4); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8018335C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80183670); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801836B8); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80183894); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80183B58); + + +extern void (*D_8018C534[])(void); + +void func_80183C94(void *a0) { + D_8018C534[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80183CD0); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80183D14); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80183E18); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80183E9C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80183F7C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80183FB4); + +extern void func_8013CB84(void); + void func_80183FCC(void) { + func_8013CB84(); + } + + + +extern void (*D_8018C574[])(void); + +void func_80183FEC(void *a0) { + D_8018C574[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80184028); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80184170); + + +extern void (*D_8018C57C[])(void); + +void func_8018423C(void *a0) { + D_8018C57C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80184278); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80184410); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80184500); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80184560); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801846EC); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8018471C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801848BC); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80184AFC); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80184E8C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801850B4); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80185230); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801854A4); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80185620); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8018574C); + + +extern void (*D_8018C830[])(void); + +void func_80185898(void *a0) { + D_8018C830[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801858D4); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80185948); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80185A24); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80185B20); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80185B48); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80185D3C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80185DD8); + +void func_80185E30(void *a0) { + *(short *)((char *)a0 + 0x2) = *(unsigned short *)((char *)a0 + 0xf8); + } + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80185E3C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80185E68); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80185EF8); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80185F84); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80185FE0); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80186074); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8018611C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80186200); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80186310); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80186408); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801864D8); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80186584); + +extern s32 func_80185230(void); + void func_8018667C(void) { + func_80185230(); + } + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8018669C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8018676C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80186818); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801868C8); + + +extern void (*D_801E4D70[])(void); + +void func_80186984(void *a0) { + D_801E4D70[*(u16 *)((s32)a0 + 0x2)](); +} + + + +// @class: iv-combine +// @stuck: none — MATCH (49 ins). gcc folds (v0+0x1800)-0x1000 -> v0+0x800; re-tie barrier on the WORKING reg v0 (NOT a saved local) forces the target chain v0=base+0x1800; s2=copy; v0-=0x1000; s1=v0<<5. NO register pins (pins re-trigger the lhu/lh dual-load CSE collapse and shrink the frame; natural alloc gives s0-s3 + frame 0x38). +extern int rand(void); +extern u8 *func_8012913C(s32 a0); + +extern unsigned short D_801E4D50[]; + +void func_801869C0(s32 param_1, s32 param_2) +{ + int s3; + unsigned short s0; + int s2; + int s1; + int v0; + int iVar3; + + s0 = D_801E4D50[*(short *)(param_1 + 0xfc)]; + s3 = param_2; + if (((short *)D_801E4D50)[*(short *)(param_1 + 0xfc)] == 0) { + *(short *)(param_1 + 0xfc) = 0; + s0 = D_801E4D50[0]; + } + *(short *)(param_1 + 0xfc) = *(short *)(param_1 + 0xfc) + 1; + v0 = (rand() & 3) * 0x400 + 0x1800; + s2 = v0; + __asm__ __volatile__("" : "=r"(v0) : "0"(v0)); + s1 = (v0 - 0x1000) * 0x20; + iVar3 = ((int (*)(int))func_8012913C)(4); + if (iVar3 != 0) { + *(short *)(iVar3 + 6) = s3; + *(short *)(iVar3 + 0xa) = s0; + *(short *)(iVar3 + 0xe) = 0; + *(int *)(iVar3 + 0x10) = s1; + *(short *)(iVar3 + 0x2c) = s2; + } +} + + + +extern void (*D_801E4D84[])(void); + +void func_80186A84(void *a0) { + D_801E4D84[*(u16 *)((s32)a0 + 0x2)](); +} + + + +// @class: regalloc-order +// @stuck: none — MATCH + +extern void func_801869C0(s32, s32); +extern s32 func_8012AD50(void *a0); + +void func_80186AC0(int param_1) { + short uVar1; + + *(short *)(param_1 + 0xfc) = 0; + *(int *)(param_1 + 0x1c) = 1; + uVar1 = *(unsigned short *)(param_1 + 0x70) & 7; + *(short *)(param_1 + 0xfe) = (uVar1 < 2) ? 0x1e : 0xf; + if (uVar1 != 0) { + func_801869C0(param_1, -0x80); + func_801869C0(param_1, -0x30); + func_801869C0(param_1, 0x20); + func_801869C0(param_1, 0x70); + func_801869C0(param_1, 0xc0); + } + if (1 < uVar1) { + func_801869C0(param_1, -0x58); + func_801869C0(param_1, -0x8); + func_801869C0(param_1, 0x48); + func_801869C0(param_1, 0x98); + func_801869C0(param_1, 0xe8); + } + ((void (*)(int))func_8012AD50)(param_1); +} + + + +// @class: regalloc-order +// @stuck: none — MATCH (param_1 naturally lands in $s0 across the call, mirrors sibling func_80184AEC) + +extern s32 func_8012BEE8(s32 a0); +extern void func_801869C0(s32, s32); + +void func_80186BA8(s32 arg0) { + if (func_8012BEE8(arg0)) { + *(s32 *)(arg0 + 0x1c) = (s32)*(s16 *)(arg0 + 0xfe); + func_801869C0(arg0, 0x110); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (expected) +extern void func_8001CB00(int param_1, void *src, int len, int n); + +extern unsigned char D_801E4D78; + +void func_80186BE8(int param_1) +{ + unsigned short uVar1; + int iVar2; + + iVar2 = *(int *)(param_1 + 0x20); + func_8001CB00(iVar2, &D_801E4D78, 0x280, 0x100); + *(unsigned int *)(iVar2 + 4) = *(unsigned int *)(iVar2 + 4) | 0x70000000; + uVar1 = *(unsigned short *)(param_1 + 0x2c); + *(unsigned char *)(iVar2 + 0x27) = 0x9e; + *(unsigned short *)(iVar2 + 0x2c) = 4; + *(unsigned short *)(iVar2 + 0x1c) = uVar1; + *(unsigned short *)(iVar2 + 0x1a) = uVar1; + *(unsigned short *)(iVar2 + 0x18) = uVar1; + *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + 1; + return; +} + + + +extern void func_801292C8(u8 *a0); + +void func_80186C70(u8 *a0) { + *(s32 *)(a0 + 0x4) = *(s32 *)(a0 + 0x4) - *(s32 *)(a0 + 0x10); + if (*(s16 *)(a0 + 0x6) < -0x110) { + func_801292C8(a0); + } +} + + + +extern void (*D_801E4DD8[])(void); + +void func_80186CB8(void *a0) { + D_801E4DD8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80186CF4); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80186DF0); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80187080); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80187214); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8018726C); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_801872E8); + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8018732C); + + + + diff --git a/src/ov_SC03_010/ov_SC03_010_jr_8017A4AC.c b/src/ov_SC03_010/ov_SC03_010_jr_8017A4AC.c index eabafc9a9..d47f0d307 100644 --- a/src/ov_SC03_010/ov_SC03_010_jr_8017A4AC.c +++ b/src/ov_SC03_010/ov_SC03_010_jr_8017A4AC.c @@ -2967,919 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8019FF0C; - extern s16 D_8019FF0E; - extern s16 D_8019FF10; - extern s16 D_8019FF04; - extern s16 D_8019FF06; - extern s16 D_8019FF08; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019FF0C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019FF0E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019FF10, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019FF04, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019FF06, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019FF08, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8019FE94; -extern u16 D_8019FF14; -extern u16 D_8019FF16; -extern u16 D_8019FF18; -extern s16 D_801A0158; - -void func_8017B1D8(void) { - func_8012A418(); - D_801A0158 = 0; - D_8019FE94 = 0; - D_8019FF14 = D_80126B5E; - D_8019FF16 = D_80126B62; - D_8019FF18 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80183838[]; - extern s16 D_8019FF0C; - extern s16 D_8019FF04; - 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_80183838[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80183838[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019FF0C; - s16 *p78C = &D_8019FF04; - *(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_801A0158 = 1; - D_8019FE94 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019FEB4; - extern SV4_8017B368 D_8019FEBC; - extern s16 D_8019FF0C; - extern s16 D_8019FF04; - extern u16 D_80183838; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8019FEB4; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8019FEBC; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80183838)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80183838)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8019FF0C) = loc0; - (*(SV4_8017B368 *)&D_8019FF04) = loc1; - D_801A0158 = 1; - D_8019FE94 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80183838[]; - extern s16 D_8019FF0C; - extern s16 D_8019FF0E; - extern s16 D_8019FF10; - extern s16 D_8019FF04; - extern s16 D_8019FF06; - extern s16 D_8019FF08; - 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_80183838[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80183838[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019FF0C; - s16 *p78C = &D_8019FF04; - *(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_8019FF0E; - v798 = D_8019FF10; - v78C = *p78C; - v78E = D_8019FF06; - v790 = D_8019FF08; - __asm__ __volatile__(""); - D_801A0158 = 1; - D_8019FE94 = 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_8019FE94; -extern s16 D_8019FF0C; -extern s16 D_8019FF0E; -extern s16 D_8019FF10; -extern s16 D_8019FF04; -extern s16 D_8019FF06; -extern s16 D_8019FF08; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8019FE94 = 0; - D_8019FF0C = (s16) D_80114F30; - D_8019FF0E = (s16) D_80114F34; - D_8019FF10 = (s16) D_80114F38; - D_8019FF04 = (s16) D_80114F24; - D_8019FF06 = (s16) D_80114F28; - D_8019FF08 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8019FF24; -extern s16 D_8019FF26; -extern s16 D_8019FF28; -extern s16 D_8019FF2C; -extern s16 D_8019FF2E; -extern s16 D_8019FF30; - -void func_8017B824(void) { - D_8019FF24 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8019FF26 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8019FF28 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8019FF2C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8019FF2E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8019FF30 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8019FF24; -extern s16 D_8019FF26; -extern s16 D_8019FF28; -extern s16 D_8019FF2C; -extern s16 D_8019FF2E; -extern s16 D_8019FF30; - -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_8019FF24; - D_80114F34 = D_8019FF26; - D_80114F38 = D_8019FF28; - D_80114F24 = D_8019FF2C; - D_80114F28 = D_8019FF2E; - D_80114F2C = D_8019FF30; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8019FF0C), src[8..15] -> (*(S8_8017B8E8 *)&D_8019FF04) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8019FF0C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8019FF04) = ((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_8019FF14; -extern u16 D_8019FF16; -extern u16 D_8019FF18; - -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_8019FE94; -extern short D_8019FF1C; -extern short D_8019FF1E; -extern short D_8019FF20; -extern s16 D_8019FF0C; -extern s16 D_8019FF0E; -extern s16 D_8019FF10; -extern s16 D_8019FF04; -extern s16 D_8019FF06; -extern s16 D_8019FF08; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019FF14); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019FF16); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019FF18); - (*(s16 *)&D_8019FF1C) = buf[0]; - (*(s16 *)&D_8019FF1E) = buf[1]; - (*(s16 *)&D_8019FF20) = buf[2]; - D_8019FF0C = D_80114F30 + buf[0]; - D_8019FE94 = 0; - D_8019FF0E = D_80114F34 + buf[1]; - D_8019FF10 = D_80114F38 + buf[2]; - D_8019FF04 = D_80114F24 + buf[0]; - D_8019FF06 = D_80114F28 + buf[1]; - D_8019FF08 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8019FEB4; -extern SV4 D_8019FEBC; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019FEBC) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8019FEB4 = 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_8019FEBC = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019FEBC)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8019FEB4) = 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_8019FEBC) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8019FEDC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8019FEDC; - 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_8019FE94; -extern s16 D_801A0158; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8019FE94 = D_8019FE94 + 1; - if (D_8019FE94 >= 0x1F) { - D_801A0158 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8019FE94; -extern s16 D_801A0158; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8019FE94 = D_8019FE94 + 1; - if (0x18 < D_8019FE94) { - func_8012A4BC(); - D_801A0158 = 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_8019FE94; -extern void (*D_8019FED8)(void); -extern short D_8019FF1C; -extern short D_8019FF1E; -extern short D_8019FF20; -extern s16 D_801A0158; - -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_8019FE94 = D_8019FE94 + 1; - if (D_8019FE94 >= 0x19) { - if (D_8019FED8 != 0) { - (*D_8019FED8)(); - } else { - D_80114F30 = D_80114F30 + D_8019FF1C; - D_80114F34 = D_80114F34 + D_8019FF1E; - D_80114F38 = D_80114F38 + D_8019FF20; - D_80114F24 = D_80114F24 + D_8019FF1C; - D_80114F28 = D_80114F28 + D_8019FF1E; - D_80114F2C = D_80114F2C + D_8019FF20; - func_8012A4BC(); - } - D_801A0158 = 0; - } -} - - - -extern void (*D_801838D8[])(void); - -void func_8017BE60(void *a0) { - D_801838D8[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017BEE8); - - -extern void (*D_80183A08[])(void); - -void func_8017BFC8(void *a0) { - D_80183A08[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017C004); - -extern void func_8017C234(void); - void func_8017C214(void) { - func_8017C234(); - } - - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017C234); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017C404); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017C454); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017C4C4); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017C528); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017C5D8); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017C628); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017C670); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017C6B8); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017C6F4); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017C730); - - -extern void (*D_80183A88[])(void); - -void func_8017D7C4(void *a0) { - D_80183A88[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017D800); - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017D844(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_80183A90[])(void); - -void func_8017D868(void *a0) { - D_80183A90[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017D8A4); - - -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_8017D8E4(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_8017D960(void) { - func_800D1EBC(); - } - - - -extern void (*D_80183A9C[])(void); - -void func_8017D980(void *a0) { - D_80183A9C[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017D9BC); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017DA10); - -extern void func_800D1EBC(void); - void func_8017DA64(void) { - func_800D1EBC(); - } - - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017DA84); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017DAAC); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017DAD4); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017DB20); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017DB84); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017DC20); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017DC7C); - - -extern void (*D_80183BD0[])(void); - -void func_8017DCD8(void *a0) { - D_80183BD0[*(u8 *)((s32)a0 + 0x216)](); -} - - -extern s32 func_80171990(u8 *a0); -extern s32 func_8017DD44(s32); - -void func_8017DD14(s32 *a0) { - ((void (*)(s32 *))func_80171990)(a0); - func_8017DD44((s32)a0); -} - - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017DD44); - -extern void func_8017DE84(s32 arg0); - void func_8017DD84(void) { - func_8017DE84(0); - } - - -extern void func_8017DE84(s32 arg); - void func_8017DDA4(void) { - func_8017DE84(0x1); - } - - -extern void func_8017DE84(s32 arg0); - void func_8017DDC4(void) { - func_8017DE84(0x2); - } - - -extern void func_8017DE84(s32 arg0); - void func_8017DDE4(void) { - func_8017DE84(0x3); - } - - -extern void func_8017DE84(s32 arg0); - void func_8017DE04(void) { - func_8017DE84(4); - } - - -extern void func_8017DE84(int); -void func_8017DE24(void) { - func_8017DE84(0x5); -} - - -extern void func_8017DE84(int); -void func_8017DE44(void) { - func_8017DE84(0x6); -} - - -extern void func_8017DE84(s32 arg0); - void func_8017DE64(void) { - ((s32 (*)(s32))func_8017DE84)(0x7); - } - - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017DE84); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017DEB0); - - -extern void (*D_80183C00[])(void); - -void func_8017DED8(void *a0) { - D_80183C00[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017DF14); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017DF54); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017DF8C); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017DFB4); - - -extern void (*D_80183C08[])(void); - -void func_8017E04C(void *a0) { - D_80183C08[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017E088); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017E1EC); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017E3B8); - - -extern void (*D_80183C88[])(void); - -void func_8017E660(void *a0) { - D_80183C88[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017E69C); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017E744); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017E848); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017E8B0); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017E934); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017EA58); - - -extern void (*D_80183CE8[])(void); - -void func_8017EB14(void *a0) { - D_80183CE8[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_8017EB50(s32 *a0) { - *(s16*)((s32)a0 + 0xFC) = 0; - } - - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017EB58); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017ECE8); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017EDA8); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017EDD8); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017EE30); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017EE98); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017EEFC); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017EF7C); - -extern s32 func_8012BF10(s32 arg0, s32 arg1); - extern void func_8012AD44(s32 *a0, s16 a1); - void func_8017EFE0(void *a0) { - if (func_8012BF10((s32)a0, 0x40)) { - ((void (*)(void *, s32))func_8012AD44)(a0, 1); - } - } - - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017F01C); - - -extern void (*D_80183D58[])(void); - -void func_8017F054(void *a0) { - D_80183D58[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017F090); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017F100); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017F14C); - - -s32 func_8017F1A8(void) { - return 31; -} - - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017F1B0); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017F214); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017F374); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017F558); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017F614); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017F6C0); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017F7E0); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017F920); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017FA5C); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017FAD4); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017FB4C); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017FBC4); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017FC3C); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017FCB4); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017FD28); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017FDC8); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017FE14); - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017A4AC", func_8017FE88); - - - diff --git a/src/ov_SC03_010/ov_SC03_010_jr_8017AE2C.c b/src/ov_SC03_010/ov_SC03_010_jr_8017AE2C.c new file mode 100644 index 000000000..c799b7341 --- /dev/null +++ b/src/ov_SC03_010/ov_SC03_010_jr_8017AE2C.c @@ -0,0 +1,3817 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80182430; +extern u8 D_801823A0; +extern u8 D_8018237C; +extern u8 D_80182358; +extern u8 D_8018240C; +extern u8 D_801823E8; +extern u8 D_801823C4; +extern u8 D_80182334; +extern void func_80145934(void); +extern u8 D_801824C0; +extern u8 D_8018249C; +extern u8 D_80182478; +extern u8 D_80182454; +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_801818B8[]; +extern unsigned char D_801818E8[]; +extern unsigned char D_80181938[]; +extern unsigned char D_80181968[]; +extern unsigned char D_80181998[]; +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(void); +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_801819E8[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80181AB0[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80181B38[]; +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_80181B40; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8019ED90; +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_8019ED94; +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_80181B70; +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 void 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_80181C18[])(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_80181C3C[])(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_80181C2C; +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_80181C50[])(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_80181C5C[]; +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_80181C6C[])(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_80181C84[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80181C74; +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_80181C98[])(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_80181CB4[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181CA4; +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_80181CC8[])(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_80181CDC[])(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_80181CF0; +extern void (*D_80181D18[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80181CF8; +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_80181D64[])(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_80181D68[])(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(void *a0); +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_801821CC[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_801821DC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8019EDC8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80182204[])(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_801821E4; +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_801821F4; +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_80182244[])(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_8018224C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80182218; +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_80182258[])(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_80182228; +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_8019EDD0; +extern s32 D_8019EDDC; +extern s32 D_8019EDE0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80182294[])(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_80182268[]; +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_8019EDD8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801824E4[])(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_80182304[]; +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_80182588[])(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_801826DC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801824F8; +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_801826E4[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80182508; +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_80182528; +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_801826EC[])(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(void); +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_80182714[])(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_80182720[])(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_80182594[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801827C4; +extern void func_8015D380(s32 a0); +extern unsigned char D_801818A8[]; +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_801827D8[]; +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_80182814[]; +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_8018285C; +extern u16 D_8018285E; +extern u16 D_80182860; +extern s32 D_80182864; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018286C; +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_80182578; +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_801828F0[]; +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_801829A0[])(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_801829D0[]; +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_80182A34; +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_8019EDE8[]; +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_80182A58[])(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_8019EE40[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80182AA0[])(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_80182A90; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8019E684[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_80182AA8[])(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_80182AFC[])(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_80182AC4; +extern s16 D_80182AF8; +extern s16 D_80182AF6; +extern s16 D_80182AF4; +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_80182B08[])(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_8019EEA0; +extern u8 D_8019EEA1; +extern u8 D_8019EEA2; +extern u8 D_8019EEA3; +extern u8 D_8019EEA4; +extern u8 D_8019EEA5; +extern u8 D_8019EEA6; +extern u8 D_8019EEA7; +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_80182B18[])(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_8019EEE0; +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_80182B5C[])(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_80182BD8[]; +extern s32 D_80182BF8[]; +extern u8 D_80182C74[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80182C94[]; +extern u8 D_80182CB4[]; +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_80182D50[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80182DCC[])(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_8019E694; +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_80182DD8[])(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_80182DE0[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80182EA8[])(void); +extern void func_80166618(void *a0); +extern void (*D_80182EB8[])(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_80182EC8[])(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_80182ED4[])(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_80182E34[]; +extern u8 D_80182E48[]; +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_80182EEC[])(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_80182EF4[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80182EFC[])(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_80182F04[])(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_80182F0C[])(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_80182F14[])(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_80182F1C[])(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_80182FD0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80182FD8[])(void); +extern void func_80169F00(void *a0); +extern char D_80182F88[]; +extern char D_80182F48[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80183010[])(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_8018301C[])(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_80183064[])(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_801830E0[])(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_8019F200; +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_801830D4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80183118[]; +extern unsigned short D_80183120[]; +extern unsigned short D_80183128[]; +extern unsigned char D_8019F208[]; +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_8019F200; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80183130[])(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_8019F33C; +extern M2C_UNK D_8019F340; +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_8019F2C8; +extern void (*D_80183160[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8019F344[]; +extern u8 D_8019F34C[]; +extern u8 D_8019F2FC[]; +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_80183168[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80183184[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018318C[])(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_801831F4[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80183198; +extern u8 D_801831A4; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80183228[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80183230[])(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_80183284[])(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_801832B8[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801832A8[]; +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_801832D4; +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); +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_8018334C[])(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_80183354[])(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_8018335C[])(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_80183364[])(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_8018336C[])(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_80183374[])(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_80183380[])(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_8018338C[])(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_80183398[])(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_801833A8[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801833B8[])(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_801833C0[])(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_801833C8[])(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_801833D0[])(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_801833D8[])(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_801833E0[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801833E8[])(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_801833F0[])(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_801833F8[])(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_80183400[])(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_80183408[])(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_80183410[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80183418[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80183420[])(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_80183428[])(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_80183430[])(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_80183438[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80183440[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80183448[])(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_80183450[])(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_80183458[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80183460[])(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_80183468[])(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_801834AC[])(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_80183470; +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_801834DC[])(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_80183518[])(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(s32); +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_80183570[])(); +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_80183580[])(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_80183588[])(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_801836F0[])(); +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_801836FC[])(); +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_8019E8DC; +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 int func_801789AC(void); +extern s16 D_801A0158; +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_8019FA80; +extern short D_801A01CC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8019FEAC; +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_8019FED4; +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_8019FE90; +extern s32 func_8017A3B0(void); +extern short D_8019FECC; +extern short D_8019FEC8; +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_801A0128; +extern s16 D_801A012A; +extern s16 D_801A0134; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801A0128; + + 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_801A0134); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801A0128+0xC == &D_801A0134; 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_801A0128 + 0xC)) < 0x101) { + D_801A0128 = 0; + D_801A012A = 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_801A0134); + 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_801A0128 + 0xC)) < 0x101) { + D_801A0128 = 0; + D_801A012A = 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_8019FF0C; + extern s16 D_8019FF0E; + extern s16 D_8019FF10; + extern s16 D_8019FF04; + extern s16 D_8019FF06; + extern s16 D_8019FF08; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019FF0C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019FF0E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019FF10, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019FF04, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019FF06, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019FF08, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8019FE94; +extern u16 D_8019FF14; +extern u16 D_8019FF16; +extern u16 D_8019FF18; +extern s16 D_801A0158; + +void func_8017B1D8(void) { + func_8012A418(); + D_801A0158 = 0; + D_8019FE94 = 0; + D_8019FF14 = D_80126B5E; + D_8019FF16 = D_80126B62; + D_8019FF18 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80183838[]; + extern s16 D_8019FF0C; + extern s16 D_8019FF04; + 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_80183838[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80183838[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019FF0C; + s16 *p78C = &D_8019FF04; + *(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_801A0158 = 1; + D_8019FE94 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019FEB4; + extern SV4_8017B368 D_8019FEBC; + extern s16 D_8019FF0C; + extern s16 D_8019FF04; + extern u16 D_80183838; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8019FEB4; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8019FEBC; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80183838)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80183838)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8019FF0C) = loc0; + (*(SV4_8017B368 *)&D_8019FF04) = loc1; + D_801A0158 = 1; + D_8019FE94 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80183838[]; + extern s16 D_8019FF0C; + extern s16 D_8019FF0E; + extern s16 D_8019FF10; + extern s16 D_8019FF04; + extern s16 D_8019FF06; + extern s16 D_8019FF08; + 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_80183838[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80183838[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019FF0C; + s16 *p78C = &D_8019FF04; + *(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_8019FF0E; + v798 = D_8019FF10; + v78C = *p78C; + v78E = D_8019FF06; + v790 = D_8019FF08; + __asm__ __volatile__(""); + D_801A0158 = 1; + D_8019FE94 = 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_8019FE94; +extern s16 D_8019FF0C; +extern s16 D_8019FF0E; +extern s16 D_8019FF10; +extern s16 D_8019FF04; +extern s16 D_8019FF06; +extern s16 D_8019FF08; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8019FE94 = 0; + D_8019FF0C = (s16) D_80114F30; + D_8019FF0E = (s16) D_80114F34; + D_8019FF10 = (s16) D_80114F38; + D_8019FF04 = (s16) D_80114F24; + D_8019FF06 = (s16) D_80114F28; + D_8019FF08 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8019FF24; +extern s16 D_8019FF26; +extern s16 D_8019FF28; +extern s16 D_8019FF2C; +extern s16 D_8019FF2E; +extern s16 D_8019FF30; + +void func_8017B824(void) { + D_8019FF24 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8019FF26 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8019FF28 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8019FF2C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8019FF2E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8019FF30 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8019FF24; +extern s16 D_8019FF26; +extern s16 D_8019FF28; +extern s16 D_8019FF2C; +extern s16 D_8019FF2E; +extern s16 D_8019FF30; + +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_8019FF24; + D_80114F34 = D_8019FF26; + D_80114F38 = D_8019FF28; + D_80114F24 = D_8019FF2C; + D_80114F28 = D_8019FF2E; + D_80114F2C = D_8019FF30; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8019FF0C), src[8..15] -> (*(S8_8017B8E8 *)&D_8019FF04) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8019FF0C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8019FF04) = ((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_8019FF14; +extern u16 D_8019FF16; +extern u16 D_8019FF18; + +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_8019FE94; +extern short D_8019FF1C; +extern short D_8019FF1E; +extern short D_8019FF20; +extern s16 D_8019FF0C; +extern s16 D_8019FF0E; +extern s16 D_8019FF10; +extern s16 D_8019FF04; +extern s16 D_8019FF06; +extern s16 D_8019FF08; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019FF14); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019FF16); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019FF18); + (*(s16 *)&D_8019FF1C) = buf[0]; + (*(s16 *)&D_8019FF1E) = buf[1]; + (*(s16 *)&D_8019FF20) = buf[2]; + D_8019FF0C = D_80114F30 + buf[0]; + D_8019FE94 = 0; + D_8019FF0E = D_80114F34 + buf[1]; + D_8019FF10 = D_80114F38 + buf[2]; + D_8019FF04 = D_80114F24 + buf[0]; + D_8019FF06 = D_80114F28 + buf[1]; + D_8019FF08 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8019FEB4; +extern SV4 D_8019FEBC; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019FEBC) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8019FEB4 = 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_8019FEBC = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019FEBC)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8019FEB4) = 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_8019FEBC) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8019FEDC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8019FEDC; + 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_8019FE94; +extern s16 D_801A0158; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8019FE94 = D_8019FE94 + 1; + if (D_8019FE94 >= 0x1F) { + D_801A0158 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8019FE94; +extern s16 D_801A0158; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8019FE94 = D_8019FE94 + 1; + if (0x18 < D_8019FE94) { + func_8012A4BC(); + D_801A0158 = 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_8019FE94; +extern void (*D_8019FED8)(void); +extern short D_8019FF1C; +extern short D_8019FF1E; +extern short D_8019FF20; +extern s16 D_801A0158; + +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_8019FE94 = D_8019FE94 + 1; + if (D_8019FE94 >= 0x19) { + if (D_8019FED8 != 0) { + (*D_8019FED8)(); + } else { + D_80114F30 = D_80114F30 + D_8019FF1C; + D_80114F34 = D_80114F34 + D_8019FF1E; + D_80114F38 = D_80114F38 + D_8019FF20; + D_80114F24 = D_80114F24 + D_8019FF1C; + D_80114F28 = D_80114F28 + D_8019FF1E; + D_80114F2C = D_80114F2C + D_8019FF20; + func_8012A4BC(); + } + D_801A0158 = 0; + } +} + + + +extern void (*D_801838D8[])(void); + +void func_8017BE60(void *a0) { + D_801838D8[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017BEE8); + + +extern void (*D_80183A08[])(void); + +void func_8017BFC8(void *a0) { + D_80183A08[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017C004); + +extern void func_8017C234(void); + void func_8017C214(void) { + func_8017C234(); + } + + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017C234); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017C404); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017C454); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017C4C4); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017C528); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017C5D8); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017C628); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017C670); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017C6B8); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017C6F4); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017C730); + + +extern void (*D_80183A88[])(void); + +void func_8017D7C4(void *a0) { + D_80183A88[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017D800); + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017D844(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_80183A90[])(void); + +void func_8017D868(void *a0) { + D_80183A90[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017D8A4); + + +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_8017D8E4(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_8017D960(void) { + func_800D1EBC(); + } + + + +extern void (*D_80183A9C[])(void); + +void func_8017D980(void *a0) { + D_80183A9C[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017D9BC); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017DA10); + +extern void func_800D1EBC(void); + void func_8017DA64(void) { + func_800D1EBC(); + } + + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017DA84); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017DAAC); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017DAD4); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017DB20); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017DB84); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017DC20); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017DC7C); + + +extern void (*D_80183BD0[])(void); + +void func_8017DCD8(void *a0) { + D_80183BD0[*(u8 *)((s32)a0 + 0x216)](); +} + + +extern s32 func_80171990(u8 *a0); +extern s32 func_8017DD44(s32); + +void func_8017DD14(s32 *a0) { + ((void (*)(s32 *))func_80171990)(a0); + func_8017DD44((s32)a0); +} + + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017DD44); + +extern void func_8017DE84(s32 arg0); + void func_8017DD84(void) { + func_8017DE84(0); + } + + +extern void func_8017DE84(s32 arg); + void func_8017DDA4(void) { + func_8017DE84(0x1); + } + + +extern void func_8017DE84(s32 arg0); + void func_8017DDC4(void) { + func_8017DE84(0x2); + } + + +extern void func_8017DE84(s32 arg0); + void func_8017DDE4(void) { + func_8017DE84(0x3); + } + + +extern void func_8017DE84(s32 arg0); + void func_8017DE04(void) { + func_8017DE84(4); + } + + +extern void func_8017DE84(int); +void func_8017DE24(void) { + func_8017DE84(0x5); +} + + +extern void func_8017DE84(int); +void func_8017DE44(void) { + func_8017DE84(0x6); +} + + +extern void func_8017DE84(s32 arg0); + void func_8017DE64(void) { + ((s32 (*)(s32))func_8017DE84)(0x7); + } + + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017DE84); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017DEB0); + + +extern void (*D_80183C00[])(void); + +void func_8017DED8(void *a0) { + D_80183C00[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017DF14); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017DF54); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017DF8C); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017DFB4); + + +extern void (*D_80183C08[])(void); + +void func_8017E04C(void *a0) { + D_80183C08[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017E088); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017E1EC); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017E3B8); + + +extern void (*D_80183C88[])(void); + +void func_8017E660(void *a0) { + D_80183C88[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017E69C); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017E744); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017E848); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017E8B0); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017E934); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017EA58); + + +extern void (*D_80183CE8[])(void); + +void func_8017EB14(void *a0) { + D_80183CE8[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_8017EB50(s32 *a0) { + *(s16*)((s32)a0 + 0xFC) = 0; + } + + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017EB58); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017ECE8); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017EDA8); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017EDD8); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017EE30); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017EE98); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017EEFC); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017EF7C); + +extern s32 func_8012BF10(s32 arg0, s32 arg1); + extern void func_8012AD44(s32 *a0, s16 a1); + void func_8017EFE0(void *a0) { + if (func_8012BF10((s32)a0, 0x40)) { + ((void (*)(void *, s32))func_8012AD44)(a0, 1); + } + } + + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017F01C); + + +extern void (*D_80183D58[])(void); + +void func_8017F054(void *a0) { + D_80183D58[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017F090); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017F100); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017F14C); + + +s32 func_8017F1A8(void) { + return 31; +} + + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017F1B0); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017F214); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017F374); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017F558); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017F614); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017F6C0); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017F7E0); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017F920); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017FA5C); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017FAD4); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017FB4C); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017FBC4); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017FC3C); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017FCB4); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017FD28); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017FDC8); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017FE14); + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8017AE2C", func_8017FE88); + + + + diff --git a/src/ov_SC03_011/ov_SC03_011_jr_8017A4AC.c b/src/ov_SC03_011/ov_SC03_011_jr_8017A4AC.c index 977191aad..12d9d1173 100644 --- a/src/ov_SC03_011/ov_SC03_011_jr_8017A4AC.c +++ b/src/ov_SC03_011/ov_SC03_011_jr_8017A4AC.c @@ -2967,612 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801A21A4; - extern s16 D_801A21A6; - extern s16 D_801A21A8; - extern s16 D_801A219C; - extern s16 D_801A219E; - extern s16 D_801A21A0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A21A4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A21A6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A21A8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A219C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A219E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A21A0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801A212C; -extern u16 D_801A21AC; -extern u16 D_801A21AE; -extern u16 D_801A21B0; -extern s16 D_801A2388; - -void func_8017B1D8(void) { - func_8012A418(); - D_801A2388 = 0; - D_801A212C = 0; - D_801A21AC = D_80126B5E; - D_801A21AE = D_80126B62; - D_801A21B0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80184BA8[]; - extern s16 D_801A21A4; - extern s16 D_801A219C; - 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_80184BA8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80184BA8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A21A4; - s16 *p78C = &D_801A219C; - *(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_801A2388 = 1; - D_801A212C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A214C; - extern SV4_8017B368 D_801A2154; - extern s16 D_801A21A4; - extern s16 D_801A219C; - extern u16 D_80184BA8; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801A214C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801A2154; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80184BA8)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80184BA8)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801A21A4) = loc0; - (*(SV4_8017B368 *)&D_801A219C) = loc1; - D_801A2388 = 1; - D_801A212C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80184BA8[]; - extern s16 D_801A21A4; - extern s16 D_801A21A6; - extern s16 D_801A21A8; - extern s16 D_801A219C; - extern s16 D_801A219E; - extern s16 D_801A21A0; - 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_80184BA8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80184BA8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A21A4; - s16 *p78C = &D_801A219C; - *(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_801A21A6; - v798 = D_801A21A8; - v78C = *p78C; - v78E = D_801A219E; - v790 = D_801A21A0; - __asm__ __volatile__(""); - D_801A2388 = 1; - D_801A212C = 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_801A212C; -extern s16 D_801A21A4; -extern s16 D_801A21A6; -extern s16 D_801A21A8; -extern s16 D_801A219C; -extern s16 D_801A219E; -extern s16 D_801A21A0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801A212C = 0; - D_801A21A4 = (s16) D_80114F30; - D_801A21A6 = (s16) D_80114F34; - D_801A21A8 = (s16) D_80114F38; - D_801A219C = (s16) D_80114F24; - D_801A219E = (s16) D_80114F28; - D_801A21A0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801A21BC; -extern s16 D_801A21BE; -extern s16 D_801A21C0; -extern s16 D_801A21C4; -extern s16 D_801A21C6; -extern s16 D_801A21C8; - -void func_8017B824(void) { - D_801A21BC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801A21BE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801A21C0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801A21C4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801A21C6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801A21C8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801A21BC; -extern s16 D_801A21BE; -extern s16 D_801A21C0; -extern s16 D_801A21C4; -extern s16 D_801A21C6; -extern s16 D_801A21C8; - -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_801A21BC; - D_80114F34 = D_801A21BE; - D_80114F38 = D_801A21C0; - D_80114F24 = D_801A21C4; - D_80114F28 = D_801A21C6; - D_80114F2C = D_801A21C8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801A21A4), src[8..15] -> (*(S8_8017B8E8 *)&D_801A219C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801A21A4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801A219C) = ((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_801A21AC; -extern u16 D_801A21AE; -extern u16 D_801A21B0; - -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_801A212C; -extern short D_801A21B4; -extern short D_801A21B6; -extern short D_801A21B8; -extern s16 D_801A21A4; -extern s16 D_801A21A6; -extern s16 D_801A21A8; -extern s16 D_801A219C; -extern s16 D_801A219E; -extern s16 D_801A21A0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A21AC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A21AE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A21B0); - (*(s16 *)&D_801A21B4) = buf[0]; - (*(s16 *)&D_801A21B6) = buf[1]; - (*(s16 *)&D_801A21B8) = buf[2]; - D_801A21A4 = D_80114F30 + buf[0]; - D_801A212C = 0; - D_801A21A6 = D_80114F34 + buf[1]; - D_801A21A8 = D_80114F38 + buf[2]; - D_801A219C = D_80114F24 + buf[0]; - D_801A219E = D_80114F28 + buf[1]; - D_801A21A0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801A214C; -extern SV4 D_801A2154; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A2154) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801A214C = 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_801A2154 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A2154)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801A214C) = 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_801A2154) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801A2174[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801A2174; - 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_801A212C; -extern s16 D_801A2388; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801A212C = D_801A212C + 1; - if (D_801A212C >= 0x1F) { - D_801A2388 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801A212C; -extern s16 D_801A2388; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801A212C = D_801A212C + 1; - if (0x18 < D_801A212C) { - func_8012A4BC(); - D_801A2388 = 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_801A212C; -extern void (*D_801A2170)(void); -extern short D_801A21B4; -extern short D_801A21B6; -extern short D_801A21B8; -extern s16 D_801A2388; - -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_801A212C = D_801A212C + 1; - if (D_801A212C >= 0x19) { - if (D_801A2170 != 0) { - (*D_801A2170)(); - } else { - D_80114F30 = D_80114F30 + D_801A21B4; - D_80114F34 = D_80114F34 + D_801A21B6; - D_80114F38 = D_80114F38 + D_801A21B8; - D_80114F24 = D_80114F24 + D_801A21B4; - D_80114F28 = D_80114F28 + D_801A21B6; - D_80114F2C = D_80114F2C + D_801A21B8; - func_8012A4BC(); - } - D_801A2388 = 0; - } -} - - - -extern void (*D_80184C48[])(void); - -void func_8017BE60(void *a0) { - D_80184C48[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017A4AC", func_8017BEE8); - - -extern void (*D_80184D78[])(void); - -void func_8017BFC8(void *a0) { - D_80184D78[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017A4AC", func_8017C004); - -extern void func_8017C234(void); -void func_8017C214(void) { - func_8017C234(); -} - - -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017A4AC", func_8017C234); - -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017A4AC", func_8017C404); - -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017A4AC", func_8017C454); - -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017A4AC", func_8017C4C4); - -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017A4AC", func_8017C528); - -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017A4AC", func_8017C5D8); - -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017A4AC", func_8017C628); - -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017A4AC", func_8017C670); - -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017A4AC", func_8017C6B8); - -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017A4AC", func_8017C6F4); diff --git a/src/ov_SC03_011/ov_SC03_011_jr_8017AE2C.c b/src/ov_SC03_011/ov_SC03_011_jr_8017AE2C.c new file mode 100644 index 000000000..13e0b09b9 --- /dev/null +++ b/src/ov_SC03_011/ov_SC03_011_jr_8017AE2C.c @@ -0,0 +1,3510 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801837A0; +extern u8 D_80183710; +extern u8 D_801836EC; +extern u8 D_801836C8; +extern u8 D_8018377C; +extern u8 D_80183758; +extern u8 D_80183734; +extern u8 D_801836A4; +extern void func_80145934(void); +extern u8 D_80183830; +extern u8 D_8018380C; +extern u8 D_801837E8; +extern u8 D_801837C4; +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_80182C28[]; +extern unsigned char D_80182C58[]; +extern unsigned char D_80182CA8[]; +extern unsigned char D_80182CD8[]; +extern unsigned char D_80182D08[]; +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(void); +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_80182D58[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80182E20[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80182EA8[]; +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_80182EB0; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801A1028; +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_801A102C; +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_80182EE0; +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 void 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_80182F88[])(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_80182FAC[])(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_80182F9C; +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_80182FC0[])(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_80182FCC[]; +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_80182FDC[])(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_80182FF4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80182FE4; +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_80183008[])(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_80183024[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80183014; +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_80183038[])(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_8018304C[])(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_80183060; +extern void (*D_80183088[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80183068; +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_801830D4[])(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_801830D8[])(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(void *a0); +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_8018353C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018354C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801A1060; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80183574[])(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_80183554; +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_80183564; +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_801835B4[])(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_801835BC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80183588; +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_801835C8[])(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_80183598; +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_801A1068; +extern s32 D_801A1074; +extern s32 D_801A1078; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80183604[])(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_801835D8[]; +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_801A1070; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80183854[])(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_80183674[]; +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_801838F8[])(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_80183A4C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80183868; +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_80183A54[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80183878; +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_80183898; +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_80183A5C[])(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(void); +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_80183A84[])(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_80183A90[])(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_80183904[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80183B34; +extern void func_8015D380(s32 a0); +extern unsigned char D_80182C18[]; +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_80183B48[]; +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_80183B84[]; +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_80183BCC; +extern u16 D_80183BCE; +extern u16 D_80183BD0; +extern s32 D_80183BD4; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80183BDC; +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_801838E8; +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_80183C60[]; +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_80183D10[])(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_80183D40[]; +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_80183DA4; +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_801A1080[]; +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_80183DC8[])(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_801A10D8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80183E10[])(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_80183E00; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801A08F4[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_80183E18[])(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_80183E6C[])(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_80183E34; +extern s16 D_80183E68; +extern s16 D_80183E66; +extern s16 D_80183E64; +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_80183E78[])(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_801A1138; +extern u8 D_801A1139; +extern u8 D_801A113A; +extern u8 D_801A113B; +extern u8 D_801A113C; +extern u8 D_801A113D; +extern u8 D_801A113E; +extern u8 D_801A113F; +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_80183E88[])(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_801A1178; +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_80183ECC[])(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_80183F48[]; +extern s32 D_80183F68[]; +extern u8 D_80183FE4[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80184004[]; +extern u8 D_80184024[]; +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_801840C0[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018413C[])(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_801A0904; +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_80184148[])(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_80184150[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80184218[])(void); +extern void func_80166618(void *a0); +extern void (*D_80184228[])(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_80184238[])(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_80184244[])(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_801841A4[]; +extern u8 D_801841B8[]; +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_8018425C[])(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_80184264[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018426C[])(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_80184274[])(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_8018427C[])(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_80184284[])(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_8018428C[])(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_80184340[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80184348[])(void); +extern void func_80169F00(void *a0); +extern char D_801842F8[]; +extern char D_801842B8[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80184380[])(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_8018438C[])(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_801843D4[])(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_80184450[])(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_801A1498; +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_80184444[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80184488[]; +extern unsigned short D_80184490[]; +extern unsigned short D_80184498[]; +extern unsigned char D_801A14A0[]; +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_801A1498; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801844A0[])(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_801A15D4; +extern M2C_UNK D_801A15D8; +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_801A1560; +extern void (*D_801844D0[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801A15DC[]; +extern u8 D_801A15E4[]; +extern u8 D_801A1594[]; +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_801844D8[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801844F4[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801844FC[])(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_80184564[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80184508; +extern u8 D_80184514; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80184598[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801845A0[])(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_801845F4[])(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_80184628[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80184618[]; +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_80184644; +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); +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_801846BC[])(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_801846C4[])(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_801846CC[])(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_801846D4[])(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_801846DC[])(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_801846E4[])(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_801846F0[])(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_801846FC[])(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_80184708[])(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_80184718[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80184728[])(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_80184730[])(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_80184738[])(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_80184740[])(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_80184748[])(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_80184750[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80184758[])(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_80184760[])(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_80184768[])(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_80184770[])(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_80184778[])(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_80184780[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80184788[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80184790[])(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_80184798[])(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_801847A0[])(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_801847A8[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801847B0[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801847B8[])(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_801847C0[])(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_801847C8[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801847D0[])(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_801847D8[])(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_8018481C[])(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_801847E0; +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_8018484C[])(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_80184888[])(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(s32); +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_801848E0[])(); +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_801848F0[])(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_801848F8[])(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_80184A60[])(); +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_80184A6C[])(); +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_801A0B4C; +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 int func_801789AC(void); +extern s16 D_801A2388; +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_801A1D18; +extern short D_801A2400; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801A2144; +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_801A216C; +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_801A2128; +extern s32 func_8017A3B0(void); +extern short D_801A2164; +extern short D_801A2160; +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_801A2358; +extern s16 D_801A235A; +extern s16 D_801A2364; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801A2358; + + 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_801A2364); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801A2358+0xC == &D_801A2364; 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_801A2358 + 0xC)) < 0x101) { + D_801A2358 = 0; + D_801A235A = 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_801A2364); + 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_801A2358 + 0xC)) < 0x101) { + D_801A2358 = 0; + D_801A235A = 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_801A21A4; + extern s16 D_801A21A6; + extern s16 D_801A21A8; + extern s16 D_801A219C; + extern s16 D_801A219E; + extern s16 D_801A21A0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A21A4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A21A6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A21A8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A219C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A219E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A21A0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801A212C; +extern u16 D_801A21AC; +extern u16 D_801A21AE; +extern u16 D_801A21B0; +extern s16 D_801A2388; + +void func_8017B1D8(void) { + func_8012A418(); + D_801A2388 = 0; + D_801A212C = 0; + D_801A21AC = D_80126B5E; + D_801A21AE = D_80126B62; + D_801A21B0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80184BA8[]; + extern s16 D_801A21A4; + extern s16 D_801A219C; + 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_80184BA8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80184BA8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A21A4; + s16 *p78C = &D_801A219C; + *(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_801A2388 = 1; + D_801A212C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A214C; + extern SV4_8017B368 D_801A2154; + extern s16 D_801A21A4; + extern s16 D_801A219C; + extern u16 D_80184BA8; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801A214C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801A2154; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80184BA8)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80184BA8)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801A21A4) = loc0; + (*(SV4_8017B368 *)&D_801A219C) = loc1; + D_801A2388 = 1; + D_801A212C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80184BA8[]; + extern s16 D_801A21A4; + extern s16 D_801A21A6; + extern s16 D_801A21A8; + extern s16 D_801A219C; + extern s16 D_801A219E; + extern s16 D_801A21A0; + 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_80184BA8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80184BA8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A21A4; + s16 *p78C = &D_801A219C; + *(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_801A21A6; + v798 = D_801A21A8; + v78C = *p78C; + v78E = D_801A219E; + v790 = D_801A21A0; + __asm__ __volatile__(""); + D_801A2388 = 1; + D_801A212C = 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_801A212C; +extern s16 D_801A21A4; +extern s16 D_801A21A6; +extern s16 D_801A21A8; +extern s16 D_801A219C; +extern s16 D_801A219E; +extern s16 D_801A21A0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801A212C = 0; + D_801A21A4 = (s16) D_80114F30; + D_801A21A6 = (s16) D_80114F34; + D_801A21A8 = (s16) D_80114F38; + D_801A219C = (s16) D_80114F24; + D_801A219E = (s16) D_80114F28; + D_801A21A0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801A21BC; +extern s16 D_801A21BE; +extern s16 D_801A21C0; +extern s16 D_801A21C4; +extern s16 D_801A21C6; +extern s16 D_801A21C8; + +void func_8017B824(void) { + D_801A21BC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801A21BE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801A21C0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801A21C4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801A21C6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801A21C8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801A21BC; +extern s16 D_801A21BE; +extern s16 D_801A21C0; +extern s16 D_801A21C4; +extern s16 D_801A21C6; +extern s16 D_801A21C8; + +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_801A21BC; + D_80114F34 = D_801A21BE; + D_80114F38 = D_801A21C0; + D_80114F24 = D_801A21C4; + D_80114F28 = D_801A21C6; + D_80114F2C = D_801A21C8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801A21A4), src[8..15] -> (*(S8_8017B8E8 *)&D_801A219C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801A21A4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801A219C) = ((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_801A21AC; +extern u16 D_801A21AE; +extern u16 D_801A21B0; + +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_801A212C; +extern short D_801A21B4; +extern short D_801A21B6; +extern short D_801A21B8; +extern s16 D_801A21A4; +extern s16 D_801A21A6; +extern s16 D_801A21A8; +extern s16 D_801A219C; +extern s16 D_801A219E; +extern s16 D_801A21A0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A21AC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A21AE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A21B0); + (*(s16 *)&D_801A21B4) = buf[0]; + (*(s16 *)&D_801A21B6) = buf[1]; + (*(s16 *)&D_801A21B8) = buf[2]; + D_801A21A4 = D_80114F30 + buf[0]; + D_801A212C = 0; + D_801A21A6 = D_80114F34 + buf[1]; + D_801A21A8 = D_80114F38 + buf[2]; + D_801A219C = D_80114F24 + buf[0]; + D_801A219E = D_80114F28 + buf[1]; + D_801A21A0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801A214C; +extern SV4 D_801A2154; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A2154) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801A214C = 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_801A2154 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A2154)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801A214C) = 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_801A2154) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801A2174[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801A2174; + 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_801A212C; +extern s16 D_801A2388; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801A212C = D_801A212C + 1; + if (D_801A212C >= 0x1F) { + D_801A2388 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801A212C; +extern s16 D_801A2388; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801A212C = D_801A212C + 1; + if (0x18 < D_801A212C) { + func_8012A4BC(); + D_801A2388 = 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_801A212C; +extern void (*D_801A2170)(void); +extern short D_801A21B4; +extern short D_801A21B6; +extern short D_801A21B8; +extern s16 D_801A2388; + +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_801A212C = D_801A212C + 1; + if (D_801A212C >= 0x19) { + if (D_801A2170 != 0) { + (*D_801A2170)(); + } else { + D_80114F30 = D_80114F30 + D_801A21B4; + D_80114F34 = D_80114F34 + D_801A21B6; + D_80114F38 = D_80114F38 + D_801A21B8; + D_80114F24 = D_80114F24 + D_801A21B4; + D_80114F28 = D_80114F28 + D_801A21B6; + D_80114F2C = D_80114F2C + D_801A21B8; + func_8012A4BC(); + } + D_801A2388 = 0; + } +} + + + +extern void (*D_80184C48[])(void); + +void func_8017BE60(void *a0) { + D_80184C48[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017AE2C", func_8017BEE8); + + +extern void (*D_80184D78[])(void); + +void func_8017BFC8(void *a0) { + D_80184D78[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017AE2C", func_8017C004); + +extern void func_8017C234(void); +void func_8017C214(void) { + func_8017C234(); +} + + +INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017AE2C", func_8017C234); + +INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017AE2C", func_8017C404); + +INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017AE2C", func_8017C454); + +INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017AE2C", func_8017C4C4); + +INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017AE2C", func_8017C528); + +INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017AE2C", func_8017C5D8); + +INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017AE2C", func_8017C628); + +INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017AE2C", func_8017C670); + +INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017AE2C", func_8017C6B8); + +INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017AE2C", func_8017C6F4); + diff --git a/src/ov_SC03_012/ov_SC03_012_jr_8017A4AC.c b/src/ov_SC03_012/ov_SC03_012_jr_8017A4AC.c index d68162fc3..1f78b15ca 100644 --- a/src/ov_SC03_012/ov_SC03_012_jr_8017A4AC.c +++ b/src/ov_SC03_012/ov_SC03_012_jr_8017A4AC.c @@ -2967,754 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_80194FC4; - extern s16 D_80194FC6; - extern s16 D_80194FC8; - extern s16 D_80194FBC; - extern s16 D_80194FBE; - extern s16 D_80194FC0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80194FC4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80194FC6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80194FC8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_80194FBC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_80194FBE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80194FC0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80194F4C; -extern u16 D_80194FCC; -extern u16 D_80194FCE; -extern u16 D_80194FD0; -extern s16 D_801950E8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801950E8 = 0; - D_80194F4C = 0; - D_80194FCC = D_80126B5E; - D_80194FCE = D_80126B62; - D_80194FD0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80181A88[]; - extern s16 D_80194FC4; - extern s16 D_80194FBC; - 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_80181A88[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80181A88[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80194FC4; - s16 *p78C = &D_80194FBC; - *(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_801950E8 = 1; - D_80194F4C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_80194F6C; - extern SV4_8017B368 D_80194F74; - extern s16 D_80194FC4; - extern s16 D_80194FBC; - extern u16 D_80181A88; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_80194F6C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_80194F74; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80181A88)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80181A88)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_80194FC4) = loc0; - (*(SV4_8017B368 *)&D_80194FBC) = loc1; - D_801950E8 = 1; - D_80194F4C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80181A88[]; - extern s16 D_80194FC4; - extern s16 D_80194FC6; - extern s16 D_80194FC8; - extern s16 D_80194FBC; - extern s16 D_80194FBE; - extern s16 D_80194FC0; - 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_80181A88[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80181A88[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80194FC4; - s16 *p78C = &D_80194FBC; - *(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_80194FC6; - v798 = D_80194FC8; - v78C = *p78C; - v78E = D_80194FBE; - v790 = D_80194FC0; - __asm__ __volatile__(""); - D_801950E8 = 1; - D_80194F4C = 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_80194F4C; -extern s16 D_80194FC4; -extern s16 D_80194FC6; -extern s16 D_80194FC8; -extern s16 D_80194FBC; -extern s16 D_80194FBE; -extern s16 D_80194FC0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_80194F4C = 0; - D_80194FC4 = (s16) D_80114F30; - D_80194FC6 = (s16) D_80114F34; - D_80194FC8 = (s16) D_80114F38; - D_80194FBC = (s16) D_80114F24; - D_80194FBE = (s16) D_80114F28; - D_80194FC0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_80194FDC; -extern s16 D_80194FDE; -extern s16 D_80194FE0; -extern s16 D_80194FE4; -extern s16 D_80194FE6; -extern s16 D_80194FE8; - -void func_8017B824(void) { - D_80194FDC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_80194FDE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_80194FE0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_80194FE4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_80194FE6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_80194FE8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_80194FDC; -extern s16 D_80194FDE; -extern s16 D_80194FE0; -extern s16 D_80194FE4; -extern s16 D_80194FE6; -extern s16 D_80194FE8; - -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_80194FDC; - D_80114F34 = D_80194FDE; - D_80114F38 = D_80194FE0; - D_80114F24 = D_80194FE4; - D_80114F28 = D_80194FE6; - D_80114F2C = D_80194FE8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_80194FC4), src[8..15] -> (*(S8_8017B8E8 *)&D_80194FBC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_80194FC4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_80194FBC) = ((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_80194FCC; -extern u16 D_80194FCE; -extern u16 D_80194FD0; - -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_80194F4C; -extern short D_80194FD4; -extern short D_80194FD6; -extern short D_80194FD8; -extern s16 D_80194FC4; -extern s16 D_80194FC6; -extern s16 D_80194FC8; -extern s16 D_80194FBC; -extern s16 D_80194FBE; -extern s16 D_80194FC0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_80194FCC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_80194FCE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80194FD0); - (*(s16 *)&D_80194FD4) = buf[0]; - (*(s16 *)&D_80194FD6) = buf[1]; - (*(s16 *)&D_80194FD8) = buf[2]; - D_80194FC4 = D_80114F30 + buf[0]; - D_80194F4C = 0; - D_80194FC6 = D_80114F34 + buf[1]; - D_80194FC8 = D_80114F38 + buf[2]; - D_80194FBC = D_80114F24 + buf[0]; - D_80194FBE = D_80114F28 + buf[1]; - D_80194FC0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_80194F6C; -extern SV4 D_80194F74; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_80194F74) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_80194F6C = 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_80194F74 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80194F74)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_80194F6C) = 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_80194F74) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_80194F94[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_80194F94; - 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_80194F4C; -extern s16 D_801950E8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_80194F4C = D_80194F4C + 1; - if (D_80194F4C >= 0x1F) { - D_801950E8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_80194F4C; -extern s16 D_801950E8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_80194F4C = D_80194F4C + 1; - if (0x18 < D_80194F4C) { - func_8012A4BC(); - D_801950E8 = 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_80194F4C; -extern void (*D_80194F90)(void); -extern short D_80194FD4; -extern short D_80194FD6; -extern short D_80194FD8; -extern s16 D_801950E8; - -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_80194F4C = D_80194F4C + 1; - if (D_80194F4C >= 0x19) { - if (D_80194F90 != 0) { - (*D_80194F90)(); - } else { - D_80114F30 = D_80114F30 + D_80194FD4; - D_80114F34 = D_80114F34 + D_80194FD6; - D_80114F38 = D_80114F38 + D_80194FD8; - D_80114F24 = D_80114F24 + D_80194FD4; - D_80114F28 = D_80114F28 + D_80194FD6; - D_80114F2C = D_80114F2C + D_80194FD8; - func_8012A4BC(); - } - D_801950E8 = 0; - } -} - - - -extern void (*D_80181B28[])(void); - -void func_8017BE60(void *a0) { - D_80181B28[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017BEBC); - -extern void ReadRotMatrix(void *a0); -extern void PushMatrix(void); -extern void func_8004974C(void *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void PopMatrix(void); -void func_8017C294(u16 *a0, void *a1) { - s32 mat[8]; - s32 buf[8]; - s16 sv[4]; - ReadRotMatrix((void *)mat); - PushMatrix(); - sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); - sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); - sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); - func_8004974C((void *)mat, (void *)buf); - ApplyMatrixSV((void *)buf, (void *)sv, a1); - PopMatrix(); -} - - -int func_8017C338(short *param_1, short *param_2, short *param_3, int param_4) { - register int i2o __asm__("$5"); - register int i4o __asm__("$9"); - short sVar1; int rx, rz, uVar5; - i4o = param_2[1]; - __asm__ __volatile__("" : : "r"(i4o)); - i2o = param_1[1]; uVar5 = 0; - if (i2o >= i4o) { - rx = param_1[0] - i2o * (param_2[0] - param_1[0]); - rz = param_1[2] - i2o * (param_2[2] - param_1[2]); - } else { - register int den __asm__("$3"); - int p2x = param_2[0], p2z = param_2[2]; - den = i2o - i4o; - rx = p2x + i4o * (p2x - param_1[0]) / den; - rz = p2z + i4o * (p2z - param_1[2]) / den; - } - if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } - else i2o = -0x7fff; - *param_3 = (short)i2o; - if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } - else i2o = -0x7fff; - param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; - if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } - if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } - if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } - if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } - return uVar5; -} - - -extern void ReadGeomOffset(s32 *a0, s32 *a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8004921C(s32 a0, s32 a1); -void func_8017C530(s32 a0, s32 a1) { - s32 ofx; - s32 ofy; - s32 sxy; - s32 p; - ReadGeomOffset(&ofx, &ofy); - func_8004921C(0, 0); - RotTransPers(a0, a1, &sxy, &p); - func_8004921C(ofx, ofy); -} - - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017C59C); - - -extern void (*D_80181B84[])(void); - -void func_8017D468(void *a0) { - D_80181B84[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017D4A4); - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017D4E8(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_80181B8C[])(void); - -void func_8017D50C(void *a0) { - D_80181B8C[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017D548); - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017D5D0); - -extern s32 func_800D1EBC(void); - void func_8017D644(void) { - func_800D1EBC(); - } - - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017D664); - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017D68C); - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017D6B4); - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017D780); - - -extern void (*D_80181BB8[])(void); - -void func_8017D84C(void *a0) { - D_80181BB8[*(u8 *)((s32)a0 + 0x4)](); -} - - -void func_8017D888(void) { -} - - -extern void (*D_80181BBC[])(void); - -void func_8017D890(void *a0) { - D_80181BBC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017D8CC); - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017DA80); - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017DB28); - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017DBE4); - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017DCB4); - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017DE18); - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017DE90); - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017DEB0); - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017DEF0); - -void func_8017DFBC(void *a0) { - *(short *)(*(int *)((char *)a0 + 0x64) + 0xe0) = 2; - } - - - -extern void (*D_80181BE0[])(void); - -void func_8017DFCC(void *a0) { - D_80181BE0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017E008); - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017A4AC", func_8017E090); - -extern s32 func_8013CB84(void); - void func_8017E0D4(void) { - func_8013CB84(); - } - - -extern s32 func_8017E0F4(void); - s32 func_8017E0F4(void) { - return 0x23; - } - - - diff --git a/src/ov_SC03_012/ov_SC03_012_jr_8017AE2C.c b/src/ov_SC03_012/ov_SC03_012_jr_8017AE2C.c new file mode 100644 index 000000000..def992067 --- /dev/null +++ b/src/ov_SC03_012/ov_SC03_012_jr_8017AE2C.c @@ -0,0 +1,3652 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80180680; +extern u8 D_801805F0; +extern u8 D_801805CC; +extern u8 D_801805A8; +extern u8 D_8018065C; +extern u8 D_80180638; +extern u8 D_80180614; +extern u8 D_80180584; +extern void func_80145934(void); +extern u8 D_80180710; +extern u8 D_801806EC; +extern u8 D_801806C8; +extern u8 D_801806A4; +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_8017FB08[]; +extern unsigned char D_8017FB38[]; +extern unsigned char D_8017FB88[]; +extern unsigned char D_8017FBB8[]; +extern unsigned char D_8017FBE8[]; +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(void); +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_8017FC38[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8017FD00[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8017FD88[]; +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_8017FD90; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_80193E48; +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_80193E4C; +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_8017FDC0; +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 void 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_8017FE68[])(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_8017FE8C[])(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_8017FE7C; +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_8017FEA0[])(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_8017FEAC[]; +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_8017FEBC[])(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_8017FED4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8017FEC4; +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_8017FEE8[])(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_8017FF04[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8017FEF4; +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_8017FF18[])(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_8017FF2C[])(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_8017FF40; +extern void (*D_8017FF68[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8017FF48; +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_8017FFB4[])(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_8017FFB8[])(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(void *a0); +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_8018041C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018042C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_80193E80; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180454[])(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_80180434; +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_80180444; +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_80180494[])(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_8018049C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180468; +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_801804A8[])(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_80180478; +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_80193E88; +extern s32 D_80193E94; +extern s32 D_80193E98; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801804E4[])(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_801804B8[]; +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_80193E90; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80180734[])(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_80180554[]; +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_801807D8[])(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_8018092C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80180748; +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_80180934[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80180758; +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_80180778; +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_8018093C[])(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(void); +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_80180964[])(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_80180970[])(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_801807E4[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80180A14; +extern void func_8015D380(s32 a0); +extern unsigned char D_8017FAF8[]; +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_80180A28[]; +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_80180A64[]; +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_80180AAC; +extern u16 D_80180AAE; +extern u16 D_80180AB0; +extern s32 D_80180AB4; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80180ABC; +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_801807C8; +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_80180B40[]; +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_80180BF0[])(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_80180C20[]; +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_80180C84; +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_80193EA0[]; +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_80180CA8[])(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_80193EF8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80180CF0[])(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_80180CE0; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_80193750[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_80180CF8[])(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_80180D4C[])(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_80180D14; +extern s16 D_80180D48; +extern s16 D_80180D46; +extern s16 D_80180D44; +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_80180D58[])(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_80193F58; +extern u8 D_80193F59; +extern u8 D_80193F5A; +extern u8 D_80193F5B; +extern u8 D_80193F5C; +extern u8 D_80193F5D; +extern u8 D_80193F5E; +extern u8 D_80193F5F; +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_80180D68[])(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_80193F98; +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_80180DAC[])(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_80180E28[]; +extern s32 D_80180E48[]; +extern u8 D_80180EC4[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80180EE4[]; +extern u8 D_80180F04[]; +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_80180FA0[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018101C[])(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_80193760; +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_80181028[])(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_80181030[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801810F8[])(void); +extern void func_80166618(void *a0); +extern void (*D_80181108[])(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_80181118[])(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_80181124[])(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_80181084[]; +extern u8 D_80181098[]; +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_8018113C[])(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_80181144[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018114C[])(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_80181154[])(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_8018115C[])(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_80181164[])(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_8018116C[])(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_80181220[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80181228[])(void); +extern void func_80169F00(void *a0); +extern char D_801811D8[]; +extern char D_80181198[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80181260[])(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_8018126C[])(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_801812B4[])(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_80181330[])(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_801942B8; +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_80181324[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80181368[]; +extern unsigned short D_80181370[]; +extern unsigned short D_80181378[]; +extern unsigned char D_801942C0[]; +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_801942B8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80181380[])(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_801943F4; +extern M2C_UNK D_801943F8; +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_80194380; +extern void (*D_801813B0[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801943FC[]; +extern u8 D_80194404[]; +extern u8 D_801943B4[]; +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_801813B8[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801813D4[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801813DC[])(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_80181444[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801813E8; +extern u8 D_801813F4; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80181478[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80181480[])(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_801814D4[])(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_80181508[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801814F8[]; +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_80181524; +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); +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_8018159C[])(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_801815A4[])(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_801815AC[])(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_801815B4[])(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_801815BC[])(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_801815C4[])(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_801815D0[])(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_801815DC[])(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_801815E8[])(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_801815F8[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80181608[])(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_80181610[])(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_80181618[])(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_80181620[])(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_80181628[])(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_80181630[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80181638[])(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_80181640[])(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_80181648[])(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_80181650[])(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_80181658[])(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_80181660[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80181668[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80181670[])(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_80181678[])(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_80181680[])(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_80181688[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80181690[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80181698[])(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_801816A0[])(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_801816A8[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801816B0[])(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_801816B8[])(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_801816FC[])(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_801816C0; +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_8018172C[])(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_80181768[])(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(s32); +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_801817C0[])(); +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_801817D0[])(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_801817D8[])(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_80181940[])(); +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_8018194C[])(); +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_801939A8; +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 int func_801789AC(void); +extern s16 D_801950E8; +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_80194B38; +extern short D_8019515C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_80194F64; +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_80194F8C; +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_80194F48; +extern s32 func_8017A3B0(void); +extern short D_80194F84; +extern short D_80194F80; +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_801950B8; +extern s16 D_801950BA; +extern s16 D_801950C4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801950B8; + + 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_801950C4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801950B8+0xC == &D_801950C4; 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_801950B8 + 0xC)) < 0x101) { + D_801950B8 = 0; + D_801950BA = 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_801950C4); + 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_801950B8 + 0xC)) < 0x101) { + D_801950B8 = 0; + D_801950BA = 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_80194FC4; + extern s16 D_80194FC6; + extern s16 D_80194FC8; + extern s16 D_80194FBC; + extern s16 D_80194FBE; + extern s16 D_80194FC0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80194FC4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80194FC6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80194FC8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_80194FBC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_80194FBE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80194FC0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_80194F4C; +extern u16 D_80194FCC; +extern u16 D_80194FCE; +extern u16 D_80194FD0; +extern s16 D_801950E8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801950E8 = 0; + D_80194F4C = 0; + D_80194FCC = D_80126B5E; + D_80194FCE = D_80126B62; + D_80194FD0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80181A88[]; + extern s16 D_80194FC4; + extern s16 D_80194FBC; + 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_80181A88[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80181A88[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80194FC4; + s16 *p78C = &D_80194FBC; + *(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_801950E8 = 1; + D_80194F4C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_80194F6C; + extern SV4_8017B368 D_80194F74; + extern s16 D_80194FC4; + extern s16 D_80194FBC; + extern u16 D_80181A88; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_80194F6C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_80194F74; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80181A88)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80181A88)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_80194FC4) = loc0; + (*(SV4_8017B368 *)&D_80194FBC) = loc1; + D_801950E8 = 1; + D_80194F4C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80181A88[]; + extern s16 D_80194FC4; + extern s16 D_80194FC6; + extern s16 D_80194FC8; + extern s16 D_80194FBC; + extern s16 D_80194FBE; + extern s16 D_80194FC0; + 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_80181A88[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80181A88[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80194FC4; + s16 *p78C = &D_80194FBC; + *(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_80194FC6; + v798 = D_80194FC8; + v78C = *p78C; + v78E = D_80194FBE; + v790 = D_80194FC0; + __asm__ __volatile__(""); + D_801950E8 = 1; + D_80194F4C = 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_80194F4C; +extern s16 D_80194FC4; +extern s16 D_80194FC6; +extern s16 D_80194FC8; +extern s16 D_80194FBC; +extern s16 D_80194FBE; +extern s16 D_80194FC0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_80194F4C = 0; + D_80194FC4 = (s16) D_80114F30; + D_80194FC6 = (s16) D_80114F34; + D_80194FC8 = (s16) D_80114F38; + D_80194FBC = (s16) D_80114F24; + D_80194FBE = (s16) D_80114F28; + D_80194FC0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_80194FDC; +extern s16 D_80194FDE; +extern s16 D_80194FE0; +extern s16 D_80194FE4; +extern s16 D_80194FE6; +extern s16 D_80194FE8; + +void func_8017B824(void) { + D_80194FDC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_80194FDE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_80194FE0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_80194FE4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_80194FE6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_80194FE8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_80194FDC; +extern s16 D_80194FDE; +extern s16 D_80194FE0; +extern s16 D_80194FE4; +extern s16 D_80194FE6; +extern s16 D_80194FE8; + +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_80194FDC; + D_80114F34 = D_80194FDE; + D_80114F38 = D_80194FE0; + D_80114F24 = D_80194FE4; + D_80114F28 = D_80194FE6; + D_80114F2C = D_80194FE8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_80194FC4), src[8..15] -> (*(S8_8017B8E8 *)&D_80194FBC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_80194FC4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_80194FBC) = ((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_80194FCC; +extern u16 D_80194FCE; +extern u16 D_80194FD0; + +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_80194F4C; +extern short D_80194FD4; +extern short D_80194FD6; +extern short D_80194FD8; +extern s16 D_80194FC4; +extern s16 D_80194FC6; +extern s16 D_80194FC8; +extern s16 D_80194FBC; +extern s16 D_80194FBE; +extern s16 D_80194FC0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_80194FCC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_80194FCE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80194FD0); + (*(s16 *)&D_80194FD4) = buf[0]; + (*(s16 *)&D_80194FD6) = buf[1]; + (*(s16 *)&D_80194FD8) = buf[2]; + D_80194FC4 = D_80114F30 + buf[0]; + D_80194F4C = 0; + D_80194FC6 = D_80114F34 + buf[1]; + D_80194FC8 = D_80114F38 + buf[2]; + D_80194FBC = D_80114F24 + buf[0]; + D_80194FBE = D_80114F28 + buf[1]; + D_80194FC0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_80194F6C; +extern SV4 D_80194F74; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_80194F74) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_80194F6C = 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_80194F74 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80194F74)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_80194F6C) = 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_80194F74) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_80194F94[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_80194F94; + 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_80194F4C; +extern s16 D_801950E8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_80194F4C = D_80194F4C + 1; + if (D_80194F4C >= 0x1F) { + D_801950E8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_80194F4C; +extern s16 D_801950E8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_80194F4C = D_80194F4C + 1; + if (0x18 < D_80194F4C) { + func_8012A4BC(); + D_801950E8 = 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_80194F4C; +extern void (*D_80194F90)(void); +extern short D_80194FD4; +extern short D_80194FD6; +extern short D_80194FD8; +extern s16 D_801950E8; + +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_80194F4C = D_80194F4C + 1; + if (D_80194F4C >= 0x19) { + if (D_80194F90 != 0) { + (*D_80194F90)(); + } else { + D_80114F30 = D_80114F30 + D_80194FD4; + D_80114F34 = D_80114F34 + D_80194FD6; + D_80114F38 = D_80114F38 + D_80194FD8; + D_80114F24 = D_80114F24 + D_80194FD4; + D_80114F28 = D_80114F28 + D_80194FD6; + D_80114F2C = D_80114F2C + D_80194FD8; + func_8012A4BC(); + } + D_801950E8 = 0; + } +} + + + +extern void (*D_80181B28[])(void); + +void func_8017BE60(void *a0) { + D_80181B28[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017BEBC); + +extern void ReadRotMatrix(void *a0); +extern void PushMatrix(void); +extern void func_8004974C(void *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern void PopMatrix(void); +void func_8017C294(u16 *a0, void *a1) { + s32 mat[8]; + s32 buf[8]; + s16 sv[4]; + ReadRotMatrix((void *)mat); + PushMatrix(); + sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); + sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); + sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); + func_8004974C((void *)mat, (void *)buf); + ApplyMatrixSV((void *)buf, (void *)sv, a1); + PopMatrix(); +} + + +int func_8017C338(short *param_1, short *param_2, short *param_3, int param_4) { + register int i2o __asm__("$5"); + register int i4o __asm__("$9"); + short sVar1; int rx, rz, uVar5; + i4o = param_2[1]; + __asm__ __volatile__("" : : "r"(i4o)); + i2o = param_1[1]; uVar5 = 0; + if (i2o >= i4o) { + rx = param_1[0] - i2o * (param_2[0] - param_1[0]); + rz = param_1[2] - i2o * (param_2[2] - param_1[2]); + } else { + register int den __asm__("$3"); + int p2x = param_2[0], p2z = param_2[2]; + den = i2o - i4o; + rx = p2x + i4o * (p2x - param_1[0]) / den; + rz = p2z + i4o * (p2z - param_1[2]) / den; + } + if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } + else i2o = -0x7fff; + *param_3 = (short)i2o; + if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } + else i2o = -0x7fff; + param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; + if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } + if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } + if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } + if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } + return uVar5; +} + + +extern void ReadGeomOffset(s32 *a0, s32 *a1); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +extern void func_8004921C(s32 a0, s32 a1); +void func_8017C530(s32 a0, s32 a1) { + s32 ofx; + s32 ofy; + s32 sxy; + s32 p; + ReadGeomOffset(&ofx, &ofy); + func_8004921C(0, 0); + RotTransPers(a0, a1, &sxy, &p); + func_8004921C(ofx, ofy); +} + + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017C59C); + + +extern void (*D_80181B84[])(void); + +void func_8017D468(void *a0) { + D_80181B84[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017D4A4); + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017D4E8(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_80181B8C[])(void); + +void func_8017D50C(void *a0) { + D_80181B8C[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017D548); + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017D5D0); + +extern s32 func_800D1EBC(void); + void func_8017D644(void) { + func_800D1EBC(); + } + + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017D664); + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017D68C); + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017D6B4); + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017D780); + + +extern void (*D_80181BB8[])(void); + +void func_8017D84C(void *a0) { + D_80181BB8[*(u8 *)((s32)a0 + 0x4)](); +} + + +void func_8017D888(void) { +} + + +extern void (*D_80181BBC[])(void); + +void func_8017D890(void *a0) { + D_80181BBC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017D8CC); + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017DA80); + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017DB28); + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017DBE4); + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017DCB4); + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017DE18); + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017DE90); + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017DEB0); + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017DEF0); + +void func_8017DFBC(void *a0) { + *(short *)(*(int *)((char *)a0 + 0x64) + 0xe0) = 2; + } + + + +extern void (*D_80181BE0[])(void); + +void func_8017DFCC(void *a0) { + D_80181BE0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017E008); + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8017AE2C", func_8017E090); + +extern s32 func_8013CB84(void); + void func_8017E0D4(void) { + func_8013CB84(); + } + + +extern s32 func_8017E0F4(void); + s32 func_8017E0F4(void) { + return 0x23; + } + + + + diff --git a/src/ov_SC03_013/ov_SC03_013_jr_8017A4AC.c b/src/ov_SC03_013/ov_SC03_013_jr_8017A4AC.c index d1fa47cea..fdd7139e9 100644 --- a/src/ov_SC03_013/ov_SC03_013_jr_8017A4AC.c +++ b/src/ov_SC03_013/ov_SC03_013_jr_8017A4AC.c @@ -2967,1006 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801AD294; - extern s16 D_801AD296; - extern s16 D_801AD298; - extern s16 D_801AD28C; - extern s16 D_801AD28E; - extern s16 D_801AD290; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801AD294, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801AD296, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801AD298, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801AD28C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801AD28E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801AD290, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801AD21C; -extern u16 D_801AD29C; -extern u16 D_801AD29E; -extern u16 D_801AD2A0; -extern s16 D_801AD4E0; - -void func_8017B1D8(void) { - func_8012A418(); - D_801AD4E0 = 0; - D_801AD21C = 0; - D_801AD29C = D_80126B5E; - D_801AD29E = D_80126B62; - D_801AD2A0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80184870[]; - extern s16 D_801AD294; - extern s16 D_801AD28C; - 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_80184870[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80184870[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801AD294; - s16 *p78C = &D_801AD28C; - *(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_801AD4E0 = 1; - D_801AD21C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801AD23C; - extern SV4_8017B368 D_801AD244; - extern s16 D_801AD294; - extern s16 D_801AD28C; - extern u16 D_80184870; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801AD23C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801AD244; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80184870)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80184870)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801AD294) = loc0; - (*(SV4_8017B368 *)&D_801AD28C) = loc1; - D_801AD4E0 = 1; - D_801AD21C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80184870[]; - extern s16 D_801AD294; - extern s16 D_801AD296; - extern s16 D_801AD298; - extern s16 D_801AD28C; - extern s16 D_801AD28E; - extern s16 D_801AD290; - 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_80184870[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80184870[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801AD294; - s16 *p78C = &D_801AD28C; - *(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_801AD296; - v798 = D_801AD298; - v78C = *p78C; - v78E = D_801AD28E; - v790 = D_801AD290; - __asm__ __volatile__(""); - D_801AD4E0 = 1; - D_801AD21C = 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_801AD21C; -extern s16 D_801AD294; -extern s16 D_801AD296; -extern s16 D_801AD298; -extern s16 D_801AD28C; -extern s16 D_801AD28E; -extern s16 D_801AD290; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801AD21C = 0; - D_801AD294 = (s16) D_80114F30; - D_801AD296 = (s16) D_80114F34; - D_801AD298 = (s16) D_80114F38; - D_801AD28C = (s16) D_80114F24; - D_801AD28E = (s16) D_80114F28; - D_801AD290 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801AD2AC; -extern s16 D_801AD2AE; -extern s16 D_801AD2B0; -extern s16 D_801AD2B4; -extern s16 D_801AD2B6; -extern s16 D_801AD2B8; - -void func_8017B824(void) { - D_801AD2AC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801AD2AE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801AD2B0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801AD2B4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801AD2B6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801AD2B8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801AD2AC; -extern s16 D_801AD2AE; -extern s16 D_801AD2B0; -extern s16 D_801AD2B4; -extern s16 D_801AD2B6; -extern s16 D_801AD2B8; - -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_801AD2AC; - D_80114F34 = D_801AD2AE; - D_80114F38 = D_801AD2B0; - D_80114F24 = D_801AD2B4; - D_80114F28 = D_801AD2B6; - D_80114F2C = D_801AD2B8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801AD294), src[8..15] -> (*(S8_8017B8E8 *)&D_801AD28C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801AD294) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801AD28C) = ((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_801AD29C; -extern u16 D_801AD29E; -extern u16 D_801AD2A0; - -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_801AD21C; -extern short D_801AD2A4; -extern short D_801AD2A6; -extern short D_801AD2A8; -extern s16 D_801AD294; -extern s16 D_801AD296; -extern s16 D_801AD298; -extern s16 D_801AD28C; -extern s16 D_801AD28E; -extern s16 D_801AD290; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801AD29C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801AD29E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801AD2A0); - (*(s16 *)&D_801AD2A4) = buf[0]; - (*(s16 *)&D_801AD2A6) = buf[1]; - (*(s16 *)&D_801AD2A8) = buf[2]; - D_801AD294 = D_80114F30 + buf[0]; - D_801AD21C = 0; - D_801AD296 = D_80114F34 + buf[1]; - D_801AD298 = D_80114F38 + buf[2]; - D_801AD28C = D_80114F24 + buf[0]; - D_801AD28E = D_80114F28 + buf[1]; - D_801AD290 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801AD23C; -extern SV4 D_801AD244; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801AD244) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801AD23C = 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_801AD244 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801AD244)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801AD23C) = 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_801AD244) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801AD264[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801AD264; - 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_801AD21C; -extern s16 D_801AD4E0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801AD21C = D_801AD21C + 1; - if (D_801AD21C >= 0x1F) { - D_801AD4E0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801AD21C; -extern s16 D_801AD4E0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801AD21C = D_801AD21C + 1; - if (0x18 < D_801AD21C) { - func_8012A4BC(); - D_801AD4E0 = 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_801AD21C; -extern void (*D_801AD260)(void); -extern short D_801AD2A4; -extern short D_801AD2A6; -extern short D_801AD2A8; -extern s16 D_801AD4E0; - -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_801AD21C = D_801AD21C + 1; - if (D_801AD21C >= 0x19) { - if (D_801AD260 != 0) { - (*D_801AD260)(); - } else { - D_80114F30 = D_80114F30 + D_801AD2A4; - D_80114F34 = D_80114F34 + D_801AD2A6; - D_80114F38 = D_80114F38 + D_801AD2A8; - D_80114F24 = D_80114F24 + D_801AD2A4; - D_80114F28 = D_80114F28 + D_801AD2A6; - D_80114F2C = D_80114F2C + D_801AD2A8; - func_8012A4BC(); - } - D_801AD4E0 = 0; - } -} - - - -extern void (*D_80184910[])(void); - -void func_8017BE60(void *a0) { - D_80184910[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017BEE8); - - -extern void (*D_80184A40[])(void); - -void func_8017BFC8(void *a0) { - D_80184A40[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017C004); - -extern void func_8017C234(void); -void func_8017C214(void) { - func_8017C234(); -} - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017C234); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017C404); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017C454); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017C4C4); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017C528); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017C5D8); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017C628); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017C670); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017C6B8); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017C6F4); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017C730); - - -extern void (*D_80184AC0[])(void); - -void func_8017D7C4(void *a0) { - D_80184AC0[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017D800); - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017D844(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_80184AC8[])(void); - -void func_8017D868(void *a0) { - D_80184AC8[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017D8A4); - - -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_8017D8E4(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_8017D960(void) { - func_800D1EBC(); -} - - - -extern void (*D_80184AD4[])(void); - -void func_8017D980(void *a0) { - D_80184AD4[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017D9BC); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017DA10); - -extern void func_800D1EBC(void); -void func_8017DA64(void) { - func_800D1EBC(); -} - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017DA84); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017DAAC); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017DAD4); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017DB20); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017DB84); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017DC38); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017DCDC); - - -extern void (*D_80184C64[])(void); - -void func_8017DD5C(void *a0) { - D_80184C64[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017DD98); - -extern s32 func_801399F0(s32 a0); -extern void func_80139914(s32 a0); -extern void func_80171928(void *a0); -void func_8017DE70(u8 *a0) { - if (func_801399F0(*(s32 *)(a0 + 0x198)) != 0) { - func_80139914(*(s32 *)(a0 + 0x198)); - *(s32 *)(a0 + 0x198) = 0; - func_80171928(a0); - } -} - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017DEC0); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017DF5C); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017DFB8); - - -extern void (*D_80184C6C[])(void); - -void func_8017E014(void *a0) { - D_80184C6C[*(u8 *)((s32)a0 + 0x216)](); -} - - -extern s32 func_80171990(u8 *a0); - extern s32 func_8017E080(s32); - void func_8017E050(s32 *a0) { - ((void (*)(s32 *))func_80171990)(a0); - func_8017E080((s32)a0); - } - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017E080); - -extern void func_8017E1C0(s32 arg); - void func_8017E0C0(void) { - ((s32 (*)(s32))func_8017E1C0)(0); - } - - -extern void func_8017E1C0(s32 arg); - void func_8017E0E0(void) { - func_8017E1C0(1); - } - - -extern void func_8017E1C0(s32 arg); - void func_8017E100(void) { - ((s32 (*)(s32))func_8017E1C0)(0x2); - } - - -extern void func_8017E1C0(s32 arg); - void func_8017E120(void) { - func_8017E1C0(0x3); - } - - -extern void func_8017E1C0(s32 arg); - void func_8017E140(void) { - func_8017E1C0(4); - } - - -extern void func_8017E1C0(int); -void func_8017E160(void) { - func_8017E1C0(0x5); -} - - -extern void func_8017E1C0(s32 arg); - void func_8017E180(void) { - ((s32 (*)(s32))func_8017E1C0)(0x6); - } - - -extern void func_8017E1C0(s32 arg); - void func_8017E1A0(void) { - func_8017E1C0(0x7); - } - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017E1C0); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017E1EC); - - -extern void (*D_80184C9C[])(void); - -void func_8017E214(void *a0) { - D_80184C9C[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017E250); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017E290); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017E2C8); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017E2F0); - - -extern void (*D_80184CA4[])(void); - -void func_8017E388(void *a0) { - D_80184CA4[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017E3C4); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017E528); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017E6F4); - - -extern void (*D_80184D50[])(void); - -void func_8017E9CC(void *a0) { - D_80184D50[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017EA08); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017EAB0); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017EBA0); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017ECD0); - -extern void func_8012AD44(s32 *a0, s16 a1); - void func_8017ED40(s32 arg0) { - ((void (*)(s32, s32))func_8012AD44)(arg0, 0x3); - } - - - -extern void (*D_80184E98[])(void); - -void func_8017ED60(void *a0) { - D_80184E98[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017ED9C); - -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern s32 func_8017EEA4(s32 a0, s32 a1, s32 a2); -s32 func_8017EE28(s32 a0, s32 a1, s32 a2) { - - extern s16 D_80126B9A; - s32 sp10[2]; - s32 sp18[2]; - func_8012F214(a0, a1, (s32)sp10); - func_8012F214(a0, a2, (s32)sp18); - if (func_8017EEA4(a0, (s32)sp10, (s32)sp18) != 0) { - D_80126B9A = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12); - return 1; - } - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017EEA4); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017EF34); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017EF9C); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017F0A0); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017F140); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017F198); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017F288); - - -extern void (*D_80184EC0[])(void); - -void func_8017F2E0(void *a0) { - D_80184EC0[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_8017F31C(void *a0) { - *(short *)((char *)a0 + 0xfc) = 0; - } - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017F324); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017F4B4); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017F574); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017F5A4); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017F5FC); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017F664); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017F6C8); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017F748); - -extern s32 func_8012BF10(s32 arg0, s32 arg1); - extern void func_8012AD44(s32 *a0, s16 a1); - void func_8017F7AC(void *a0) { - if (func_8012BF10((s32)a0, 0x40)) { - ((void (*)(void *, s32))func_8012AD44)(a0, 1); - } - } - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017F7E8); - - -extern void (*D_80184F30[])(void); - -void func_8017F820(void *a0) { - D_80184F30[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017F85C); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017F958); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017FA4C); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017FAA8); - - -extern void (*D_801850F8[])(void); - -void func_8017FE4C(void *a0) { - D_801850F8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017FE88); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017FF28); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017FF6C); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017FF84); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8017FFE8); - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_80180148); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8018032C); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_801803E8); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_80180494); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_80180518); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_8018063C); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_801806F8); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_80180818); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_80180958); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_80180A94); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_80180B0C); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_80180B84); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_80180BFC); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_80180C74); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_80180CEC); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_80180D60); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_80180E00); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_80180E4C); - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017A4AC", func_80180EC0); - - - diff --git a/src/ov_SC03_013/ov_SC03_013_jr_8017AE2C.c b/src/ov_SC03_013/ov_SC03_013_jr_8017AE2C.c new file mode 100644 index 000000000..116e94d7b --- /dev/null +++ b/src/ov_SC03_013/ov_SC03_013_jr_8017AE2C.c @@ -0,0 +1,3904 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80183468; +extern u8 D_801833D8; +extern u8 D_801833B4; +extern u8 D_80183390; +extern u8 D_80183444; +extern u8 D_80183420; +extern u8 D_801833FC; +extern u8 D_8018336C; +extern void func_80145934(void); +extern u8 D_801834F8; +extern u8 D_801834D4; +extern u8 D_801834B0; +extern u8 D_8018348C; +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_801828F0[]; +extern unsigned char D_80182920[]; +extern unsigned char D_80182970[]; +extern unsigned char D_801829A0[]; +extern unsigned char D_801829D0[]; +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(void); +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_80182A20[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80182AE8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80182B70[]; +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_80182B78; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801AC118; +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_801AC11C; +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_80182BA8; +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 void 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_80182C50[])(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_80182C74[])(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_80182C64; +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_80182C88[])(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_80182C94[]; +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_80182CA4[])(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_80182CBC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80182CAC; +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_80182CD0[])(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_80182CEC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80182CDC; +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_80182D00[])(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_80182D14[])(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_80182D28; +extern void (*D_80182D50[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80182D30; +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_80182D9C[])(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_80182DA0[])(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(void *a0); +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_80183204[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80183214[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801AC150; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018323C[])(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_8018321C; +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_8018322C; +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_8018327C[])(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_80183284[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80183250; +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_80183290[])(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_80183260; +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_801AC158; +extern s32 D_801AC164; +extern s32 D_801AC168; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801832CC[])(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_801832A0[]; +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_801AC160; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018351C[])(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_8018333C[]; +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_801835C0[])(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_80183714[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80183530; +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_8018371C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80183540; +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_80183560; +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_80183724[])(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(void); +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_8018374C[])(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_80183758[])(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_801835CC[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801837FC; +extern void func_8015D380(s32 a0); +extern unsigned char D_801828E0[]; +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_80183810[]; +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_8018384C[]; +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_80183894; +extern u16 D_80183896; +extern u16 D_80183898; +extern s32 D_8018389C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_801838A4; +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_801835B0; +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_80183928[]; +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_801839D8[])(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_80183A08[]; +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_80183A6C; +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_801AC170[]; +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_80183A90[])(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_801AC1C8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80183AD8[])(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_80183AC8; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801AB9E8[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_80183AE0[])(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_80183B34[])(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_80183AFC; +extern s16 D_80183B30; +extern s16 D_80183B2E; +extern s16 D_80183B2C; +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_80183B40[])(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_801AC228; +extern u8 D_801AC229; +extern u8 D_801AC22A; +extern u8 D_801AC22B; +extern u8 D_801AC22C; +extern u8 D_801AC22D; +extern u8 D_801AC22E; +extern u8 D_801AC22F; +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_80183B50[])(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_801AC268; +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_80183B94[])(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_80183C10[]; +extern s32 D_80183C30[]; +extern u8 D_80183CAC[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80183CCC[]; +extern u8 D_80183CEC[]; +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_80183D88[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80183E04[])(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_801AB9F8; +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_80183E10[])(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_80183E18[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80183EE0[])(void); +extern void func_80166618(void *a0); +extern void (*D_80183EF0[])(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_80183F00[])(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_80183F0C[])(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_80183E6C[]; +extern u8 D_80183E80[]; +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_80183F24[])(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_80183F2C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80183F34[])(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_80183F3C[])(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_80183F44[])(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_80183F4C[])(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_80183F54[])(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_80184008[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80184010[])(void); +extern void func_80169F00(void *a0); +extern char D_80183FC0[]; +extern char D_80183F80[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80184048[])(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_80184054[])(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_8018409C[])(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_80184118[])(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_801AC588; +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_8018410C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80184150[]; +extern unsigned short D_80184158[]; +extern unsigned short D_80184160[]; +extern unsigned char D_801AC590[]; +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_801AC588; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80184168[])(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_801AC6C4; +extern M2C_UNK D_801AC6C8; +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_801AC650; +extern void (*D_80184198[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801AC6CC[]; +extern u8 D_801AC6D4[]; +extern u8 D_801AC684[]; +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_801841A0[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801841BC[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801841C4[])(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_8018422C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801841D0; +extern u8 D_801841DC; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80184260[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80184268[])(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_801842BC[])(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_801842F0[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801842E0[]; +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_8018430C; +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); +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_80184384[])(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_8018438C[])(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_80184394[])(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_8018439C[])(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_801843A4[])(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_801843AC[])(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_801843B8[])(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_801843C4[])(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_801843D0[])(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_801843E0[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801843F0[])(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_801843F8[])(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_80184400[])(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_80184408[])(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_80184410[])(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_80184418[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80184420[])(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_80184428[])(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_80184430[])(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_80184438[])(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_80184440[])(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_80184448[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80184450[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80184458[])(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_80184460[])(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_80184468[])(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_80184470[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80184478[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80184480[])(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_80184488[])(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_80184490[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80184498[])(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_801844A0[])(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_801844E4[])(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_801844A8; +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_80184514[])(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_80184550[])(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(s32); +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_801845A8[])(); +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_801845B8[])(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_801845C0[])(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_80184728[])(); +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_80184734[])(); +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_801ABC40; +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 int func_801789AC(void); +extern s16 D_801AD4E0; +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_801ACE08; +extern short D_801AD554; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801AD234; +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_801AD25C; +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_801AD218; +extern s32 func_8017A3B0(void); +extern short D_801AD254; +extern short D_801AD250; +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_801AD4B0; +extern s16 D_801AD4B2; +extern s16 D_801AD4BC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801AD4B0; + + 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_801AD4BC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801AD4B0+0xC == &D_801AD4BC; 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_801AD4B0 + 0xC)) < 0x101) { + D_801AD4B0 = 0; + D_801AD4B2 = 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_801AD4BC); + 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_801AD4B0 + 0xC)) < 0x101) { + D_801AD4B0 = 0; + D_801AD4B2 = 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_801AD294; + extern s16 D_801AD296; + extern s16 D_801AD298; + extern s16 D_801AD28C; + extern s16 D_801AD28E; + extern s16 D_801AD290; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801AD294, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801AD296, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801AD298, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801AD28C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801AD28E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801AD290, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801AD21C; +extern u16 D_801AD29C; +extern u16 D_801AD29E; +extern u16 D_801AD2A0; +extern s16 D_801AD4E0; + +void func_8017B1D8(void) { + func_8012A418(); + D_801AD4E0 = 0; + D_801AD21C = 0; + D_801AD29C = D_80126B5E; + D_801AD29E = D_80126B62; + D_801AD2A0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80184870[]; + extern s16 D_801AD294; + extern s16 D_801AD28C; + 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_80184870[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80184870[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801AD294; + s16 *p78C = &D_801AD28C; + *(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_801AD4E0 = 1; + D_801AD21C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801AD23C; + extern SV4_8017B368 D_801AD244; + extern s16 D_801AD294; + extern s16 D_801AD28C; + extern u16 D_80184870; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801AD23C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801AD244; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80184870)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80184870)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801AD294) = loc0; + (*(SV4_8017B368 *)&D_801AD28C) = loc1; + D_801AD4E0 = 1; + D_801AD21C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80184870[]; + extern s16 D_801AD294; + extern s16 D_801AD296; + extern s16 D_801AD298; + extern s16 D_801AD28C; + extern s16 D_801AD28E; + extern s16 D_801AD290; + 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_80184870[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80184870[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801AD294; + s16 *p78C = &D_801AD28C; + *(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_801AD296; + v798 = D_801AD298; + v78C = *p78C; + v78E = D_801AD28E; + v790 = D_801AD290; + __asm__ __volatile__(""); + D_801AD4E0 = 1; + D_801AD21C = 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_801AD21C; +extern s16 D_801AD294; +extern s16 D_801AD296; +extern s16 D_801AD298; +extern s16 D_801AD28C; +extern s16 D_801AD28E; +extern s16 D_801AD290; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801AD21C = 0; + D_801AD294 = (s16) D_80114F30; + D_801AD296 = (s16) D_80114F34; + D_801AD298 = (s16) D_80114F38; + D_801AD28C = (s16) D_80114F24; + D_801AD28E = (s16) D_80114F28; + D_801AD290 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801AD2AC; +extern s16 D_801AD2AE; +extern s16 D_801AD2B0; +extern s16 D_801AD2B4; +extern s16 D_801AD2B6; +extern s16 D_801AD2B8; + +void func_8017B824(void) { + D_801AD2AC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801AD2AE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801AD2B0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801AD2B4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801AD2B6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801AD2B8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801AD2AC; +extern s16 D_801AD2AE; +extern s16 D_801AD2B0; +extern s16 D_801AD2B4; +extern s16 D_801AD2B6; +extern s16 D_801AD2B8; + +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_801AD2AC; + D_80114F34 = D_801AD2AE; + D_80114F38 = D_801AD2B0; + D_80114F24 = D_801AD2B4; + D_80114F28 = D_801AD2B6; + D_80114F2C = D_801AD2B8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801AD294), src[8..15] -> (*(S8_8017B8E8 *)&D_801AD28C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801AD294) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801AD28C) = ((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_801AD29C; +extern u16 D_801AD29E; +extern u16 D_801AD2A0; + +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_801AD21C; +extern short D_801AD2A4; +extern short D_801AD2A6; +extern short D_801AD2A8; +extern s16 D_801AD294; +extern s16 D_801AD296; +extern s16 D_801AD298; +extern s16 D_801AD28C; +extern s16 D_801AD28E; +extern s16 D_801AD290; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801AD29C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801AD29E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801AD2A0); + (*(s16 *)&D_801AD2A4) = buf[0]; + (*(s16 *)&D_801AD2A6) = buf[1]; + (*(s16 *)&D_801AD2A8) = buf[2]; + D_801AD294 = D_80114F30 + buf[0]; + D_801AD21C = 0; + D_801AD296 = D_80114F34 + buf[1]; + D_801AD298 = D_80114F38 + buf[2]; + D_801AD28C = D_80114F24 + buf[0]; + D_801AD28E = D_80114F28 + buf[1]; + D_801AD290 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801AD23C; +extern SV4 D_801AD244; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801AD244) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801AD23C = 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_801AD244 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801AD244)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801AD23C) = 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_801AD244) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801AD264[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801AD264; + 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_801AD21C; +extern s16 D_801AD4E0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801AD21C = D_801AD21C + 1; + if (D_801AD21C >= 0x1F) { + D_801AD4E0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801AD21C; +extern s16 D_801AD4E0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801AD21C = D_801AD21C + 1; + if (0x18 < D_801AD21C) { + func_8012A4BC(); + D_801AD4E0 = 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_801AD21C; +extern void (*D_801AD260)(void); +extern short D_801AD2A4; +extern short D_801AD2A6; +extern short D_801AD2A8; +extern s16 D_801AD4E0; + +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_801AD21C = D_801AD21C + 1; + if (D_801AD21C >= 0x19) { + if (D_801AD260 != 0) { + (*D_801AD260)(); + } else { + D_80114F30 = D_80114F30 + D_801AD2A4; + D_80114F34 = D_80114F34 + D_801AD2A6; + D_80114F38 = D_80114F38 + D_801AD2A8; + D_80114F24 = D_80114F24 + D_801AD2A4; + D_80114F28 = D_80114F28 + D_801AD2A6; + D_80114F2C = D_80114F2C + D_801AD2A8; + func_8012A4BC(); + } + D_801AD4E0 = 0; + } +} + + + +extern void (*D_80184910[])(void); + +void func_8017BE60(void *a0) { + D_80184910[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017BEE8); + + +extern void (*D_80184A40[])(void); + +void func_8017BFC8(void *a0) { + D_80184A40[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017C004); + +extern void func_8017C234(void); +void func_8017C214(void) { + func_8017C234(); +} + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017C234); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017C404); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017C454); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017C4C4); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017C528); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017C5D8); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017C628); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017C670); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017C6B8); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017C6F4); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017C730); + + +extern void (*D_80184AC0[])(void); + +void func_8017D7C4(void *a0) { + D_80184AC0[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017D800); + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017D844(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_80184AC8[])(void); + +void func_8017D868(void *a0) { + D_80184AC8[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017D8A4); + + +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_8017D8E4(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_8017D960(void) { + func_800D1EBC(); +} + + + +extern void (*D_80184AD4[])(void); + +void func_8017D980(void *a0) { + D_80184AD4[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017D9BC); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017DA10); + +extern void func_800D1EBC(void); +void func_8017DA64(void) { + func_800D1EBC(); +} + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017DA84); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017DAAC); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017DAD4); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017DB20); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017DB84); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017DC38); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017DCDC); + + +extern void (*D_80184C64[])(void); + +void func_8017DD5C(void *a0) { + D_80184C64[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017DD98); + +extern s32 func_801399F0(s32 a0); +extern void func_80139914(s32 a0); +extern void func_80171928(void *a0); +void func_8017DE70(u8 *a0) { + if (func_801399F0(*(s32 *)(a0 + 0x198)) != 0) { + func_80139914(*(s32 *)(a0 + 0x198)); + *(s32 *)(a0 + 0x198) = 0; + func_80171928(a0); + } +} + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017DEC0); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017DF5C); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017DFB8); + + +extern void (*D_80184C6C[])(void); + +void func_8017E014(void *a0) { + D_80184C6C[*(u8 *)((s32)a0 + 0x216)](); +} + + +extern s32 func_80171990(u8 *a0); + extern s32 func_8017E080(s32); + void func_8017E050(s32 *a0) { + ((void (*)(s32 *))func_80171990)(a0); + func_8017E080((s32)a0); + } + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017E080); + +extern void func_8017E1C0(s32 arg); + void func_8017E0C0(void) { + ((s32 (*)(s32))func_8017E1C0)(0); + } + + +extern void func_8017E1C0(s32 arg); + void func_8017E0E0(void) { + func_8017E1C0(1); + } + + +extern void func_8017E1C0(s32 arg); + void func_8017E100(void) { + ((s32 (*)(s32))func_8017E1C0)(0x2); + } + + +extern void func_8017E1C0(s32 arg); + void func_8017E120(void) { + func_8017E1C0(0x3); + } + + +extern void func_8017E1C0(s32 arg); + void func_8017E140(void) { + func_8017E1C0(4); + } + + +extern void func_8017E1C0(int); +void func_8017E160(void) { + func_8017E1C0(0x5); +} + + +extern void func_8017E1C0(s32 arg); + void func_8017E180(void) { + ((s32 (*)(s32))func_8017E1C0)(0x6); + } + + +extern void func_8017E1C0(s32 arg); + void func_8017E1A0(void) { + func_8017E1C0(0x7); + } + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017E1C0); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017E1EC); + + +extern void (*D_80184C9C[])(void); + +void func_8017E214(void *a0) { + D_80184C9C[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017E250); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017E290); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017E2C8); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017E2F0); + + +extern void (*D_80184CA4[])(void); + +void func_8017E388(void *a0) { + D_80184CA4[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017E3C4); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017E528); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017E6F4); + + +extern void (*D_80184D50[])(void); + +void func_8017E9CC(void *a0) { + D_80184D50[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017EA08); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017EAB0); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017EBA0); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017ECD0); + +extern void func_8012AD44(s32 *a0, s16 a1); + void func_8017ED40(s32 arg0) { + ((void (*)(s32, s32))func_8012AD44)(arg0, 0x3); + } + + + +extern void (*D_80184E98[])(void); + +void func_8017ED60(void *a0) { + D_80184E98[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017ED9C); + +extern void func_8012F214(s32 a0, s32 a1, s32 a2); +extern s32 func_8017EEA4(s32 a0, s32 a1, s32 a2); +s32 func_8017EE28(s32 a0, s32 a1, s32 a2) { + + extern s16 D_80126B9A; + s32 sp10[2]; + s32 sp18[2]; + func_8012F214(a0, a1, (s32)sp10); + func_8012F214(a0, a2, (s32)sp18); + if (func_8017EEA4(a0, (s32)sp10, (s32)sp18) != 0) { + D_80126B9A = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12); + return 1; + } + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017EEA4); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017EF34); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017EF9C); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017F0A0); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017F140); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017F198); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017F288); + + +extern void (*D_80184EC0[])(void); + +void func_8017F2E0(void *a0) { + D_80184EC0[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_8017F31C(void *a0) { + *(short *)((char *)a0 + 0xfc) = 0; + } + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017F324); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017F4B4); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017F574); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017F5A4); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017F5FC); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017F664); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017F6C8); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017F748); + +extern s32 func_8012BF10(s32 arg0, s32 arg1); + extern void func_8012AD44(s32 *a0, s16 a1); + void func_8017F7AC(void *a0) { + if (func_8012BF10((s32)a0, 0x40)) { + ((void (*)(void *, s32))func_8012AD44)(a0, 1); + } + } + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017F7E8); + + +extern void (*D_80184F30[])(void); + +void func_8017F820(void *a0) { + D_80184F30[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017F85C); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017F958); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017FA4C); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017FAA8); + + +extern void (*D_801850F8[])(void); + +void func_8017FE4C(void *a0) { + D_801850F8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017FE88); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017FF28); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017FF6C); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017FF84); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8017FFE8); + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_80180148); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8018032C); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_801803E8); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_80180494); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_80180518); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_8018063C); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_801806F8); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_80180818); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_80180958); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_80180A94); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_80180B0C); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_80180B84); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_80180BFC); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_80180C74); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_80180CEC); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_80180D60); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_80180E00); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_80180E4C); + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017AE2C", func_80180EC0); + + + + diff --git a/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.c b/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.c index 4517f575d..2292eddc9 100644 --- a/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.c +++ b/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.c @@ -2960,757 +2960,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017AE2C); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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; -} - - - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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 s32 D_801151D4; -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) { - 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. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -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: 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, 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" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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) */ - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017BEBC); - - -extern void (*D_8018EF58[])(void); - -void func_8017BEE4(void *a0) { - D_8018EF58[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017BF20); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017BF58); - -DEFINE_func_8017BF98() /* dedup: shared engine-core @0x8017BF98 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017BFA0); - - -extern void (*D_8018EF64[])(void); - -void func_8017BFC8(void *a0) { - D_8018EF64[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017C004); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017C03C); - -DEFINE_func_8017C07C() /* dedup: shared engine-core @0x8017C07C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017C084); - - -extern void (*D_8018F024[])(void); - -void func_8017C0C8(void *a0) { - D_8018F024[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017C104); - -extern void func_8017C154(void); - void func_8017C12C(void) { - func_8017C154(); - } - - -DEFINE_func_8017C14C() /* dedup: shared engine-core @0x8017C14C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017C154); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017C290); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017C624); - - -extern void (*D_8018F064[])(void); - -void func_8017C664(void *a0) { - D_8018F064[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017C6A0); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017C814); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017C8FC); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017CC44); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017CCC4); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017CD10); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017CE10); - - -extern void (*D_8018F084[])(void); - -void func_8017CE54(void *a0) { - D_8018F084[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017CE90); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017CFBC); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017D098); - - -extern void (*D_8018F094[])(void); - -void func_8017D0DC(void *a0) { - D_8018F094[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017D118); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017D194); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017D1E0); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017D318); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017D5F8); - - -extern void (*D_8018F0A0[])(void); - -void func_8017D63C(void *a0) { - D_8018F0A0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017D678); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017D75C); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017D804); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017D890); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017D900); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017D9C8); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017DA98); - - -extern void (*D_8018F224[])(void); - -void func_8017DB00(void *a0) { - D_8018F224[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017DB3C); - -extern s32 func_80171CC4(void *a0, void *a1); -extern void func_80171A1C(u8 *a0); -extern s16 D_80126B36; -void func_8017DB74(u8 *a0) { - s16 *p = &D_80126B36; - if (*p != 0) { - if (func_80171CC4(a0, p - 3) == 0) { - return; - } - } - func_80171A1C(a0); -} - - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017DBC4); - -extern void func_80171A1C(u8 *a0); - void func_8017DC28(s32 *param_1) { - *(s32 *)((char *)param_1 + 0x200) = 1; - ((void (*)(void))func_80171A1C)(); - } - - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017DC4C); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017DCC0); - -DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017DD7C); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017DDBC); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017DE24); - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017DE8C); - -DEFINE_func_8017DF7C() /* dedup: shared engine-core @0x8017DF7C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017A4AC", func_8017DF84); diff --git a/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.c b/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.c new file mode 100644 index 000000000..ab4049c4c --- /dev/null +++ b/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.c @@ -0,0 +1,3649 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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(void); +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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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, s32, s32, s32); +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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 void 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(void *a0); +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 a0, s32 a1, s32 a2, s32 a3); +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 void 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(void); +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, s32 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(void *a0, void *a1); +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); +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(s32); +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 int func_801789AC(void); +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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; +} + + + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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 s32 D_801151D4; +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) { + 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. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +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: 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, 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" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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) */ + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017BEBC); + + +extern void (*D_8018EF58[])(void); + +void func_8017BEE4(void *a0) { + D_8018EF58[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017BF20); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017BF58); + +DEFINE_func_8017BF98() /* dedup: shared engine-core @0x8017BF98 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017BFA0); + + +extern void (*D_8018EF64[])(void); + +void func_8017BFC8(void *a0) { + D_8018EF64[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017C004); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017C03C); + +DEFINE_func_8017C07C() /* dedup: shared engine-core @0x8017C07C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017C084); + + +extern void (*D_8018F024[])(void); + +void func_8017C0C8(void *a0) { + D_8018F024[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017C104); + +extern void func_8017C154(void); + void func_8017C12C(void) { + func_8017C154(); + } + + +DEFINE_func_8017C14C() /* dedup: shared engine-core @0x8017C14C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017C154); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017C290); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017C624); + + +extern void (*D_8018F064[])(void); + +void func_8017C664(void *a0) { + D_8018F064[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017C6A0); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017C814); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017C8FC); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017CC44); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017CCC4); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017CD10); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017CE10); + + +extern void (*D_8018F084[])(void); + +void func_8017CE54(void *a0) { + D_8018F084[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017CE90); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017CFBC); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017D098); + + +extern void (*D_8018F094[])(void); + +void func_8017D0DC(void *a0) { + D_8018F094[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017D118); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017D194); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017D1E0); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017D318); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017D5F8); + + +extern void (*D_8018F0A0[])(void); + +void func_8017D63C(void *a0) { + D_8018F0A0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017D678); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017D75C); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017D804); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017D890); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017D900); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017D9C8); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017DA98); + + +extern void (*D_8018F224[])(void); + +void func_8017DB00(void *a0) { + D_8018F224[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017DB3C); + +extern s32 func_80171CC4(void *a0, void *a1); +extern void func_80171A1C(u8 *a0); +extern s16 D_80126B36; +void func_8017DB74(u8 *a0) { + s16 *p = &D_80126B36; + if (*p != 0) { + if (func_80171CC4(a0, p - 3) == 0) { + return; + } + } + func_80171A1C(a0); +} + + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017DBC4); + +extern void func_80171A1C(u8 *a0); + void func_8017DC28(s32 *param_1) { + *(s32 *)((char *)param_1 + 0x200) = 1; + ((void (*)(void))func_80171A1C)(); + } + + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017DC4C); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017DCC0); + +DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017DD7C); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017DDBC); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017DE24); + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017DE8C); + +DEFINE_func_8017DF7C() /* dedup: shared engine-core @0x8017DF7C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017AE2C", func_8017DF84); + diff --git a/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.c b/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.c index be66ad337..2292eddc9 100644 --- a/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.c +++ b/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.c @@ -2960,752 +2960,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017AE2C); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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; -} - - - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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 s32 D_801151D4; -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) { - 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. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -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: 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, 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" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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) */ - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017BEBC); - - -extern void (*D_8018EF58[])(void); - -void func_8017BEE4(void *a0) { - D_8018EF58[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017BF20); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017BF58); - -DEFINE_func_8017BF98() /* dedup: shared engine-core @0x8017BF98 (src/shared) */ - -extern void func_80174684(void *); - extern s32 func_8017BFC8; - s32 func_8017BFA0(void) -{ - func_80174684(&func_8017BFC8); - } - - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017BFC8); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017C004); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017C03C); - -DEFINE_func_8017C07C() /* dedup: shared engine-core @0x8017C07C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017C084); - - -extern void (*D_8018F024[])(void); - -void func_8017C0C8(void *a0) { - D_8018F024[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017C104); - -extern void func_8017C154(void); -void func_8017C12C(void) { - func_8017C154(); -} - - -DEFINE_func_8017C14C() /* dedup: shared engine-core @0x8017C14C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017C154); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017C290); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017C624); - - -extern void (*D_8018F064[])(void); - -void func_8017C664(void *a0) { - D_8018F064[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017C6A0); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017C814); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017C8FC); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017CC44); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017CCC4); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017CD10); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017CE10); - - -extern void (*D_8018F084[])(void); - -void func_8017CE54(void *a0) { - D_8018F084[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017CE90); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017CFBC); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017D098); - - -extern void (*D_8018F094[])(void); - -void func_8017D0DC(void *a0) { - D_8018F094[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017D118); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017D194); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017D1E0); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017D318); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017D5F8); - - -extern void (*D_8018F0A0[])(void); - -void func_8017D63C(void *a0) { - D_8018F0A0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017D678); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017D75C); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017D804); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017D890); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017D900); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017D9C8); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017DA98); - - -extern void (*D_8018F224[])(void); - -void func_8017DB00(void *a0) { - D_8018F224[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017DB3C); - -extern s32 func_80171CC4(void *a0, void *a1); -extern void func_80171A1C(u8 *a0); -extern s16 D_80126B36; -void func_8017DB74(u8 *a0) { - s16 *p = &D_80126B36; - if (*p != 0) { - if (func_80171CC4(a0, p - 3) == 0) { - return; - } - } - func_80171A1C(a0); -} - - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017DBC4); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017DC28); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017DC4C); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017DCC0); - -DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017DD7C); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017DDBC); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017DE24); - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017DE8C); - -DEFINE_func_8017DF7C() /* dedup: shared engine-core @0x8017DF7C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017A4AC", func_8017DF84); diff --git a/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.c b/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.c new file mode 100644 index 000000000..b6e93ed0e --- /dev/null +++ b/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.c @@ -0,0 +1,3644 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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(void); +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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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, s32, s32, s32); +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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 void 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(void *a0); +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 a0, s32 a1, s32 a2, s32 a3); +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 void 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(void); +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, s32 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(void *a0, void *a1); +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); +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(s32); +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 int func_801789AC(void); +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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; +} + + + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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 s32 D_801151D4; +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) { + 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. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +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: 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, 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" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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) */ + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017BEBC); + + +extern void (*D_8018EF58[])(void); + +void func_8017BEE4(void *a0) { + D_8018EF58[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017BF20); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017BF58); + +DEFINE_func_8017BF98() /* dedup: shared engine-core @0x8017BF98 (src/shared) */ + +extern void func_80174684(void *); + extern s32 func_8017BFC8; + s32 func_8017BFA0(void) +{ + func_80174684(&func_8017BFC8); + } + + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017BFC8); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017C004); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017C03C); + +DEFINE_func_8017C07C() /* dedup: shared engine-core @0x8017C07C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017C084); + + +extern void (*D_8018F024[])(void); + +void func_8017C0C8(void *a0) { + D_8018F024[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017C104); + +extern void func_8017C154(void); +void func_8017C12C(void) { + func_8017C154(); +} + + +DEFINE_func_8017C14C() /* dedup: shared engine-core @0x8017C14C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017C154); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017C290); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017C624); + + +extern void (*D_8018F064[])(void); + +void func_8017C664(void *a0) { + D_8018F064[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017C6A0); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017C814); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017C8FC); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017CC44); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017CCC4); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017CD10); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017CE10); + + +extern void (*D_8018F084[])(void); + +void func_8017CE54(void *a0) { + D_8018F084[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017CE90); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017CFBC); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017D098); + + +extern void (*D_8018F094[])(void); + +void func_8017D0DC(void *a0) { + D_8018F094[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017D118); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017D194); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017D1E0); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017D318); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017D5F8); + + +extern void (*D_8018F0A0[])(void); + +void func_8017D63C(void *a0) { + D_8018F0A0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017D678); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017D75C); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017D804); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017D890); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017D900); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017D9C8); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017DA98); + + +extern void (*D_8018F224[])(void); + +void func_8017DB00(void *a0) { + D_8018F224[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017DB3C); + +extern s32 func_80171CC4(void *a0, void *a1); +extern void func_80171A1C(u8 *a0); +extern s16 D_80126B36; +void func_8017DB74(u8 *a0) { + s16 *p = &D_80126B36; + if (*p != 0) { + if (func_80171CC4(a0, p - 3) == 0) { + return; + } + } + func_80171A1C(a0); +} + + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017DBC4); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017DC28); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017DC4C); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017DCC0); + +DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017DD7C); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017DDBC); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017DE24); + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017DE8C); + +DEFINE_func_8017DF7C() /* dedup: shared engine-core @0x8017DF7C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017DF84); + diff --git a/src/ov_SC03_023/ov_SC03_023_jr_8017A4AC.c b/src/ov_SC03_023/ov_SC03_023_jr_8017A4AC.c index a9626472c..e1d8efefa 100644 --- a/src/ov_SC03_023/ov_SC03_023_jr_8017A4AC.c +++ b/src/ov_SC03_023/ov_SC03_023_jr_8017A4AC.c @@ -2967,858 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_80198BEC; - extern s16 D_80198BEE; - extern s16 D_80198BF0; - extern s16 D_80198BE4; - extern s16 D_80198BE6; - extern s16 D_80198BE8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80198BEC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80198BEE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80198BF0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_80198BE4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_80198BE6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80198BE8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80198B74; -extern u16 D_80198BF4; -extern u16 D_80198BF6; -extern u16 D_80198BF8; -extern s16 D_80198D10; - -void func_8017B1D8(void) { - func_8012A418(); - D_80198D10 = 0; - D_80198B74 = 0; - D_80198BF4 = D_80126B5E; - D_80198BF6 = D_80126B62; - D_80198BF8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80182828[]; - extern s16 D_80198BEC; - extern s16 D_80198BE4; - 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_80182828[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182828[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80198BEC; - s16 *p78C = &D_80198BE4; - *(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_80198D10 = 1; - D_80198B74 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_80198B94; - extern SV4_8017B368 D_80198B9C; - extern s16 D_80198BEC; - extern s16 D_80198BE4; - extern u16 D_80182828; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_80198B94; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_80198B9C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80182828)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80182828)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_80198BEC) = loc0; - (*(SV4_8017B368 *)&D_80198BE4) = loc1; - D_80198D10 = 1; - D_80198B74 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80182828[]; - extern s16 D_80198BEC; - extern s16 D_80198BEE; - extern s16 D_80198BF0; - extern s16 D_80198BE4; - extern s16 D_80198BE6; - extern s16 D_80198BE8; - 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_80182828[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182828[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80198BEC; - s16 *p78C = &D_80198BE4; - *(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_80198BEE; - v798 = D_80198BF0; - v78C = *p78C; - v78E = D_80198BE6; - v790 = D_80198BE8; - __asm__ __volatile__(""); - D_80198D10 = 1; - D_80198B74 = 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_80198B74; -extern s16 D_80198BEC; -extern s16 D_80198BEE; -extern s16 D_80198BF0; -extern s16 D_80198BE4; -extern s16 D_80198BE6; -extern s16 D_80198BE8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_80198B74 = 0; - D_80198BEC = (s16) D_80114F30; - D_80198BEE = (s16) D_80114F34; - D_80198BF0 = (s16) D_80114F38; - D_80198BE4 = (s16) D_80114F24; - D_80198BE6 = (s16) D_80114F28; - D_80198BE8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_80198C04; -extern s16 D_80198C06; -extern s16 D_80198C08; -extern s16 D_80198C0C; -extern s16 D_80198C0E; -extern s16 D_80198C10; - -void func_8017B824(void) { - D_80198C04 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_80198C06 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_80198C08 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_80198C0C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_80198C0E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_80198C10 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_80198C04; -extern s16 D_80198C06; -extern s16 D_80198C08; -extern s16 D_80198C0C; -extern s16 D_80198C0E; -extern s16 D_80198C10; - -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_80198C04; - D_80114F34 = D_80198C06; - D_80114F38 = D_80198C08; - D_80114F24 = D_80198C0C; - D_80114F28 = D_80198C0E; - D_80114F2C = D_80198C10; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_80198BEC), src[8..15] -> (*(S8_8017B8E8 *)&D_80198BE4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_80198BEC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_80198BE4) = ((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_80198BF4; -extern u16 D_80198BF6; -extern u16 D_80198BF8; - -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_80198B74; -extern short D_80198BFC; -extern short D_80198BFE; -extern short D_80198C00; -extern s16 D_80198BEC; -extern s16 D_80198BEE; -extern s16 D_80198BF0; -extern s16 D_80198BE4; -extern s16 D_80198BE6; -extern s16 D_80198BE8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_80198BF4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_80198BF6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80198BF8); - (*(s16 *)&D_80198BFC) = buf[0]; - (*(s16 *)&D_80198BFE) = buf[1]; - (*(s16 *)&D_80198C00) = buf[2]; - D_80198BEC = D_80114F30 + buf[0]; - D_80198B74 = 0; - D_80198BEE = D_80114F34 + buf[1]; - D_80198BF0 = D_80114F38 + buf[2]; - D_80198BE4 = D_80114F24 + buf[0]; - D_80198BE6 = D_80114F28 + buf[1]; - D_80198BE8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_80198B94; -extern SV4 D_80198B9C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_80198B9C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_80198B94 = 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_80198B9C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80198B9C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_80198B94) = 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_80198B9C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_80198BBC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_80198BBC; - 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_80198B74; -extern s16 D_80198D10; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_80198B74 = D_80198B74 + 1; - if (D_80198B74 >= 0x1F) { - D_80198D10 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_80198B74; -extern s16 D_80198D10; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_80198B74 = D_80198B74 + 1; - if (0x18 < D_80198B74) { - func_8012A4BC(); - D_80198D10 = 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_80198B74; -extern void (*D_80198BB8)(void); -extern short D_80198BFC; -extern short D_80198BFE; -extern short D_80198C00; -extern s16 D_80198D10; - -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_80198B74 = D_80198B74 + 1; - if (D_80198B74 >= 0x19) { - if (D_80198BB8 != 0) { - (*D_80198BB8)(); - } else { - D_80114F30 = D_80114F30 + D_80198BFC; - D_80114F34 = D_80114F34 + D_80198BFE; - D_80114F38 = D_80114F38 + D_80198C00; - D_80114F24 = D_80114F24 + D_80198BFC; - D_80114F28 = D_80114F28 + D_80198BFE; - D_80114F2C = D_80114F2C + D_80198C00; - func_8012A4BC(); - } - D_80198D10 = 0; - } -} - - - -extern void (*D_801828C8[])(void); - -void func_8017BE60(void *a0) { - D_801828C8[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017BEBC); - -extern void ReadRotMatrix(void *a0); -extern void PushMatrix(void); -extern void func_8004974C(void *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void PopMatrix(void); -void func_8017C294(u16 *a0, void *a1) { - s32 mat[8]; - s32 buf[8]; - s16 sv[4]; - ReadRotMatrix((void *)mat); - PushMatrix(); - sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); - sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); - sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); - func_8004974C((void *)mat, (void *)buf); - ApplyMatrixSV((void *)buf, (void *)sv, a1); - PopMatrix(); -} - - -int func_8017C338(short *param_1, short *param_2, short *param_3, int param_4) { - register int i2o __asm__("$5"); - register int i4o __asm__("$9"); - short sVar1; int rx, rz, uVar5; - i4o = param_2[1]; - __asm__ __volatile__("" : : "r"(i4o)); - i2o = param_1[1]; uVar5 = 0; - if (i2o >= i4o) { - rx = param_1[0] - i2o * (param_2[0] - param_1[0]); - rz = param_1[2] - i2o * (param_2[2] - param_1[2]); - } else { - register int den __asm__("$3"); - int p2x = param_2[0], p2z = param_2[2]; - den = i2o - i4o; - rx = p2x + i4o * (p2x - param_1[0]) / den; - rz = p2z + i4o * (p2z - param_1[2]) / den; - } - if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } - else i2o = -0x7fff; - *param_3 = (short)i2o; - if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } - else i2o = -0x7fff; - param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; - if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } - if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } - if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } - if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } - return uVar5; -} - - -extern void ReadGeomOffset(s32 *a0, s32 *a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8004921C(s32 a0, s32 a1); -void func_8017C530(s32 a0, s32 a1) { - s32 ofx; - s32 ofy; - s32 sxy; - s32 p; - ReadGeomOffset(&ofx, &ofy); - func_8004921C(0, 0); - RotTransPers(a0, a1, &sxy, &p); - func_8004921C(ofx, ofy); -} - - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017C59C); - - -extern void (*D_801828FC[])(void); - -void func_8017D468(void *a0) { - D_801828FC[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017D4A4); - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017D4E8(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_80182904[])(void); - -void func_8017D50C(void *a0) { - D_80182904[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017D548); - - -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_8017D588(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_8017D604(void) { - func_800D1EBC(); - } - - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017D624); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017D670); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017D698); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017D6C0); - -extern void func_8016F250(void); -void func_8017D6E8(void) { - func_8016F250(); -} - - - -extern void (*D_801829DC[])(void); - -void func_8017D708(void *a0) { - D_801829DC[*(u8 *)((s32)a0 + 0x216)](); -} - - -extern s32 func_80171990(u8 *a0); -extern s32 func_8017D774(s32); - -void func_8017D744(s32 *a0) { - ((void (*)(s32 *))func_80171990)(a0); - func_8017D774((s32)a0); -} - - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017D774); - - -extern void (*D_801829E4[])(void); - -void func_8017D7BC(void *a0) { - D_801829E4[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017D7F8); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017D828); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017D884); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017D8AC); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017D8CC); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017D964); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017D9DC); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017DA54); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017DAD0); - - -extern void (*D_801829EC[])(void); - -void func_8017DB48(void *a0) { - D_801829EC[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017DB84); - -extern void func_8017DBC4(s32 arg0, s32 arg1); - void func_8017DBA4(s32 arg0) { - func_8017DBC4(arg0, 1); - } - - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017DBC4); - - -extern void (*D_80182A64[])(void); - -void func_8017DDBC(void *a0) { - D_80182A64[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017DDF8); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017DECC); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017DF1C); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017DFA0); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017E014); - - -extern void (*D_80182B04[])(void); - -void func_8017E1F4(void *a0) { - D_80182B04[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017E230); - - -extern void (*D_80182C3C[])(void); - -void func_8017E36C(void *a0) { - D_80182C3C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017E3A8); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017E414); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017E524); - -void func_8017E60C(void) { -} - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017E614); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017E70C); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017E79C); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017E834); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017E8E4); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017E948); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017E988); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017EA40); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017EB2C); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017EC30); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017EC84); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017ECC8); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017ED30); - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017A4AC", func_8017EDAC); - -s32 func_8017EE74(void) { - return 0xC; - } - - -extern void func_8013CB84(void); - void func_8017EE7C(void) { - func_8013CB84(); - } - - - diff --git a/src/ov_SC03_023/ov_SC03_023_jr_8017AE2C.c b/src/ov_SC03_023/ov_SC03_023_jr_8017AE2C.c new file mode 100644 index 000000000..4ed5949cf --- /dev/null +++ b/src/ov_SC03_023/ov_SC03_023_jr_8017AE2C.c @@ -0,0 +1,3756 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80181420; +extern u8 D_80181390; +extern u8 D_8018136C; +extern u8 D_80181348; +extern u8 D_801813FC; +extern u8 D_801813D8; +extern u8 D_801813B4; +extern u8 D_80181324; +extern void func_80145934(void); +extern u8 D_801814B0; +extern u8 D_8018148C; +extern u8 D_80181468; +extern u8 D_80181444; +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_801808A8[]; +extern unsigned char D_801808D8[]; +extern unsigned char D_80180928[]; +extern unsigned char D_80180958[]; +extern unsigned char D_80180988[]; +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(void); +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_801809D8[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80180AA0[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80180B28[]; +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_80180B30; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_80197A70; +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_80197A74; +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_80180B60; +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 void 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_80180C08[])(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_80180C2C[])(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_80180C1C; +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_80180C40[])(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_80180C4C[]; +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_80180C5C[])(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_80180C74[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180C64; +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_80180C88[])(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_80180CA4[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80180C94; +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_80180CB8[])(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_80180CCC[])(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_80180CE0; +extern void (*D_80180D08[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80180CE8; +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_80180D54[])(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_80180D58[])(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(void *a0); +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_801811BC[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_801811CC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_80197AA8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801811F4[])(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_801811D4; +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_801811E4; +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_80181234[])(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_8018123C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80181208; +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_80181248[])(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_80181218; +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_80197AB0; +extern s32 D_80197ABC; +extern s32 D_80197AC0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80181284[])(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_80181258[]; +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_80197AB8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801814D4[])(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_801812F4[]; +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_80181578[])(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_801816CC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801814E8; +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_801816D4[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801814F8; +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_80181518; +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_801816DC[])(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(void); +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_80181704[])(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_80181710[])(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_80181584[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801817B4; +extern void func_8015D380(s32 a0); +extern unsigned char D_80180898[]; +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_801817C8[]; +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_80181804[]; +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_8018184C; +extern u16 D_8018184E; +extern u16 D_80181850; +extern s32 D_80181854; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018185C; +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_80181568; +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_801818E0[]; +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_80181990[])(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_801819C0[]; +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_80181A24; +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_80197AC8[]; +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_80181A48[])(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_80197B20[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80181A90[])(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_80181A80; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_80197394[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_80181A98[])(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_80181AEC[])(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_80181AB4; +extern s16 D_80181AE8; +extern s16 D_80181AE6; +extern s16 D_80181AE4; +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_80181AF8[])(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_80197B80; +extern u8 D_80197B81; +extern u8 D_80197B82; +extern u8 D_80197B83; +extern u8 D_80197B84; +extern u8 D_80197B85; +extern u8 D_80197B86; +extern u8 D_80197B87; +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_80181B08[])(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_80197BC0; +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_80181B4C[])(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_80181BC8[]; +extern s32 D_80181BE8[]; +extern u8 D_80181C64[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80181C84[]; +extern u8 D_80181CA4[]; +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_80181D40[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80181DBC[])(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_801973A4; +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_80181DC8[])(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_80181DD0[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80181E98[])(void); +extern void func_80166618(void *a0); +extern void (*D_80181EA8[])(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_80181EB8[])(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_80181EC4[])(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_80181E24[]; +extern u8 D_80181E38[]; +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_80181EDC[])(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_80181EE4[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80181EEC[])(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_80181EF4[])(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_80181EFC[])(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_80181F04[])(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_80181F0C[])(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_80181FC0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80181FC8[])(void); +extern void func_80169F00(void *a0); +extern char D_80181F78[]; +extern char D_80181F38[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80182000[])(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_8018200C[])(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_80182054[])(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_801820D0[])(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_80197EE0; +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_801820C4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80182108[]; +extern unsigned short D_80182110[]; +extern unsigned short D_80182118[]; +extern unsigned char D_80197EE8[]; +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_80197EE0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80182120[])(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_8019801C; +extern M2C_UNK D_80198020; +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_80197FA8; +extern void (*D_80182150[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80198024[]; +extern u8 D_8019802C[]; +extern u8 D_80197FDC[]; +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_80182158[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80182174[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018217C[])(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_801821E4[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80182188; +extern u8 D_80182194; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80182218[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80182220[])(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_80182274[])(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_801822A8[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80182298[]; +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_801822C4; +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); +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_8018233C[])(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_80182344[])(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_8018234C[])(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_80182354[])(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_8018235C[])(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_80182364[])(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_80182370[])(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_8018237C[])(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_80182388[])(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_80182398[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801823A8[])(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_801823B0[])(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_801823B8[])(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_801823C0[])(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_801823C8[])(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_801823D0[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801823D8[])(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_801823E0[])(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_801823E8[])(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_801823F0[])(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_801823F8[])(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_80182400[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80182408[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80182410[])(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_80182418[])(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_80182420[])(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_80182428[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80182430[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80182438[])(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_80182440[])(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_80182448[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80182450[])(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_80182458[])(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_8018249C[])(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_80182460; +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_801824CC[])(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_80182508[])(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(s32); +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_80182560[])(); +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_80182570[])(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_80182578[])(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_801826E0[])(); +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_801826EC[])(); +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_801975EC; +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 int func_801789AC(void); +extern s16 D_80198D10; +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_80198760; +extern short D_80198D84; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_80198B8C; +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_80198BB4; +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_80198B70; +extern s32 func_8017A3B0(void); +extern short D_80198BAC; +extern short D_80198BA8; +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_80198CE0; +extern s16 D_80198CE2; +extern s16 D_80198CEC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_80198CE0; + + 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_80198CEC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_80198CE0+0xC == &D_80198CEC; 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_80198CE0 + 0xC)) < 0x101) { + D_80198CE0 = 0; + D_80198CE2 = 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_80198CEC); + 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_80198CE0 + 0xC)) < 0x101) { + D_80198CE0 = 0; + D_80198CE2 = 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_80198BEC; + extern s16 D_80198BEE; + extern s16 D_80198BF0; + extern s16 D_80198BE4; + extern s16 D_80198BE6; + extern s16 D_80198BE8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80198BEC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80198BEE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80198BF0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_80198BE4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_80198BE6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80198BE8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_80198B74; +extern u16 D_80198BF4; +extern u16 D_80198BF6; +extern u16 D_80198BF8; +extern s16 D_80198D10; + +void func_8017B1D8(void) { + func_8012A418(); + D_80198D10 = 0; + D_80198B74 = 0; + D_80198BF4 = D_80126B5E; + D_80198BF6 = D_80126B62; + D_80198BF8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80182828[]; + extern s16 D_80198BEC; + extern s16 D_80198BE4; + 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_80182828[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182828[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80198BEC; + s16 *p78C = &D_80198BE4; + *(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_80198D10 = 1; + D_80198B74 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_80198B94; + extern SV4_8017B368 D_80198B9C; + extern s16 D_80198BEC; + extern s16 D_80198BE4; + extern u16 D_80182828; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_80198B94; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_80198B9C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80182828)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80182828)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_80198BEC) = loc0; + (*(SV4_8017B368 *)&D_80198BE4) = loc1; + D_80198D10 = 1; + D_80198B74 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80182828[]; + extern s16 D_80198BEC; + extern s16 D_80198BEE; + extern s16 D_80198BF0; + extern s16 D_80198BE4; + extern s16 D_80198BE6; + extern s16 D_80198BE8; + 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_80182828[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182828[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80198BEC; + s16 *p78C = &D_80198BE4; + *(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_80198BEE; + v798 = D_80198BF0; + v78C = *p78C; + v78E = D_80198BE6; + v790 = D_80198BE8; + __asm__ __volatile__(""); + D_80198D10 = 1; + D_80198B74 = 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_80198B74; +extern s16 D_80198BEC; +extern s16 D_80198BEE; +extern s16 D_80198BF0; +extern s16 D_80198BE4; +extern s16 D_80198BE6; +extern s16 D_80198BE8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_80198B74 = 0; + D_80198BEC = (s16) D_80114F30; + D_80198BEE = (s16) D_80114F34; + D_80198BF0 = (s16) D_80114F38; + D_80198BE4 = (s16) D_80114F24; + D_80198BE6 = (s16) D_80114F28; + D_80198BE8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_80198C04; +extern s16 D_80198C06; +extern s16 D_80198C08; +extern s16 D_80198C0C; +extern s16 D_80198C0E; +extern s16 D_80198C10; + +void func_8017B824(void) { + D_80198C04 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_80198C06 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_80198C08 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_80198C0C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_80198C0E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_80198C10 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_80198C04; +extern s16 D_80198C06; +extern s16 D_80198C08; +extern s16 D_80198C0C; +extern s16 D_80198C0E; +extern s16 D_80198C10; + +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_80198C04; + D_80114F34 = D_80198C06; + D_80114F38 = D_80198C08; + D_80114F24 = D_80198C0C; + D_80114F28 = D_80198C0E; + D_80114F2C = D_80198C10; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_80198BEC), src[8..15] -> (*(S8_8017B8E8 *)&D_80198BE4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_80198BEC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_80198BE4) = ((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_80198BF4; +extern u16 D_80198BF6; +extern u16 D_80198BF8; + +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_80198B74; +extern short D_80198BFC; +extern short D_80198BFE; +extern short D_80198C00; +extern s16 D_80198BEC; +extern s16 D_80198BEE; +extern s16 D_80198BF0; +extern s16 D_80198BE4; +extern s16 D_80198BE6; +extern s16 D_80198BE8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_80198BF4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_80198BF6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80198BF8); + (*(s16 *)&D_80198BFC) = buf[0]; + (*(s16 *)&D_80198BFE) = buf[1]; + (*(s16 *)&D_80198C00) = buf[2]; + D_80198BEC = D_80114F30 + buf[0]; + D_80198B74 = 0; + D_80198BEE = D_80114F34 + buf[1]; + D_80198BF0 = D_80114F38 + buf[2]; + D_80198BE4 = D_80114F24 + buf[0]; + D_80198BE6 = D_80114F28 + buf[1]; + D_80198BE8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_80198B94; +extern SV4 D_80198B9C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_80198B9C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_80198B94 = 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_80198B9C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80198B9C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_80198B94) = 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_80198B9C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_80198BBC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_80198BBC; + 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_80198B74; +extern s16 D_80198D10; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_80198B74 = D_80198B74 + 1; + if (D_80198B74 >= 0x1F) { + D_80198D10 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_80198B74; +extern s16 D_80198D10; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_80198B74 = D_80198B74 + 1; + if (0x18 < D_80198B74) { + func_8012A4BC(); + D_80198D10 = 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_80198B74; +extern void (*D_80198BB8)(void); +extern short D_80198BFC; +extern short D_80198BFE; +extern short D_80198C00; +extern s16 D_80198D10; + +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_80198B74 = D_80198B74 + 1; + if (D_80198B74 >= 0x19) { + if (D_80198BB8 != 0) { + (*D_80198BB8)(); + } else { + D_80114F30 = D_80114F30 + D_80198BFC; + D_80114F34 = D_80114F34 + D_80198BFE; + D_80114F38 = D_80114F38 + D_80198C00; + D_80114F24 = D_80114F24 + D_80198BFC; + D_80114F28 = D_80114F28 + D_80198BFE; + D_80114F2C = D_80114F2C + D_80198C00; + func_8012A4BC(); + } + D_80198D10 = 0; + } +} + + + +extern void (*D_801828C8[])(void); + +void func_8017BE60(void *a0) { + D_801828C8[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017BEBC); + +extern void ReadRotMatrix(void *a0); +extern void PushMatrix(void); +extern void func_8004974C(void *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern void PopMatrix(void); +void func_8017C294(u16 *a0, void *a1) { + s32 mat[8]; + s32 buf[8]; + s16 sv[4]; + ReadRotMatrix((void *)mat); + PushMatrix(); + sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); + sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); + sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); + func_8004974C((void *)mat, (void *)buf); + ApplyMatrixSV((void *)buf, (void *)sv, a1); + PopMatrix(); +} + + +int func_8017C338(short *param_1, short *param_2, short *param_3, int param_4) { + register int i2o __asm__("$5"); + register int i4o __asm__("$9"); + short sVar1; int rx, rz, uVar5; + i4o = param_2[1]; + __asm__ __volatile__("" : : "r"(i4o)); + i2o = param_1[1]; uVar5 = 0; + if (i2o >= i4o) { + rx = param_1[0] - i2o * (param_2[0] - param_1[0]); + rz = param_1[2] - i2o * (param_2[2] - param_1[2]); + } else { + register int den __asm__("$3"); + int p2x = param_2[0], p2z = param_2[2]; + den = i2o - i4o; + rx = p2x + i4o * (p2x - param_1[0]) / den; + rz = p2z + i4o * (p2z - param_1[2]) / den; + } + if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } + else i2o = -0x7fff; + *param_3 = (short)i2o; + if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } + else i2o = -0x7fff; + param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; + if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } + if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } + if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } + if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } + return uVar5; +} + + +extern void ReadGeomOffset(s32 *a0, s32 *a1); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +extern void func_8004921C(s32 a0, s32 a1); +void func_8017C530(s32 a0, s32 a1) { + s32 ofx; + s32 ofy; + s32 sxy; + s32 p; + ReadGeomOffset(&ofx, &ofy); + func_8004921C(0, 0); + RotTransPers(a0, a1, &sxy, &p); + func_8004921C(ofx, ofy); +} + + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017C59C); + + +extern void (*D_801828FC[])(void); + +void func_8017D468(void *a0) { + D_801828FC[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017D4A4); + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017D4E8(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_80182904[])(void); + +void func_8017D50C(void *a0) { + D_80182904[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017D548); + + +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_8017D588(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_8017D604(void) { + func_800D1EBC(); + } + + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017D624); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017D670); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017D698); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017D6C0); + +extern void func_8016F250(void); +void func_8017D6E8(void) { + func_8016F250(); +} + + + +extern void (*D_801829DC[])(void); + +void func_8017D708(void *a0) { + D_801829DC[*(u8 *)((s32)a0 + 0x216)](); +} + + +extern s32 func_80171990(u8 *a0); +extern s32 func_8017D774(s32); + +void func_8017D744(s32 *a0) { + ((void (*)(s32 *))func_80171990)(a0); + func_8017D774((s32)a0); +} + + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017D774); + + +extern void (*D_801829E4[])(void); + +void func_8017D7BC(void *a0) { + D_801829E4[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017D7F8); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017D828); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017D884); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017D8AC); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017D8CC); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017D964); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017D9DC); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017DA54); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017DAD0); + + +extern void (*D_801829EC[])(void); + +void func_8017DB48(void *a0) { + D_801829EC[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017DB84); + +extern void func_8017DBC4(s32 arg0, s32 arg1); + void func_8017DBA4(s32 arg0) { + func_8017DBC4(arg0, 1); + } + + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017DBC4); + + +extern void (*D_80182A64[])(void); + +void func_8017DDBC(void *a0) { + D_80182A64[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017DDF8); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017DECC); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017DF1C); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017DFA0); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017E014); + + +extern void (*D_80182B04[])(void); + +void func_8017E1F4(void *a0) { + D_80182B04[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017E230); + + +extern void (*D_80182C3C[])(void); + +void func_8017E36C(void *a0) { + D_80182C3C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017E3A8); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017E414); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017E524); + +void func_8017E60C(void) { +} + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017E614); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017E70C); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017E79C); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017E834); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017E8E4); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017E948); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017E988); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017EA40); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017EB2C); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017EC30); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017EC84); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017ECC8); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017ED30); + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017EDAC); + +s32 func_8017EE74(void) { + return 0xC; + } + + +extern void func_8013CB84(void); + void func_8017EE7C(void) { + func_8013CB84(); + } + + + + diff --git a/src/ov_SC03_024/ov_SC03_024_jr_8017A4AC.c b/src/ov_SC03_024/ov_SC03_024_jr_8017A4AC.c index a6cf768dd..f31496c43 100644 --- a/src/ov_SC03_024/ov_SC03_024_jr_8017A4AC.c +++ b/src/ov_SC03_024/ov_SC03_024_jr_8017A4AC.c @@ -2967,750 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801C1184; - extern s16 D_801C1186; - extern s16 D_801C1188; - extern s16 D_801C117C; - extern s16 D_801C117E; - extern s16 D_801C1180; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C1184, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C1186, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C1188, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C117C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C117E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C1180, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801C110C; -extern u16 D_801C118C; -extern u16 D_801C118E; -extern u16 D_801C1190; -extern s16 D_801C17D8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801C17D8 = 0; - D_801C110C = 0; - D_801C118C = D_80126B5E; - D_801C118E = D_80126B62; - D_801C1190 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018A84C[]; - extern s16 D_801C1184; - extern s16 D_801C117C; - 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_8018A84C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018A84C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C1184; - s16 *p78C = &D_801C117C; - *(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_801C17D8 = 1; - D_801C110C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C112C; - extern SV4_8017B368 D_801C1134; - extern s16 D_801C1184; - extern s16 D_801C117C; - extern u16 D_8018A84C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801C112C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801C1134; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018A84C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018A84C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801C1184) = loc0; - (*(SV4_8017B368 *)&D_801C117C) = loc1; - D_801C17D8 = 1; - D_801C110C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018A84C[]; - extern s16 D_801C1184; - extern s16 D_801C1186; - extern s16 D_801C1188; - extern s16 D_801C117C; - extern s16 D_801C117E; - extern s16 D_801C1180; - 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_8018A84C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018A84C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C1184; - s16 *p78C = &D_801C117C; - *(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_801C1186; - v798 = D_801C1188; - v78C = *p78C; - v78E = D_801C117E; - v790 = D_801C1180; - __asm__ __volatile__(""); - D_801C17D8 = 1; - D_801C110C = 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_801C110C; -extern s16 D_801C1184; -extern s16 D_801C1186; -extern s16 D_801C1188; -extern s16 D_801C117C; -extern s16 D_801C117E; -extern s16 D_801C1180; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801C110C = 0; - D_801C1184 = (s16) D_80114F30; - D_801C1186 = (s16) D_80114F34; - D_801C1188 = (s16) D_80114F38; - D_801C117C = (s16) D_80114F24; - D_801C117E = (s16) D_80114F28; - D_801C1180 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801C119C; -extern s16 D_801C119E; -extern s16 D_801C11A0; -extern s16 D_801C11A4; -extern s16 D_801C11A6; -extern s16 D_801C11A8; - -void func_8017B824(void) { - D_801C119C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801C119E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801C11A0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801C11A4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801C11A6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801C11A8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801C119C; -extern s16 D_801C119E; -extern s16 D_801C11A0; -extern s16 D_801C11A4; -extern s16 D_801C11A6; -extern s16 D_801C11A8; - -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_801C119C; - D_80114F34 = D_801C119E; - D_80114F38 = D_801C11A0; - D_80114F24 = D_801C11A4; - D_80114F28 = D_801C11A6; - D_80114F2C = D_801C11A8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801C1184), src[8..15] -> (*(S8_8017B8E8 *)&D_801C117C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801C1184) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801C117C) = ((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_801C118C; -extern u16 D_801C118E; -extern u16 D_801C1190; - -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_801C110C; -extern short D_801C1194; -extern short D_801C1196; -extern short D_801C1198; -extern s16 D_801C1184; -extern s16 D_801C1186; -extern s16 D_801C1188; -extern s16 D_801C117C; -extern s16 D_801C117E; -extern s16 D_801C1180; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C118C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C118E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C1190); - (*(s16 *)&D_801C1194) = buf[0]; - (*(s16 *)&D_801C1196) = buf[1]; - (*(s16 *)&D_801C1198) = buf[2]; - D_801C1184 = D_80114F30 + buf[0]; - D_801C110C = 0; - D_801C1186 = D_80114F34 + buf[1]; - D_801C1188 = D_80114F38 + buf[2]; - D_801C117C = D_80114F24 + buf[0]; - D_801C117E = D_80114F28 + buf[1]; - D_801C1180 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801C112C; -extern SV4 D_801C1134; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C1134) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801C112C = 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_801C1134 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C1134)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801C112C) = 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_801C1134) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801C1154[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801C1154; - 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_801C110C; -extern s16 D_801C17D8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801C110C = D_801C110C + 1; - if (D_801C110C >= 0x1F) { - D_801C17D8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801C110C; -extern s16 D_801C17D8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801C110C = D_801C110C + 1; - if (0x18 < D_801C110C) { - func_8012A4BC(); - D_801C17D8 = 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_801C110C; -extern void (*D_801C1150)(void); -extern short D_801C1194; -extern short D_801C1196; -extern short D_801C1198; -extern s16 D_801C17D8; - -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_801C110C = D_801C110C + 1; - if (D_801C110C >= 0x19) { - if (D_801C1150 != 0) { - (*D_801C1150)(); - } else { - D_80114F30 = D_80114F30 + D_801C1194; - D_80114F34 = D_80114F34 + D_801C1196; - D_80114F38 = D_80114F38 + D_801C1198; - D_80114F24 = D_80114F24 + D_801C1194; - D_80114F28 = D_80114F28 + D_801C1196; - D_80114F2C = D_80114F2C + D_801C1198; - func_8012A4BC(); - } - D_801C17D8 = 0; - } -} - - - -extern void (*D_8018A8EC[])(void); - -void func_8017BE60(void *a0) { - D_8018A8EC[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017BEBC); - - -extern void (*D_8018A8F8[])(void); - -void func_8017BEE4(void *a0) { - D_8018A8F8[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017BF20); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017BF58); - -DEFINE_func_8017BF98() /* dedup: shared engine-core @0x8017BF98 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017BFA0); - - -extern void (*D_8018A904[])(void); - -void func_8017BFC8(void *a0) { - D_8018A904[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017C004); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017C03C); - -DEFINE_func_8017C07C() /* dedup: shared engine-core @0x8017C07C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017C084); - - -extern void (*D_8018A9C4[])(void); - -void func_8017C0C8(void *a0) { - D_8018A9C4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017C104); - -extern void func_8017C154(void); -void func_8017C12C(void) { - func_8017C154(); -} - - -DEFINE_func_8017C14C() /* dedup: shared engine-core @0x8017C14C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017C154); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017C290); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017C624); - - -extern void (*D_8018AA04[])(void); - -void func_8017C664(void *a0) { - D_8018AA04[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017C6A0); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017C814); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017C8FC); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017CC44); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017CCC4); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017CD10); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017CE10); - - -extern void (*D_8018AA24[])(void); - -void func_8017CE54(void *a0) { - D_8018AA24[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017CE90); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017CFBC); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017D098); - - -extern void (*D_8018AA34[])(void); - -void func_8017D0DC(void *a0) { - D_8018AA34[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017D118); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017D194); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017D1E0); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017D318); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017D5F8); - - -extern void (*D_8018AA40[])(void); - -void func_8017D63C(void *a0) { - D_8018AA40[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017D678); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017D75C); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017D804); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017D890); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017D900); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017D9C8); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017DA98); - - -extern void (*D_8018ABC4[])(void); - -void func_8017DB00(void *a0) { - D_8018ABC4[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017DB3C); - -extern s32 func_80171CC4(void *a0, void *a1); -extern void func_80171A1C(u8 *a0); -extern s16 D_80126B36; -void func_8017DB74(u8 *a0) { - s16 *p = &D_80126B36; - if (*p != 0) { - if (func_80171CC4(a0, p - 3) == 0) { - return; - } - } - func_80171A1C(a0); -} - - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017DBC4); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017DC28); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017DC4C); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017DCC0); - -DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017DD7C); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017DDBC); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017DE24); - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017A4AC", func_8017DE8C); - -DEFINE_func_8017DF7C() /* dedup: shared engine-core @0x8017DF7C (src/shared) */ diff --git a/src/ov_SC03_024/ov_SC03_024_jr_8017AE2C.c b/src/ov_SC03_024/ov_SC03_024_jr_8017AE2C.c new file mode 100644 index 000000000..51793ea39 --- /dev/null +++ b/src/ov_SC03_024/ov_SC03_024_jr_8017AE2C.c @@ -0,0 +1,3648 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80189444; +extern u8 D_801893B4; +extern u8 D_80189390; +extern u8 D_8018936C; +extern u8 D_80189420; +extern u8 D_801893FC; +extern u8 D_801893D8; +extern u8 D_80189348; +extern void func_80145934(void); +extern u8 D_801894D4; +extern u8 D_801894B0; +extern u8 D_8018948C; +extern u8 D_80189468; +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_801888CC[]; +extern unsigned char D_801888FC[]; +extern unsigned char D_8018894C[]; +extern unsigned char D_8018897C[]; +extern unsigned char D_801889AC[]; +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(void); +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_801889FC[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80188AC4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80188B4C[]; +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_80188B54; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801C0008; +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_801C000C; +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_80188B84; +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 void 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_80188C2C[])(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_80188C50[])(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_80188C40; +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_80188C64[])(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_80188C70[]; +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_80188C80[])(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_80188C98[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80188C88; +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_80188CAC[])(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_80188CC8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80188CB8; +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_80188CDC[])(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_80188CF0[])(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_80188D04; +extern void (*D_80188D2C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80188D0C; +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_80188D78[])(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_80188D7C[])(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(void *a0); +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_801891E0[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_801891F0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801C0040; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80189218[])(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_801891F8; +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_80189208; +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_80189258[])(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_80189260[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018922C; +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_8018926C[])(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_8018923C; +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_801C0048; +extern s32 D_801C0054; +extern s32 D_801C0058; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801892A8[])(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_8018927C[]; +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_801C0050; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801894F8[])(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_80189318[]; +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_8018959C[])(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_801896F0[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018950C; +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_801896F8[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018951C; +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_8018953C; +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_80189700[])(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(void); +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_80189728[])(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_80189734[])(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_801895A8[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801897D8; +extern void func_8015D380(s32 a0); +extern unsigned char D_801888BC[]; +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_801897EC[]; +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_80189828[]; +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_80189870; +extern u16 D_80189872; +extern u16 D_80189874; +extern s32 D_80189878; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80189880; +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_8018958C; +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_80189904[]; +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_801899B4[])(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_801899E4[]; +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_80189A48; +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_801C0060[]; +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_80189A6C[])(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_801C00B8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80189AB4[])(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_80189AA4; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801BF81C[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_80189ABC[])(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_80189B10[])(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_80189AD8; +extern s16 D_80189B0C; +extern s16 D_80189B0A; +extern s16 D_80189B08; +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_80189B1C[])(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_801C0118; +extern u8 D_801C0119; +extern u8 D_801C011A; +extern u8 D_801C011B; +extern u8 D_801C011C; +extern u8 D_801C011D; +extern u8 D_801C011E; +extern u8 D_801C011F; +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_80189B2C[])(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_801C0158; +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_80189B70[])(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_80189BEC[]; +extern s32 D_80189C0C[]; +extern u8 D_80189C88[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80189CA8[]; +extern u8 D_80189CC8[]; +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_80189D64[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80189DE0[])(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_801BF82C; +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_80189DEC[])(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_80189DF4[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80189EBC[])(void); +extern void func_80166618(void *a0); +extern void (*D_80189ECC[])(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_80189EDC[])(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_80189EE8[])(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_80189E48[]; +extern u8 D_80189E5C[]; +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_80189F00[])(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_80189F08[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80189F10[])(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_80189F18[])(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_80189F20[])(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_80189F28[])(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_80189F30[])(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_80189FE4[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80189FEC[])(void); +extern void func_80169F00(void *a0); +extern char D_80189F9C[]; +extern char D_80189F5C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018A024[])(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_8018A030[])(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_8018A078[])(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_8018A0F4[])(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_801C0478; +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_8018A0E8[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018A12C[]; +extern unsigned short D_8018A134[]; +extern unsigned short D_8018A13C[]; +extern unsigned char D_801C0480[]; +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_801C0478; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018A144[])(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_801C05B4; +extern M2C_UNK D_801C05B8; +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_801C0540; +extern void (*D_8018A174[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801C05BC[]; +extern u8 D_801C05C4[]; +extern u8 D_801C0574[]; +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_8018A17C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018A198[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018A1A0[])(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_8018A208[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018A1AC; +extern u8 D_8018A1B8; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018A23C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018A244[])(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_8018A298[])(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_8018A2CC[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018A2BC[]; +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_8018A2E8; +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); +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_8018A360[])(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_8018A368[])(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_8018A370[])(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_8018A378[])(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_8018A380[])(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_8018A388[])(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_8018A394[])(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_8018A3A0[])(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_8018A3AC[])(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_8018A3BC[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018A3CC[])(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_8018A3D4[])(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_8018A3DC[])(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_8018A3E4[])(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_8018A3EC[])(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_8018A3F4[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018A3FC[])(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_8018A404[])(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_8018A40C[])(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_8018A414[])(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_8018A41C[])(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_8018A424[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018A42C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018A434[])(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_8018A43C[])(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_8018A444[])(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_8018A44C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018A454[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018A45C[])(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_8018A464[])(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_8018A46C[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018A474[])(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_8018A47C[])(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_8018A4C0[])(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_8018A484; +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_8018A4F0[])(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_8018A52C[])(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(s32); +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_8018A584[])(); +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_8018A594[])(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_8018A59C[])(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_8018A704[])(); +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_8018A710[])(); +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_801BFA74; +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 int func_801789AC(void); +extern s16 D_801C17D8; +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_801C0CF8; +extern short D_801C184C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801C1124; +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_801C114C; +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_801C1108; +extern s32 func_8017A3B0(void); +extern short D_801C1144; +extern short D_801C1140; +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_801C17A8; +extern s16 D_801C17AA; +extern s16 D_801C17B4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801C17A8; + + 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_801C17B4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801C17A8+0xC == &D_801C17B4; 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_801C17A8 + 0xC)) < 0x101) { + D_801C17A8 = 0; + D_801C17AA = 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_801C17B4); + 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_801C17A8 + 0xC)) < 0x101) { + D_801C17A8 = 0; + D_801C17AA = 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_801C1184; + extern s16 D_801C1186; + extern s16 D_801C1188; + extern s16 D_801C117C; + extern s16 D_801C117E; + extern s16 D_801C1180; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C1184, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C1186, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C1188, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C117C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C117E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C1180, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801C110C; +extern u16 D_801C118C; +extern u16 D_801C118E; +extern u16 D_801C1190; +extern s16 D_801C17D8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801C17D8 = 0; + D_801C110C = 0; + D_801C118C = D_80126B5E; + D_801C118E = D_80126B62; + D_801C1190 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018A84C[]; + extern s16 D_801C1184; + extern s16 D_801C117C; + 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_8018A84C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018A84C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C1184; + s16 *p78C = &D_801C117C; + *(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_801C17D8 = 1; + D_801C110C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C112C; + extern SV4_8017B368 D_801C1134; + extern s16 D_801C1184; + extern s16 D_801C117C; + extern u16 D_8018A84C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801C112C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801C1134; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018A84C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018A84C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801C1184) = loc0; + (*(SV4_8017B368 *)&D_801C117C) = loc1; + D_801C17D8 = 1; + D_801C110C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018A84C[]; + extern s16 D_801C1184; + extern s16 D_801C1186; + extern s16 D_801C1188; + extern s16 D_801C117C; + extern s16 D_801C117E; + extern s16 D_801C1180; + 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_8018A84C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018A84C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C1184; + s16 *p78C = &D_801C117C; + *(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_801C1186; + v798 = D_801C1188; + v78C = *p78C; + v78E = D_801C117E; + v790 = D_801C1180; + __asm__ __volatile__(""); + D_801C17D8 = 1; + D_801C110C = 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_801C110C; +extern s16 D_801C1184; +extern s16 D_801C1186; +extern s16 D_801C1188; +extern s16 D_801C117C; +extern s16 D_801C117E; +extern s16 D_801C1180; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801C110C = 0; + D_801C1184 = (s16) D_80114F30; + D_801C1186 = (s16) D_80114F34; + D_801C1188 = (s16) D_80114F38; + D_801C117C = (s16) D_80114F24; + D_801C117E = (s16) D_80114F28; + D_801C1180 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801C119C; +extern s16 D_801C119E; +extern s16 D_801C11A0; +extern s16 D_801C11A4; +extern s16 D_801C11A6; +extern s16 D_801C11A8; + +void func_8017B824(void) { + D_801C119C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801C119E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801C11A0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801C11A4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801C11A6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801C11A8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801C119C; +extern s16 D_801C119E; +extern s16 D_801C11A0; +extern s16 D_801C11A4; +extern s16 D_801C11A6; +extern s16 D_801C11A8; + +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_801C119C; + D_80114F34 = D_801C119E; + D_80114F38 = D_801C11A0; + D_80114F24 = D_801C11A4; + D_80114F28 = D_801C11A6; + D_80114F2C = D_801C11A8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801C1184), src[8..15] -> (*(S8_8017B8E8 *)&D_801C117C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801C1184) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801C117C) = ((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_801C118C; +extern u16 D_801C118E; +extern u16 D_801C1190; + +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_801C110C; +extern short D_801C1194; +extern short D_801C1196; +extern short D_801C1198; +extern s16 D_801C1184; +extern s16 D_801C1186; +extern s16 D_801C1188; +extern s16 D_801C117C; +extern s16 D_801C117E; +extern s16 D_801C1180; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C118C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C118E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C1190); + (*(s16 *)&D_801C1194) = buf[0]; + (*(s16 *)&D_801C1196) = buf[1]; + (*(s16 *)&D_801C1198) = buf[2]; + D_801C1184 = D_80114F30 + buf[0]; + D_801C110C = 0; + D_801C1186 = D_80114F34 + buf[1]; + D_801C1188 = D_80114F38 + buf[2]; + D_801C117C = D_80114F24 + buf[0]; + D_801C117E = D_80114F28 + buf[1]; + D_801C1180 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801C112C; +extern SV4 D_801C1134; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C1134) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801C112C = 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_801C1134 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C1134)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801C112C) = 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_801C1134) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801C1154[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801C1154; + 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_801C110C; +extern s16 D_801C17D8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801C110C = D_801C110C + 1; + if (D_801C110C >= 0x1F) { + D_801C17D8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801C110C; +extern s16 D_801C17D8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801C110C = D_801C110C + 1; + if (0x18 < D_801C110C) { + func_8012A4BC(); + D_801C17D8 = 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_801C110C; +extern void (*D_801C1150)(void); +extern short D_801C1194; +extern short D_801C1196; +extern short D_801C1198; +extern s16 D_801C17D8; + +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_801C110C = D_801C110C + 1; + if (D_801C110C >= 0x19) { + if (D_801C1150 != 0) { + (*D_801C1150)(); + } else { + D_80114F30 = D_80114F30 + D_801C1194; + D_80114F34 = D_80114F34 + D_801C1196; + D_80114F38 = D_80114F38 + D_801C1198; + D_80114F24 = D_80114F24 + D_801C1194; + D_80114F28 = D_80114F28 + D_801C1196; + D_80114F2C = D_80114F2C + D_801C1198; + func_8012A4BC(); + } + D_801C17D8 = 0; + } +} + + + +extern void (*D_8018A8EC[])(void); + +void func_8017BE60(void *a0) { + D_8018A8EC[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017BEBC); + + +extern void (*D_8018A8F8[])(void); + +void func_8017BEE4(void *a0) { + D_8018A8F8[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017BF20); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017BF58); + +DEFINE_func_8017BF98() /* dedup: shared engine-core @0x8017BF98 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017BFA0); + + +extern void (*D_8018A904[])(void); + +void func_8017BFC8(void *a0) { + D_8018A904[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017C004); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017C03C); + +DEFINE_func_8017C07C() /* dedup: shared engine-core @0x8017C07C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017C084); + + +extern void (*D_8018A9C4[])(void); + +void func_8017C0C8(void *a0) { + D_8018A9C4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017C104); + +extern void func_8017C154(void); +void func_8017C12C(void) { + func_8017C154(); +} + + +DEFINE_func_8017C14C() /* dedup: shared engine-core @0x8017C14C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017C154); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017C290); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017C624); + + +extern void (*D_8018AA04[])(void); + +void func_8017C664(void *a0) { + D_8018AA04[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017C6A0); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017C814); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017C8FC); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017CC44); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017CCC4); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017CD10); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017CE10); + + +extern void (*D_8018AA24[])(void); + +void func_8017CE54(void *a0) { + D_8018AA24[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017CE90); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017CFBC); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017D098); + + +extern void (*D_8018AA34[])(void); + +void func_8017D0DC(void *a0) { + D_8018AA34[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017D118); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017D194); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017D1E0); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017D318); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017D5F8); + + +extern void (*D_8018AA40[])(void); + +void func_8017D63C(void *a0) { + D_8018AA40[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017D678); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017D75C); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017D804); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017D890); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017D900); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017D9C8); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017DA98); + + +extern void (*D_8018ABC4[])(void); + +void func_8017DB00(void *a0) { + D_8018ABC4[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017DB3C); + +extern s32 func_80171CC4(void *a0, void *a1); +extern void func_80171A1C(u8 *a0); +extern s16 D_80126B36; +void func_8017DB74(u8 *a0) { + s16 *p = &D_80126B36; + if (*p != 0) { + if (func_80171CC4(a0, p - 3) == 0) { + return; + } + } + func_80171A1C(a0); +} + + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017DBC4); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017DC28); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017DC4C); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017DCC0); + +DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017DD7C); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017DDBC); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017DE24); + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017DE8C); + +DEFINE_func_8017DF7C() /* dedup: shared engine-core @0x8017DF7C (src/shared) */ + diff --git a/src/ov_SC03_028/ov_SC03_028_jr_8017A4AC.c b/src/ov_SC03_028/ov_SC03_028_jr_8017A4AC.c index 8e0c1ce00..4c22fa704 100644 --- a/src/ov_SC03_028/ov_SC03_028_jr_8017A4AC.c +++ b/src/ov_SC03_028/ov_SC03_028_jr_8017A4AC.c @@ -2967,1569 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801EB4BC; - extern s16 D_801EB4BE; - extern s16 D_801EB4C0; - extern s16 D_801EB4B4; - extern s16 D_801EB4B6; - extern s16 D_801EB4B8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801EB4BC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801EB4BE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801EB4C0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801EB4B4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801EB4B6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801EB4B8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801EB444; -extern u16 D_801EB4C4; -extern u16 D_801EB4C6; -extern u16 D_801EB4C8; -extern s16 D_801EC590; - -void func_8017B1D8(void) { - func_8012A418(); - D_801EC590 = 0; - D_801EB444 = 0; - D_801EB4C4 = D_80126B5E; - D_801EB4C6 = D_80126B62; - D_801EB4C8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018F318[]; - extern s16 D_801EB4BC; - extern s16 D_801EB4B4; - 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_8018F318[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018F318[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801EB4BC; - s16 *p78C = &D_801EB4B4; - *(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_801EC590 = 1; - D_801EB444 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801EB464; - extern SV4_8017B368 D_801EB46C; - extern s16 D_801EB4BC; - extern s16 D_801EB4B4; - extern u16 D_8018F318; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801EB464; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801EB46C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018F318)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018F318)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801EB4BC) = loc0; - (*(SV4_8017B368 *)&D_801EB4B4) = loc1; - D_801EC590 = 1; - D_801EB444 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018F318[]; - extern s16 D_801EB4BC; - extern s16 D_801EB4BE; - extern s16 D_801EB4C0; - extern s16 D_801EB4B4; - extern s16 D_801EB4B6; - extern s16 D_801EB4B8; - 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_8018F318[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018F318[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801EB4BC; - s16 *p78C = &D_801EB4B4; - *(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_801EB4BE; - v798 = D_801EB4C0; - v78C = *p78C; - v78E = D_801EB4B6; - v790 = D_801EB4B8; - __asm__ __volatile__(""); - D_801EC590 = 1; - D_801EB444 = 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_801EB444; -extern s16 D_801EB4BC; -extern s16 D_801EB4BE; -extern s16 D_801EB4C0; -extern s16 D_801EB4B4; -extern s16 D_801EB4B6; -extern s16 D_801EB4B8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801EB444 = 0; - D_801EB4BC = (s16) D_80114F30; - D_801EB4BE = (s16) D_80114F34; - D_801EB4C0 = (s16) D_80114F38; - D_801EB4B4 = (s16) D_80114F24; - D_801EB4B6 = (s16) D_80114F28; - D_801EB4B8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801EB4D4; -extern s16 D_801EB4D6; -extern s16 D_801EB4D8; -extern s16 D_801EB4DC; -extern s16 D_801EB4DE; -extern s16 D_801EB4E0; - -void func_8017B824(void) { - D_801EB4D4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801EB4D6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801EB4D8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801EB4DC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801EB4DE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801EB4E0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801EB4D4; -extern s16 D_801EB4D6; -extern s16 D_801EB4D8; -extern s16 D_801EB4DC; -extern s16 D_801EB4DE; -extern s16 D_801EB4E0; - -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_801EB4D4; - D_80114F34 = D_801EB4D6; - D_80114F38 = D_801EB4D8; - D_80114F24 = D_801EB4DC; - D_80114F28 = D_801EB4DE; - D_80114F2C = D_801EB4E0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801EB4BC), src[8..15] -> (*(S8_8017B8E8 *)&D_801EB4B4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801EB4BC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801EB4B4) = ((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_801EB4C4; -extern u16 D_801EB4C6; -extern u16 D_801EB4C8; - -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_801EB444; -extern short D_801EB4CC; -extern short D_801EB4CE; -extern short D_801EB4D0; -extern s16 D_801EB4BC; -extern s16 D_801EB4BE; -extern s16 D_801EB4C0; -extern s16 D_801EB4B4; -extern s16 D_801EB4B6; -extern s16 D_801EB4B8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801EB4C4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801EB4C6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801EB4C8); - (*(s16 *)&D_801EB4CC) = buf[0]; - (*(s16 *)&D_801EB4CE) = buf[1]; - (*(s16 *)&D_801EB4D0) = buf[2]; - D_801EB4BC = D_80114F30 + buf[0]; - D_801EB444 = 0; - D_801EB4BE = D_80114F34 + buf[1]; - D_801EB4C0 = D_80114F38 + buf[2]; - D_801EB4B4 = D_80114F24 + buf[0]; - D_801EB4B6 = D_80114F28 + buf[1]; - D_801EB4B8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801EB464; -extern SV4 D_801EB46C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801EB46C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801EB464 = 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_801EB46C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801EB46C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801EB464) = 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_801EB46C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801EB48C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801EB48C; - 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_801EB444; -extern s16 D_801EC590; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801EB444 = D_801EB444 + 1; - if (D_801EB444 >= 0x1F) { - D_801EC590 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801EB444; -extern s16 D_801EC590; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801EB444 = D_801EB444 + 1; - if (0x18 < D_801EB444) { - func_8012A4BC(); - D_801EC590 = 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_801EB444; -extern void (*D_801EB488)(void); -extern short D_801EB4CC; -extern short D_801EB4CE; -extern short D_801EB4D0; -extern s16 D_801EC590; - -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_801EB444 = D_801EB444 + 1; - if (D_801EB444 >= 0x19) { - if (D_801EB488 != 0) { - (*D_801EB488)(); - } else { - D_80114F30 = D_80114F30 + D_801EB4CC; - D_80114F34 = D_80114F34 + D_801EB4CE; - D_80114F38 = D_80114F38 + D_801EB4D0; - D_80114F24 = D_80114F24 + D_801EB4CC; - D_80114F28 = D_80114F28 + D_801EB4CE; - D_80114F2C = D_80114F2C + D_801EB4D0; - func_8012A4BC(); - } - D_801EC590 = 0; - } -} - - - -extern void (*D_8018F3B8[])(void); - -void func_8017BE60(void *a0) { - D_8018F3B8[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017BEBC); - -extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); - void func_8017BEE0(s32 arg0, s32 arg1, s16 arg2) { - func_8017BF34(arg0, arg1, arg2, 0); - } - - - - -extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); - void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3) { - ((void (*)(void *, void *, s32, s32))func_8017BF34)(a0, a1, (s16)a2, (s16)a3); - } - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017BF34); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017BFBC); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017C010); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017C068); - - -extern void (*D_8018F418[])(void); - -void func_8017C114(void *a0) { - D_8018F418[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017C150); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017C43C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017C8D0); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017CA6C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017CC70); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017D064); - - -extern void (*D_8018F6F4[])(void); - -void func_8017D1E4(void *a0) { - D_8018F6F4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017D220); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017D294); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017D370); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017D584); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017D658); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017D728); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017D780); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017D878); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017D8B8); - -extern void ReadRotMatrix(void *a0); -extern void PushMatrix(void); -extern void func_8004974C(void *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void PopMatrix(void); -void func_8017DC90(u16 *a0, void *a1) { - s32 mat[8]; - s32 buf[8]; - s16 sv[4]; - ReadRotMatrix((void *)mat); - PushMatrix(); - sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); - sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); - sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); - func_8004974C((void *)mat, (void *)buf); - ApplyMatrixSV((void *)buf, (void *)sv, a1); - PopMatrix(); -} - - -int func_8017DD34(short *param_1, short *param_2, short *param_3, int param_4) { - register int i2o __asm__("$5"); - register int i4o __asm__("$9"); - short sVar1; int rx, rz, uVar5; - i4o = param_2[1]; - __asm__ __volatile__("" : : "r"(i4o)); - i2o = param_1[1]; uVar5 = 0; - if (i2o >= i4o) { - rx = param_1[0] - i2o * (param_2[0] - param_1[0]); - rz = param_1[2] - i2o * (param_2[2] - param_1[2]); - } else { - register int den __asm__("$3"); - int p2x = param_2[0], p2z = param_2[2]; - den = i2o - i4o; - rx = p2x + i4o * (p2x - param_1[0]) / den; - rz = p2z + i4o * (p2z - param_1[2]) / den; - } - if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } - else i2o = -0x7fff; - *param_3 = (short)i2o; - if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } - else i2o = -0x7fff; - param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; - if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } - if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } - if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } - if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } - return uVar5; -} - - -extern void ReadGeomOffset(s32 *a0, s32 *a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8004921C(s32 a0, s32 a1); -void func_8017DF2C(s32 a0, s32 a1) { - s32 ofx; - s32 ofy; - s32 sxy; - s32 p; - ReadGeomOffset(&ofx, &ofy); - func_8004921C(0, 0); - RotTransPers(a0, a1, &sxy, &p); - func_8004921C(ofx, ofy); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017DF98); - -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); - void func_8017EE64(void *arg0) { - ((void (*)(s32, s32, s32, s32))func_80146994)(0x49, (s32)arg0, 0, 0); - } - - - -// @class: struct -// @stuck: none — MATCH expected; param_1 survives jal in $s0, table fp-call with %lo-fold -extern void func_8017F04C(u8 *a0); -extern void (*D_8018F774[])(int); - -void func_8017EE90(int param_1) -{ - ((void (*)(void))func_8017F04C)(); - D_8018F774[*(unsigned short *)(param_1 + 2)](param_1); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017EEDC); - -extern s32 func_80128ED8(void *a0, void *a1); -extern void func_80146C3C(void); -void func_8017EFA8(s32 param_1) -{ - s32 iVar2; - iVar2 = *(s32 *)(param_1 + 0x20); - if (((s32 (*)(s32, s32))func_80128ED8)(iVar2, param_1 + 0x24) != 0) { - ((void (*)(s32))func_80146C3C)(param_1); - } else { - *(s8 *)(iVar2 + 0x27) = *(u8 *)(param_1 + 0x28) - 0x70; - *(s32 *)(param_1 + 0x10) = *(s32 *)(param_1 + 0x10) - 0x60000; - *(s32 *)(param_1 + 0x14) = *(s32 *)(param_1 + 0x14) + *(s32 *)(param_1 + 0x10); - *(s32 *)(param_1 + 0x8) = *(s32 *)(param_1 + 0x8) + *(s32 *)(param_1 + 0x14); - *(s16 *)(iVar2 + 0x18) = *(s16 *)(iVar2 + 0x18) - 0x500; - *(s16 *)(iVar2 + 0x1a) = *(s16 *)(iVar2 + 0x1a) - 0x300; - } -} - - -extern void func_80149374(s32 a0, s32 a1); -extern void func_800D1FC8(s32 a0, s32 a1); -void func_8017F04C(u8 *a0) { - *(s32 *)(a0 + 0x4) = 0; - *(s32 *)(a0 + 0x8) = 0; - *(s32 *)(a0 + 0xC) = 0; - func_80149374(*(s32 *)(a0 + 0x34), (s32)(a0 + 0x4)); - func_800D1FC8((s32)a0, 5); -} - - - -extern void (*D_8018F77C[])(void); - -void func_8017F094(void *a0) { - D_8018F77C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017F0D0); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017F278); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017F40C); - - -extern void (*D_8018F818[])(void); - -void func_8017F6C4(void *a0) { - D_8018F818[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017F700); - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017F744(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_8018F820[])(void); - -void func_8017F768(void *a0) { - D_8018F820[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017F7A4); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017F7E4); - -extern s32 func_800D1EBC(void); - void func_8017F880(void) { - func_800D1EBC(); - } - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017F8A0); - -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_8018F834; - -void func_8017F8EC(void) { - ((void (*)(void *, s32))func_8016EE40)(&D_8018F834, 0x1000000); -} - - -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); - extern s32 D_8018F84C; - void func_8017F914(void) { - ((void (*)(void *, s32))func_8016EE40)(&D_8018F84C, 0x1000000); - } - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017F93C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017F9D8); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017FA44); - -extern s16 D_80126978; - extern s16 D_8012697A; - void func_8017FABC(void) { - D_80126978 = -0x1A0; - D_8012697A = 0x200; - } - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017FADC); - -extern void func_8012A100(s8 a0); - void func_8017FB84(void) { - ((void (*)(int))func_8012A100)(0); - } - - - -extern void (*D_8018F860[])(void); - -void func_8017FBA4(void *a0) { - D_8018F860[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017FBE0); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017FD64); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017FDC0); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017FE18); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8017FF68); - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80180100); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80180120); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801802B8); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801802F4); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80180494); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801808CC); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80180A08); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80180AC4); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80180B44); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80181000); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80181304); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80181374); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80181414); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018150C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80181850); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80181BD8); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80181D4C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80181EBC); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018222C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80182494); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80182628); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80182698); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80182780); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801828DC); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801829F0); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80182B3C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80182C20); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80182E2C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80182F3C); - - -extern void (*D_80190068[])(void); - -void func_80183020(void *a0) { - D_80190068[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); -void func_8018305C(s32 a0) { - func_8012C658(0xc8, 0, a0); - func_8012C658(0xc8, 1, a0); - func_8012C658(0xc8, 2, a0); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801830B0); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80183104); - - -extern void (*D_801900B8[])(void); - -void func_80183228(void *a0) { - D_801900B8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80183264); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801833D8); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80183580); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80183728); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801838B0); - -extern void (*D_8019025C[])(void); - -void func_80183A38(void *a0) { - D_8019025C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80183A74); - - -extern void (*D_801902C0[])(void); - -void func_80183DC8(void *a0) { - D_801902C0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80183E04); - -void func_80184228(void) { -} - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80184230); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018430C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801843D8); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801843FC); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018449C); - -extern void (*D_80190400[])(void); - -void func_80184524(void *a0) { - D_80190400[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_80184560(void) { -} - -extern void (*D_8019040C[])(void); - -void func_80184568(void *a0) { - D_8019040C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801845A4); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801847E8); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80184914); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80184A40); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80184B28); - - -extern void (*D_801904A0[])(void); - -void func_80184C54(void *a0) { - D_801904A0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80184C90); - - -extern void (*D_80190594[])(void); - -void func_80184E00(void *a0) { - D_80190594[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80184E3C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80184E9C); - -void func_80184FAC(s32 *a0) { - *(s16*)((s32)a0 + 0x5C) = 0; - } - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80184FB4); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80185028); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018509C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80185158); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80185344); - -extern void (*D_8019066C[])(void); - -void func_801854D8(void *a0) { - D_8019066C[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void (*D_801906C8[])(void); - -void func_80185514(void *a0) { - D_801906C8[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void (*D_80190724[])(void); - -void func_80185550(void *a0) { - D_80190724[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018558C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018561C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018568C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801857AC); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801857F4); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80185864); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80185984); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801859CC); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80185A3C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80185B5C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80185BA4); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80185C14); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80185D34); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80185D7C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80185ED4); - - -extern void (*D_80190B50[])(void); - -void func_80186044(void *a0) { - D_80190B50[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80190BE4[])(void); - -void func_80186080(void *a0) { - D_80190BE4[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80190BEC[])(void); - -void func_801860BC(void *a0) { - D_80190BEC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801860F8); - - -extern void (*D_80190BF4[])(void); - -void func_801861A0(void *a0) { - D_80190BF4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801861DC); - -extern void func_8012AD44(s32 *a0, s16 a1); - void func_8018620C(u8 *a0) { - *(s8 *)(a0 + 0xFC) = 0x8; - ((void (*)(s32, s32))func_8012AD44)((s32)a0, 0x2); - } - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80186234); - -extern void (*D_80190BFC[])(void); - -void func_8018632C(void *a0) { - D_80190BFC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80186368); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801864A8); - - -extern void (*D_80190C78[])(void); - -void func_80186754(void *a0) { - D_80190C78[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_80029124(s32 arg0, s32 arg1); - void func_80186790(void) { - func_80029124(0x8A, 1); - func_80029124(0xF3, 1); - } - - -extern void func_80180AC4(s32 arg0, s32 arg1); - void func_801867C0(s32 arg0) { - func_80180AC4(arg0, 0x14400); - } - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801867E4); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80186838); - -void func_8018688C(void *a0) { - *(s32 *)((s32)a0 + 0xb4) = 0; - } - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80186894); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801869C0); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80186A00); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80186A88); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80186B0C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80186BAC); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80186C98); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80186D0C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80186D84); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80186E60); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80186F04); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80186FA4); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80187084); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801871EC); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018726C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801873A8); - -void func_80187414(void) { -} - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018741C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801874D0); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018753C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80187610); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80187688); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80187730); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80187860); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801878A8); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80187954); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801879AC); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80187AB0); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80187B04); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80187C28); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80187CF4); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80187D48); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80187E14); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80187EEC); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80187F98); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80188034); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801880AC); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80188164); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801881CC); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80188238); - - -extern void func_801292C8(u8 *a0); - s32 func_8018828C(s32 arg0) { - *(s32 *)(arg0 + 0x1c) -= 1; - if (*(s32 *)(arg0 + 0x1c) == 0) { - ((void (*)(void))func_801292C8)(); - } - } - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801882C0); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801883E4); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801884AC); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018854C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018858C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80188600); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018870C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801887A8); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801888AC); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80188950); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80188A0C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80188AE4); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80188BEC); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80188CAC); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80188D14); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80188DC0); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80188EC0); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80188F4C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80188FF0); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80189094); - -extern void func_8012CBCC(s32 a0); - extern void func_8012C218(void *a0); - void func_801890E4(s32 param_1) { - if (((int (*)(void))func_8012CBCC)() != 0) { - ((void (*)(int))func_8012C218)(param_1); - } - } - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018911C); - -void func_80189234(void) { -} - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018923C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801892E0); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80189380); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018947C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80189518); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801895CC); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018966C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80189768); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80189808); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80189904); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_801899A0); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80189A54); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80189AF4); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80189BF0); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80189C90); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80189D8C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80189E28); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80189EDC); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_80189F7C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018A078); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018A118); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018A214); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018A2B0); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018A364); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018A404); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018A500); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018A618); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018A664); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018A6E0); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018A724); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018A800); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018A878); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018A960); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018AA58); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018AB28); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018AB7C); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018ABC4); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018AC5C); - -extern void func_8013CB84(void); - void func_8018AD80(void) { - func_8013CB84(); - } - - -extern void func_8013C414(void *a0, void *a1); - extern s32 D_80191734; - extern s32 D_801E461C; - void func_8018ADA0(void) { - func_8013C414(&D_80191734, &D_801E461C); - } - - -extern s32 func_8013C360(s32 *a0); -void func_8018ADD0(void) { - - extern s32 D_801E461C; - func_8013C360(&D_801E461C); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018ADF8); - - -extern void (*D_80190CAC[])(void); - -void func_8018AE14(void *a0) { - D_80190CAC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018AE50); - - -// @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_80190C9C; - -void func_8018AE98(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_80190C9C; - *(short *)(param_1 + 0x5c) = 0x80; - *(unsigned short *)(param_1 + 2) += 1; - } -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018AF04); - - -extern void (*D_80190E28[])(void); - -void func_8018AF60(void *a0) { - D_80190E28[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018AF9C); - -extern s32 func_8018B1DC(void); - s32 func_8018B19C(void) { - return func_8018B1DC(); - } - - -extern void func_80146C3C(void); - void func_8018B1BC(void) { - func_80146C3C(); - } - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018B1DC); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018B234); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018B260); - - -extern void (*D_80190E8C[])(void); - -void func_8018B2A4(void *a0) { - D_80190E8C[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_8018B310(s32 *a0); -extern void func_80146CA0(void *a0); - -void func_8018B2E0(s32 *a0) { - func_8018B310(a0); - ((s32 (*)(s32))func_80146CA0)((s32)a0); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018B310); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018B390); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018B540); - - -extern void (*D_80190EB4[])(void); - -void func_8018B588(void *a0) { - D_80190EB4[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_8018B5F4(s32 arg0); - extern void func_80146CA0(void *a0); - void func_8018B5C4(s32 arg0) { - func_8018B5F4(arg0); - ((s32 (*)(s32))func_80146CA0)(arg0); - } - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018B5F4); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018B698); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018B774); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018B87C); - - -extern void (*D_80190EC4[])(void); - -void func_8018B8C4(void *a0) { - D_80190EC4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017A4AC", func_8018B900); - - - diff --git a/src/ov_SC03_028/ov_SC03_028_jr_8017AE2C.c b/src/ov_SC03_028/ov_SC03_028_jr_8017AE2C.c new file mode 100644 index 000000000..6fed92aae --- /dev/null +++ b/src/ov_SC03_028/ov_SC03_028_jr_8017AE2C.c @@ -0,0 +1,4467 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018DF10; +extern u8 D_8018DE80; +extern u8 D_8018DE5C; +extern u8 D_8018DE38; +extern u8 D_8018DEEC; +extern u8 D_8018DEC8; +extern u8 D_8018DEA4; +extern u8 D_8018DE14; +extern void func_80145934(void); +extern u8 D_8018DFA0; +extern u8 D_8018DF7C; +extern u8 D_8018DF58; +extern u8 D_8018DF34; +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_8018D398[]; +extern unsigned char D_8018D3C8[]; +extern unsigned char D_8018D418[]; +extern unsigned char D_8018D448[]; +extern unsigned char D_8018D478[]; +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(void); +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_8018D4C8[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018D590[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018D618[]; +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_8018D620; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801EA340; +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_801EA344; +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_8018D650; +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 void 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_8018D6F8[])(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_8018D71C[])(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_8018D70C; +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_8018D730[])(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_8018D73C[]; +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_8018D74C[])(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_8018D764[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018D754; +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_8018D778[])(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_8018D794[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018D784; +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_8018D7A8[])(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_8018D7BC[])(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_8018D7D0; +extern void (*D_8018D7F8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018D7D8; +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_8018D844[])(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_8018D848[])(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(void *a0); +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_8018DCAC[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018DCBC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801EA378; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018DCE4[])(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_8018DCC4; +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_8018DCD4; +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_8018DD24[])(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_8018DD2C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018DCF8; +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_8018DD38[])(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_8018DD08; +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_801EA380; +extern s32 D_801EA38C; +extern s32 D_801EA390; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018DD74[])(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_8018DD48[]; +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_801EA388; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018DFC4[])(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_8018DDE4[]; +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_8018E068[])(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_8018E1BC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018DFD8; +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_8018E1C4[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018DFE8; +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_8018E008; +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_8018E1CC[])(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(void); +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_8018E1F4[])(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_8018E200[])(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_8018E074[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018E2A4; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018D388[]; +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_8018E2B8[]; +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_8018E2F4[]; +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_8018E33C; +extern u16 D_8018E33E; +extern u16 D_8018E340; +extern s32 D_8018E344; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018E34C; +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_8018E058; +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_8018E3D0[]; +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_8018E480[])(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_8018E4B0[]; +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_8018E514; +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_801EA398[]; +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_8018E538[])(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_801EA3F0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018E580[])(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_8018E570; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801E99A4[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_8018E588[])(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_8018E5DC[])(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_8018E5A4; +extern s16 D_8018E5D8; +extern s16 D_8018E5D6; +extern s16 D_8018E5D4; +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_8018E5E8[])(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_801EA450; +extern u8 D_801EA451; +extern u8 D_801EA452; +extern u8 D_801EA453; +extern u8 D_801EA454; +extern u8 D_801EA455; +extern u8 D_801EA456; +extern u8 D_801EA457; +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_8018E5F8[])(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_801EA490; +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_8018E63C[])(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_8018E6B8[]; +extern s32 D_8018E6D8[]; +extern u8 D_8018E754[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018E774[]; +extern u8 D_8018E794[]; +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_8018E830[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018E8AC[])(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_801E99B4; +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_8018E8B8[])(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_8018E8C0[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018E988[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018E998[])(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_8018E9A8[])(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_8018E9B4[])(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_8018E914[]; +extern u8 D_8018E928[]; +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_8018E9CC[])(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_8018E9D4[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018E9DC[])(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_8018E9E4[])(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_8018E9EC[])(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_8018E9F4[])(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_8018E9FC[])(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_8018EAB0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018EAB8[])(void); +extern void func_80169F00(void *a0); +extern char D_8018EA68[]; +extern char D_8018EA28[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018EAF0[])(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_8018EAFC[])(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_8018EB44[])(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_8018EBC0[])(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_801EA7B0; +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_8018EBB4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018EBF8[]; +extern unsigned short D_8018EC00[]; +extern unsigned short D_8018EC08[]; +extern unsigned char D_801EA7B8[]; +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_801EA7B0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018EC10[])(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_801EA8EC; +extern M2C_UNK D_801EA8F0; +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_801EA878; +extern void (*D_8018EC40[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801EA8F4[]; +extern u8 D_801EA8FC[]; +extern u8 D_801EA8AC[]; +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_8018EC48[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018EC64[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018EC6C[])(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_8018ECD4[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018EC78; +extern u8 D_8018EC84; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018ED08[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018ED10[])(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_8018ED64[])(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_8018ED98[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018ED88[]; +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_8018EDB4; +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); +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_8018EE2C[])(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_8018EE34[])(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_8018EE3C[])(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_8018EE44[])(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_8018EE4C[])(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_8018EE54[])(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_8018EE60[])(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_8018EE6C[])(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_8018EE78[])(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_8018EE88[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018EE98[])(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_8018EEA0[])(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_8018EEA8[])(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_8018EEB0[])(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_8018EEB8[])(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_8018EEC0[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018EEC8[])(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_8018EED0[])(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_8018EED8[])(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_8018EEE0[])(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_8018EEE8[])(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_8018EEF0[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018EEF8[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018EF00[])(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_8018EF08[])(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_8018EF10[])(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_8018EF18[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018EF20[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018EF28[])(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_8018EF30[])(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_8018EF38[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018EF40[])(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_8018EF48[])(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_8018EF8C[])(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_8018EF50; +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_8018EFBC[])(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_8018EFF8[])(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(s32); +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_8018F050[])(); +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_8018F060[])(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_8018F068[])(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_8018F1D0[])(); +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_8018F1DC[])(); +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_801E9BFC; +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 int func_801789AC(void); +extern s16 D_801EC590; +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_801EB030; +extern short D_801EC604; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801EB45C; +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_801EB484; +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_801EB440; +extern s32 func_8017A3B0(void); +extern short D_801EB47C; +extern short D_801EB478; +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_801EC560; +extern s16 D_801EC562; +extern s16 D_801EC56C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801EC560; + + 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_801EC56C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801EC560+0xC == &D_801EC56C; 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_801EC560 + 0xC)) < 0x101) { + D_801EC560 = 0; + D_801EC562 = 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_801EC56C); + 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_801EC560 + 0xC)) < 0x101) { + D_801EC560 = 0; + D_801EC562 = 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_801EB4BC; + extern s16 D_801EB4BE; + extern s16 D_801EB4C0; + extern s16 D_801EB4B4; + extern s16 D_801EB4B6; + extern s16 D_801EB4B8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801EB4BC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801EB4BE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801EB4C0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801EB4B4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801EB4B6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801EB4B8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801EB444; +extern u16 D_801EB4C4; +extern u16 D_801EB4C6; +extern u16 D_801EB4C8; +extern s16 D_801EC590; + +void func_8017B1D8(void) { + func_8012A418(); + D_801EC590 = 0; + D_801EB444 = 0; + D_801EB4C4 = D_80126B5E; + D_801EB4C6 = D_80126B62; + D_801EB4C8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018F318[]; + extern s16 D_801EB4BC; + extern s16 D_801EB4B4; + 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_8018F318[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018F318[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801EB4BC; + s16 *p78C = &D_801EB4B4; + *(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_801EC590 = 1; + D_801EB444 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801EB464; + extern SV4_8017B368 D_801EB46C; + extern s16 D_801EB4BC; + extern s16 D_801EB4B4; + extern u16 D_8018F318; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801EB464; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801EB46C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018F318)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018F318)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801EB4BC) = loc0; + (*(SV4_8017B368 *)&D_801EB4B4) = loc1; + D_801EC590 = 1; + D_801EB444 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018F318[]; + extern s16 D_801EB4BC; + extern s16 D_801EB4BE; + extern s16 D_801EB4C0; + extern s16 D_801EB4B4; + extern s16 D_801EB4B6; + extern s16 D_801EB4B8; + 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_8018F318[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018F318[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801EB4BC; + s16 *p78C = &D_801EB4B4; + *(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_801EB4BE; + v798 = D_801EB4C0; + v78C = *p78C; + v78E = D_801EB4B6; + v790 = D_801EB4B8; + __asm__ __volatile__(""); + D_801EC590 = 1; + D_801EB444 = 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_801EB444; +extern s16 D_801EB4BC; +extern s16 D_801EB4BE; +extern s16 D_801EB4C0; +extern s16 D_801EB4B4; +extern s16 D_801EB4B6; +extern s16 D_801EB4B8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801EB444 = 0; + D_801EB4BC = (s16) D_80114F30; + D_801EB4BE = (s16) D_80114F34; + D_801EB4C0 = (s16) D_80114F38; + D_801EB4B4 = (s16) D_80114F24; + D_801EB4B6 = (s16) D_80114F28; + D_801EB4B8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801EB4D4; +extern s16 D_801EB4D6; +extern s16 D_801EB4D8; +extern s16 D_801EB4DC; +extern s16 D_801EB4DE; +extern s16 D_801EB4E0; + +void func_8017B824(void) { + D_801EB4D4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801EB4D6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801EB4D8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801EB4DC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801EB4DE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801EB4E0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801EB4D4; +extern s16 D_801EB4D6; +extern s16 D_801EB4D8; +extern s16 D_801EB4DC; +extern s16 D_801EB4DE; +extern s16 D_801EB4E0; + +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_801EB4D4; + D_80114F34 = D_801EB4D6; + D_80114F38 = D_801EB4D8; + D_80114F24 = D_801EB4DC; + D_80114F28 = D_801EB4DE; + D_80114F2C = D_801EB4E0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801EB4BC), src[8..15] -> (*(S8_8017B8E8 *)&D_801EB4B4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801EB4BC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801EB4B4) = ((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_801EB4C4; +extern u16 D_801EB4C6; +extern u16 D_801EB4C8; + +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_801EB444; +extern short D_801EB4CC; +extern short D_801EB4CE; +extern short D_801EB4D0; +extern s16 D_801EB4BC; +extern s16 D_801EB4BE; +extern s16 D_801EB4C0; +extern s16 D_801EB4B4; +extern s16 D_801EB4B6; +extern s16 D_801EB4B8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801EB4C4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801EB4C6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801EB4C8); + (*(s16 *)&D_801EB4CC) = buf[0]; + (*(s16 *)&D_801EB4CE) = buf[1]; + (*(s16 *)&D_801EB4D0) = buf[2]; + D_801EB4BC = D_80114F30 + buf[0]; + D_801EB444 = 0; + D_801EB4BE = D_80114F34 + buf[1]; + D_801EB4C0 = D_80114F38 + buf[2]; + D_801EB4B4 = D_80114F24 + buf[0]; + D_801EB4B6 = D_80114F28 + buf[1]; + D_801EB4B8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801EB464; +extern SV4 D_801EB46C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801EB46C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801EB464 = 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_801EB46C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801EB46C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801EB464) = 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_801EB46C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801EB48C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801EB48C; + 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_801EB444; +extern s16 D_801EC590; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801EB444 = D_801EB444 + 1; + if (D_801EB444 >= 0x1F) { + D_801EC590 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801EB444; +extern s16 D_801EC590; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801EB444 = D_801EB444 + 1; + if (0x18 < D_801EB444) { + func_8012A4BC(); + D_801EC590 = 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_801EB444; +extern void (*D_801EB488)(void); +extern short D_801EB4CC; +extern short D_801EB4CE; +extern short D_801EB4D0; +extern s16 D_801EC590; + +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_801EB444 = D_801EB444 + 1; + if (D_801EB444 >= 0x19) { + if (D_801EB488 != 0) { + (*D_801EB488)(); + } else { + D_80114F30 = D_80114F30 + D_801EB4CC; + D_80114F34 = D_80114F34 + D_801EB4CE; + D_80114F38 = D_80114F38 + D_801EB4D0; + D_80114F24 = D_80114F24 + D_801EB4CC; + D_80114F28 = D_80114F28 + D_801EB4CE; + D_80114F2C = D_80114F2C + D_801EB4D0; + func_8012A4BC(); + } + D_801EC590 = 0; + } +} + + + +extern void (*D_8018F3B8[])(void); + +void func_8017BE60(void *a0) { + D_8018F3B8[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017BEBC); + +extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); + void func_8017BEE0(s32 arg0, s32 arg1, s16 arg2) { + func_8017BF34(arg0, arg1, arg2, 0); + } + + + + +extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); + void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3) { + ((void (*)(void *, void *, s32, s32))func_8017BF34)(a0, a1, (s16)a2, (s16)a3); + } + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017BF34); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017BFBC); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017C010); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017C068); + + +extern void (*D_8018F418[])(void); + +void func_8017C114(void *a0) { + D_8018F418[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017C150); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017C43C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017C8D0); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017CA6C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017CC70); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017D064); + + +extern void (*D_8018F6F4[])(void); + +void func_8017D1E4(void *a0) { + D_8018F6F4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017D220); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017D294); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017D370); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017D584); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017D658); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017D728); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017D780); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017D878); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017D8B8); + +extern void ReadRotMatrix(void *a0); +extern void PushMatrix(void); +extern void func_8004974C(void *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern void PopMatrix(void); +void func_8017DC90(u16 *a0, void *a1) { + s32 mat[8]; + s32 buf[8]; + s16 sv[4]; + ReadRotMatrix((void *)mat); + PushMatrix(); + sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); + sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); + sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); + func_8004974C((void *)mat, (void *)buf); + ApplyMatrixSV((void *)buf, (void *)sv, a1); + PopMatrix(); +} + + +int func_8017DD34(short *param_1, short *param_2, short *param_3, int param_4) { + register int i2o __asm__("$5"); + register int i4o __asm__("$9"); + short sVar1; int rx, rz, uVar5; + i4o = param_2[1]; + __asm__ __volatile__("" : : "r"(i4o)); + i2o = param_1[1]; uVar5 = 0; + if (i2o >= i4o) { + rx = param_1[0] - i2o * (param_2[0] - param_1[0]); + rz = param_1[2] - i2o * (param_2[2] - param_1[2]); + } else { + register int den __asm__("$3"); + int p2x = param_2[0], p2z = param_2[2]; + den = i2o - i4o; + rx = p2x + i4o * (p2x - param_1[0]) / den; + rz = p2z + i4o * (p2z - param_1[2]) / den; + } + if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } + else i2o = -0x7fff; + *param_3 = (short)i2o; + if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } + else i2o = -0x7fff; + param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; + if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } + if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } + if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } + if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } + return uVar5; +} + + +extern void ReadGeomOffset(s32 *a0, s32 *a1); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +extern void func_8004921C(s32 a0, s32 a1); +void func_8017DF2C(s32 a0, s32 a1) { + s32 ofx; + s32 ofy; + s32 sxy; + s32 p; + ReadGeomOffset(&ofx, &ofy); + func_8004921C(0, 0); + RotTransPers(a0, a1, &sxy, &p); + func_8004921C(ofx, ofy); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017DF98); + +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); + void func_8017EE64(void *arg0) { + ((void (*)(s32, s32, s32, s32))func_80146994)(0x49, (s32)arg0, 0, 0); + } + + + +// @class: struct +// @stuck: none — MATCH expected; param_1 survives jal in $s0, table fp-call with %lo-fold +extern void func_8017F04C(u8 *a0); +extern void (*D_8018F774[])(int); + +void func_8017EE90(int param_1) +{ + ((void (*)(void))func_8017F04C)(); + D_8018F774[*(unsigned short *)(param_1 + 2)](param_1); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017EEDC); + +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); +void func_8017EFA8(s32 param_1) +{ + s32 iVar2; + iVar2 = *(s32 *)(param_1 + 0x20); + if (((s32 (*)(s32, s32))func_80128ED8)(iVar2, param_1 + 0x24) != 0) { + ((void (*)(s32))func_80146C3C)(param_1); + } else { + *(s8 *)(iVar2 + 0x27) = *(u8 *)(param_1 + 0x28) - 0x70; + *(s32 *)(param_1 + 0x10) = *(s32 *)(param_1 + 0x10) - 0x60000; + *(s32 *)(param_1 + 0x14) = *(s32 *)(param_1 + 0x14) + *(s32 *)(param_1 + 0x10); + *(s32 *)(param_1 + 0x8) = *(s32 *)(param_1 + 0x8) + *(s32 *)(param_1 + 0x14); + *(s16 *)(iVar2 + 0x18) = *(s16 *)(iVar2 + 0x18) - 0x500; + *(s16 *)(iVar2 + 0x1a) = *(s16 *)(iVar2 + 0x1a) - 0x300; + } +} + + +extern void func_80149374(s32 a0, s32 a1); +extern void func_800D1FC8(s32 a0, s32 a1); +void func_8017F04C(u8 *a0) { + *(s32 *)(a0 + 0x4) = 0; + *(s32 *)(a0 + 0x8) = 0; + *(s32 *)(a0 + 0xC) = 0; + func_80149374(*(s32 *)(a0 + 0x34), (s32)(a0 + 0x4)); + func_800D1FC8((s32)a0, 5); +} + + + +extern void (*D_8018F77C[])(void); + +void func_8017F094(void *a0) { + D_8018F77C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017F0D0); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017F278); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017F40C); + + +extern void (*D_8018F818[])(void); + +void func_8017F6C4(void *a0) { + D_8018F818[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017F700); + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017F744(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_8018F820[])(void); + +void func_8017F768(void *a0) { + D_8018F820[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017F7A4); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017F7E4); + +extern s32 func_800D1EBC(void); + void func_8017F880(void) { + func_800D1EBC(); + } + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017F8A0); + +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); +extern M2C_UNK D_8018F834; + +void func_8017F8EC(void) { + ((void (*)(void *, s32))func_8016EE40)(&D_8018F834, 0x1000000); +} + + +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); + extern s32 D_8018F84C; + void func_8017F914(void) { + ((void (*)(void *, s32))func_8016EE40)(&D_8018F84C, 0x1000000); + } + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017F93C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017F9D8); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017FA44); + +extern s16 D_80126978; + extern s16 D_8012697A; + void func_8017FABC(void) { + D_80126978 = -0x1A0; + D_8012697A = 0x200; + } + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017FADC); + +extern void func_8012A100(s8 a0); + void func_8017FB84(void) { + ((void (*)(int))func_8012A100)(0); + } + + + +extern void (*D_8018F860[])(void); + +void func_8017FBA4(void *a0) { + D_8018F860[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017FBE0); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017FD64); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017FDC0); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017FE18); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017FF68); + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80180100); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80180120); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801802B8); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801802F4); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80180494); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801808CC); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80180A08); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80180AC4); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80180B44); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80181000); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80181304); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80181374); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80181414); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018150C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80181850); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80181BD8); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80181D4C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80181EBC); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018222C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80182494); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80182628); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80182698); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80182780); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801828DC); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801829F0); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80182B3C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80182C20); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80182E2C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80182F3C); + + +extern void (*D_80190068[])(void); + +void func_80183020(void *a0) { + D_80190068[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +void func_8018305C(s32 a0) { + func_8012C658(0xc8, 0, a0); + func_8012C658(0xc8, 1, a0); + func_8012C658(0xc8, 2, a0); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801830B0); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80183104); + + +extern void (*D_801900B8[])(void); + +void func_80183228(void *a0) { + D_801900B8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80183264); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801833D8); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80183580); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80183728); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801838B0); + +extern void (*D_8019025C[])(void); + +void func_80183A38(void *a0) { + D_8019025C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80183A74); + + +extern void (*D_801902C0[])(void); + +void func_80183DC8(void *a0) { + D_801902C0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80183E04); + +void func_80184228(void) { +} + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80184230); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018430C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801843D8); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801843FC); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018449C); + +extern void (*D_80190400[])(void); + +void func_80184524(void *a0) { + D_80190400[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_80184560(void) { +} + +extern void (*D_8019040C[])(void); + +void func_80184568(void *a0) { + D_8019040C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801845A4); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801847E8); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80184914); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80184A40); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80184B28); + + +extern void (*D_801904A0[])(void); + +void func_80184C54(void *a0) { + D_801904A0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80184C90); + + +extern void (*D_80190594[])(void); + +void func_80184E00(void *a0) { + D_80190594[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80184E3C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80184E9C); + +void func_80184FAC(s32 *a0) { + *(s16*)((s32)a0 + 0x5C) = 0; + } + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80184FB4); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80185028); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018509C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80185158); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80185344); + +extern void (*D_8019066C[])(void); + +void func_801854D8(void *a0) { + D_8019066C[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void (*D_801906C8[])(void); + +void func_80185514(void *a0) { + D_801906C8[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void (*D_80190724[])(void); + +void func_80185550(void *a0) { + D_80190724[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018558C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018561C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018568C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801857AC); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801857F4); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80185864); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80185984); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801859CC); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80185A3C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80185B5C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80185BA4); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80185C14); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80185D34); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80185D7C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80185ED4); + + +extern void (*D_80190B50[])(void); + +void func_80186044(void *a0) { + D_80190B50[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80190BE4[])(void); + +void func_80186080(void *a0) { + D_80190BE4[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80190BEC[])(void); + +void func_801860BC(void *a0) { + D_80190BEC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801860F8); + + +extern void (*D_80190BF4[])(void); + +void func_801861A0(void *a0) { + D_80190BF4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801861DC); + +extern void func_8012AD44(s32 *a0, s16 a1); + void func_8018620C(u8 *a0) { + *(s8 *)(a0 + 0xFC) = 0x8; + ((void (*)(s32, s32))func_8012AD44)((s32)a0, 0x2); + } + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80186234); + +extern void (*D_80190BFC[])(void); + +void func_8018632C(void *a0) { + D_80190BFC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80186368); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801864A8); + + +extern void (*D_80190C78[])(void); + +void func_80186754(void *a0) { + D_80190C78[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_80029124(s32 arg0, s32 arg1); + void func_80186790(void) { + func_80029124(0x8A, 1); + func_80029124(0xF3, 1); + } + + +extern void func_80180AC4(s32 arg0, s32 arg1); + void func_801867C0(s32 arg0) { + func_80180AC4(arg0, 0x14400); + } + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801867E4); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80186838); + +void func_8018688C(void *a0) { + *(s32 *)((s32)a0 + 0xb4) = 0; + } + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80186894); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801869C0); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80186A00); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80186A88); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80186B0C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80186BAC); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80186C98); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80186D0C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80186D84); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80186E60); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80186F04); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80186FA4); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80187084); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801871EC); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018726C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801873A8); + +void func_80187414(void) { +} + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018741C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801874D0); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018753C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80187610); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80187688); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80187730); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80187860); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801878A8); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80187954); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801879AC); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80187AB0); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80187B04); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80187C28); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80187CF4); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80187D48); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80187E14); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80187EEC); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80187F98); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80188034); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801880AC); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80188164); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801881CC); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80188238); + + +extern void func_801292C8(u8 *a0); + s32 func_8018828C(s32 arg0) { + *(s32 *)(arg0 + 0x1c) -= 1; + if (*(s32 *)(arg0 + 0x1c) == 0) { + ((void (*)(void))func_801292C8)(); + } + } + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801882C0); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801883E4); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801884AC); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018854C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018858C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80188600); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018870C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801887A8); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801888AC); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80188950); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80188A0C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80188AE4); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80188BEC); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80188CAC); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80188D14); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80188DC0); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80188EC0); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80188F4C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80188FF0); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80189094); + +extern void func_8012CBCC(s32 a0); + extern void func_8012C218(void *a0); + void func_801890E4(s32 param_1) { + if (((int (*)(void))func_8012CBCC)() != 0) { + ((void (*)(int))func_8012C218)(param_1); + } + } + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018911C); + +void func_80189234(void) { +} + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018923C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801892E0); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80189380); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018947C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80189518); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801895CC); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018966C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80189768); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80189808); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80189904); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_801899A0); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80189A54); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80189AF4); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80189BF0); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80189C90); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80189D8C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80189E28); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80189EDC); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_80189F7C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018A078); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018A118); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018A214); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018A2B0); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018A364); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018A404); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018A500); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018A618); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018A664); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018A6E0); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018A724); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018A800); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018A878); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018A960); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018AA58); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018AB28); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018AB7C); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018ABC4); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018AC5C); + +extern void func_8013CB84(void); + void func_8018AD80(void) { + func_8013CB84(); + } + + +extern void func_8013C414(void *a0, void *a1); + extern s32 D_80191734; + extern s32 D_801E461C; + void func_8018ADA0(void) { + func_8013C414(&D_80191734, &D_801E461C); + } + + +extern s32 func_8013C360(s32 *a0); +void func_8018ADD0(void) { + + extern s32 D_801E461C; + func_8013C360(&D_801E461C); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018ADF8); + + +extern void (*D_80190CAC[])(void); + +void func_8018AE14(void *a0) { + D_80190CAC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018AE50); + + +// @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_80190C9C; + +void func_8018AE98(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_80190C9C; + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + } +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018AF04); + + +extern void (*D_80190E28[])(void); + +void func_8018AF60(void *a0) { + D_80190E28[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018AF9C); + +extern s32 func_8018B1DC(void); + s32 func_8018B19C(void) { + return func_8018B1DC(); + } + + +extern void func_80146C3C(void); + void func_8018B1BC(void) { + func_80146C3C(); + } + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018B1DC); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018B234); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018B260); + + +extern void (*D_80190E8C[])(void); + +void func_8018B2A4(void *a0) { + D_80190E8C[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_8018B310(s32 *a0); +extern void func_80146CA0(void *a0); + +void func_8018B2E0(s32 *a0) { + func_8018B310(a0); + ((s32 (*)(s32))func_80146CA0)((s32)a0); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018B310); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018B390); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018B540); + + +extern void (*D_80190EB4[])(void); + +void func_8018B588(void *a0) { + D_80190EB4[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_8018B5F4(s32 arg0); + extern void func_80146CA0(void *a0); + void func_8018B5C4(s32 arg0) { + func_8018B5F4(arg0); + ((s32 (*)(s32))func_80146CA0)(arg0); + } + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018B5F4); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018B698); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018B774); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018B87C); + + +extern void (*D_80190EC4[])(void); + +void func_8018B8C4(void *a0) { + D_80190EC4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8018B900); + + + + diff --git a/src/ov_SC03_029/ov_SC03_029_jr_8017A4AC.c b/src/ov_SC03_029/ov_SC03_029_jr_8017A4AC.c index 489dd6460..83698fa94 100644 --- a/src/ov_SC03_029/ov_SC03_029_jr_8017A4AC.c +++ b/src/ov_SC03_029/ov_SC03_029_jr_8017A4AC.c @@ -2960,717 +2960,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801D9494; - extern s16 D_801D9496; - extern s16 D_801D9498; - extern s16 D_801D948C; - extern s16 D_801D948E; - extern s16 D_801D9490; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D9494, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D9496, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D9498, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D948C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D948E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D9490, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801D941C; -extern u16 D_801D949C; -extern u16 D_801D949E; -extern u16 D_801D94A0; -extern s16 D_801D99D0; - -void func_8017B1D8(void) { - func_8012A418(); - D_801D99D0 = 0; - D_801D941C = 0; - D_801D949C = D_80126B5E; - D_801D949E = D_80126B62; - D_801D94A0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018B150[]; - extern s16 D_801D9494; - extern s16 D_801D948C; - 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_8018B150[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018B150[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D9494; - s16 *p78C = &D_801D948C; - *(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_801D99D0 = 1; - D_801D941C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D943C; - extern SV4_8017B368 D_801D9444; - extern s16 D_801D9494; - extern s16 D_801D948C; - extern u16 D_8018B150; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801D943C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801D9444; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018B150)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018B150)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801D9494) = loc0; - (*(SV4_8017B368 *)&D_801D948C) = loc1; - D_801D99D0 = 1; - D_801D941C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018B150[]; - extern s16 D_801D9494; - extern s16 D_801D9496; - extern s16 D_801D9498; - extern s16 D_801D948C; - extern s16 D_801D948E; - extern s16 D_801D9490; - 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_8018B150[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018B150[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D9494; - s16 *p78C = &D_801D948C; - *(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_801D9496; - v798 = D_801D9498; - v78C = *p78C; - v78E = D_801D948E; - v790 = D_801D9490; - __asm__ __volatile__(""); - D_801D99D0 = 1; - D_801D941C = 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_801D941C; -extern s16 D_801D9494; -extern s16 D_801D9496; -extern s16 D_801D9498; -extern s16 D_801D948C; -extern s16 D_801D948E; -extern s16 D_801D9490; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801D941C = 0; - D_801D9494 = (s16) D_80114F30; - D_801D9496 = (s16) D_80114F34; - D_801D9498 = (s16) D_80114F38; - D_801D948C = (s16) D_80114F24; - D_801D948E = (s16) D_80114F28; - D_801D9490 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801D94AC; -extern s16 D_801D94AE; -extern s16 D_801D94B0; -extern s16 D_801D94B4; -extern s16 D_801D94B6; -extern s16 D_801D94B8; - -void func_8017B824(void) { - D_801D94AC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801D94AE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801D94B0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801D94B4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801D94B6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801D94B8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801D94AC; -extern s16 D_801D94AE; -extern s16 D_801D94B0; -extern s16 D_801D94B4; -extern s16 D_801D94B6; -extern s16 D_801D94B8; - -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_801D94AC; - D_80114F34 = D_801D94AE; - D_80114F38 = D_801D94B0; - D_80114F24 = D_801D94B4; - D_80114F28 = D_801D94B6; - D_80114F2C = D_801D94B8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801D9494), src[8..15] -> (*(S8_8017B8E8 *)&D_801D948C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801D9494) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801D948C) = ((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_801D949C; -extern u16 D_801D949E; -extern u16 D_801D94A0; - -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_801D941C; -extern short D_801D94A4; -extern short D_801D94A6; -extern short D_801D94A8; -extern s16 D_801D9494; -extern s16 D_801D9496; -extern s16 D_801D9498; -extern s16 D_801D948C; -extern s16 D_801D948E; -extern s16 D_801D9490; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D949C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D949E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D94A0); - (*(s16 *)&D_801D94A4) = buf[0]; - (*(s16 *)&D_801D94A6) = buf[1]; - (*(s16 *)&D_801D94A8) = buf[2]; - D_801D9494 = D_80114F30 + buf[0]; - D_801D941C = 0; - D_801D9496 = D_80114F34 + buf[1]; - D_801D9498 = D_80114F38 + buf[2]; - D_801D948C = D_80114F24 + buf[0]; - D_801D948E = D_80114F28 + buf[1]; - D_801D9490 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801D943C; -extern SV4 D_801D9444; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D9444) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801D943C = 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_801D9444 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D9444)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801D943C) = 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_801D9444) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801D9464[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801D9464; - 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_801D941C; -extern s16 D_801D99D0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801D941C = D_801D941C + 1; - if (D_801D941C >= 0x1F) { - D_801D99D0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801D941C; -extern s16 D_801D99D0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801D941C = D_801D941C + 1; - if (0x18 < D_801D941C) { - func_8012A4BC(); - D_801D99D0 = 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_801D941C; -extern void (*D_801D9460)(void); -extern short D_801D94A4; -extern short D_801D94A6; -extern short D_801D94A8; -extern s16 D_801D99D0; - -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_801D941C = D_801D941C + 1; - if (D_801D941C >= 0x19) { - if (D_801D9460 != 0) { - (*D_801D9460)(); - } else { - D_80114F30 = D_80114F30 + D_801D94A4; - D_80114F34 = D_80114F34 + D_801D94A6; - D_80114F38 = D_80114F38 + D_801D94A8; - D_80114F24 = D_80114F24 + D_801D94A4; - D_80114F28 = D_80114F28 + D_801D94A6; - D_80114F2C = D_80114F2C + D_801D94A8; - func_8012A4BC(); - } - D_801D99D0 = 0; - } -} - - - -extern void (*D_8018B1F0[])(void); - -void func_8017BE60(void *a0) { - D_8018B1F0[*(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 (*D_8018B214[])(void); - -void func_8017BEBC(void *a0) { - D_8018B214[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017BEF8); - -DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ - - -extern void (*D_8018B21C[])(void); - -void func_8017C150(void *a0) { - D_8018B21C[*(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_8018B208; - -void func_8017C18C(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_8018B208, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017C294); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017C3C4); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017C750); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017C9C8); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017CB10); - - -extern void (*D_8018B334[])(void); - -void func_8017CC90(void *a0) { - D_8018B334[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017CCCC); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017CD18); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017CE0C); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017CE8C); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017CF40); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017CFAC); - -extern void func_8012C218(void); -void func_8017D038(void) { - func_8012C218(); -} - - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017D058); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017D0AC); - - -extern void (*D_8018B38C[])(void); - -void func_8017D0E8(void *a0) { - D_8018B38C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017D124); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017D174); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017D1D0); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017D254); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017D3BC); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017D408); - - -extern void (*D_8018B3A0[])(void); - -void func_8017D714(void *a0) { - D_8018B3A0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017D750); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017D790); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017D800); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017D88C); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017D960); - - -extern void (*D_8018B3B4[])(void); - -void func_8017D9B4(void *a0) { - D_8018B3B4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017D9F0); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017DAA4); - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017A4AC", func_8017DB00); diff --git a/src/ov_SC03_029/ov_SC03_029_jr_8017AE2C.c b/src/ov_SC03_029/ov_SC03_029_jr_8017AE2C.c new file mode 100644 index 000000000..dbb7aebc1 --- /dev/null +++ b/src/ov_SC03_029/ov_SC03_029_jr_8017AE2C.c @@ -0,0 +1,3609 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80189D48; +extern u8 D_80189CB8; +extern u8 D_80189C94; +extern u8 D_80189C70; +extern u8 D_80189D24; +extern u8 D_80189D00; +extern u8 D_80189CDC; +extern u8 D_80189C4C; +extern void func_80145934(void); +extern u8 D_80189DD8; +extern u8 D_80189DB4; +extern u8 D_80189D90; +extern u8 D_80189D6C; +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_801891D0[]; +extern unsigned char D_80189200[]; +extern unsigned char D_80189250[]; +extern unsigned char D_80189280[]; +extern unsigned char D_801892B0[]; +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(void); +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_80189300[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_801893C8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80189450[]; +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_80189458; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801D8318; +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_801D831C; +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_80189488; +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 void 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_80189530[])(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_80189554[])(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_80189544; +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_80189568[])(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_80189574[]; +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_80189584[])(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_8018959C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018958C; +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_801895B0[])(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_801895CC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801895BC; +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_801895E0[])(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_801895F4[])(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_80189608; +extern void (*D_80189630[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80189610; +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_8018967C[])(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_80189680[])(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(void *a0); +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_80189AE4[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80189AF4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801D8350; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80189B1C[])(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_80189AFC; +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_80189B0C; +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_80189B5C[])(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_80189B64[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80189B30; +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_80189B70[])(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_80189B40; +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_801D8358; +extern s32 D_801D8364; +extern s32 D_801D8368; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80189BAC[])(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_80189B80[]; +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_801D8360; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80189DFC[])(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_80189C1C[]; +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_80189EA0[])(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_80189FF4[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80189E10; +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_80189FFC[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80189E20; +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_80189E40; +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_8018A004[])(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(void); +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_8018A02C[])(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_8018A038[])(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_80189EAC[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018A0DC; +extern void func_8015D380(s32 a0); +extern unsigned char D_801891C0[]; +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_8018A0F0[]; +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_8018A12C[]; +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_8018A174; +extern u16 D_8018A176; +extern u16 D_8018A178; +extern s32 D_8018A17C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018A184; +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_80189E90; +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_8018A208[]; +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_8018A2B8[])(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_8018A2E8[]; +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_8018A34C; +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_801D8370[]; +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_8018A370[])(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_801D83C8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018A3B8[])(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_8018A3A8; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801D7AD8[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_8018A3C0[])(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_8018A414[])(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_8018A3DC; +extern s16 D_8018A410; +extern s16 D_8018A40E; +extern s16 D_8018A40C; +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_8018A420[])(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_801D8428; +extern u8 D_801D8429; +extern u8 D_801D842A; +extern u8 D_801D842B; +extern u8 D_801D842C; +extern u8 D_801D842D; +extern u8 D_801D842E; +extern u8 D_801D842F; +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_8018A430[])(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_801D8468; +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_8018A474[])(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_8018A4F0[]; +extern s32 D_8018A510[]; +extern u8 D_8018A58C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018A5AC[]; +extern u8 D_8018A5CC[]; +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_8018A668[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018A6E4[])(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_801D7AE8; +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_8018A6F0[])(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_8018A6F8[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018A7C0[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018A7D0[])(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_8018A7E0[])(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_8018A7EC[])(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_8018A74C[]; +extern u8 D_8018A760[]; +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_8018A804[])(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_8018A80C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018A814[])(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_8018A81C[])(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_8018A824[])(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_8018A82C[])(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_8018A834[])(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_8018A8E8[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018A8F0[])(void); +extern void func_80169F00(void *a0); +extern char D_8018A8A0[]; +extern char D_8018A860[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018A928[])(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_8018A934[])(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_8018A97C[])(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_8018A9F8[])(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_801D8788; +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_8018A9EC[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018AA30[]; +extern unsigned short D_8018AA38[]; +extern unsigned short D_8018AA40[]; +extern unsigned char D_801D8790[]; +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_801D8788; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018AA48[])(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_801D88C4; +extern M2C_UNK D_801D88C8; +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_801D8850; +extern void (*D_8018AA78[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801D88CC[]; +extern u8 D_801D88D4[]; +extern u8 D_801D8884[]; +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_8018AA80[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018AA9C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018AAA4[])(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_8018AB0C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018AAB0; +extern u8 D_8018AABC; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018AB40[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018AB48[])(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_8018AB9C[])(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_8018ABD0[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018ABC0[]; +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_8018ABEC; +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); +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_8018AC64[])(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_8018AC6C[])(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_8018AC74[])(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_8018AC7C[])(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_8018AC84[])(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_8018AC8C[])(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_8018AC98[])(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_8018ACA4[])(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_8018ACB0[])(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_8018ACC0[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018ACD0[])(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_8018ACD8[])(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_8018ACE0[])(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_8018ACE8[])(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_8018ACF0[])(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_8018ACF8[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018AD00[])(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_8018AD08[])(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_8018AD10[])(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_8018AD18[])(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_8018AD20[])(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_8018AD28[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018AD30[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018AD38[])(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_8018AD40[])(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_8018AD48[])(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_8018AD50[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018AD58[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018AD60[])(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_8018AD68[])(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_8018AD70[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018AD78[])(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_8018AD80[])(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_8018ADC4[])(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_8018AD88; +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_8018ADF4[])(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_8018AE30[])(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(s32); +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_8018AE88[])(); +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_8018AE98[])(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_8018AEA0[])(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_8018B008[])(); +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_8018B014[])(); +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_801D7D30; +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 int func_801789AC(void); +extern s16 D_801D99D0; +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_801D9008; +extern short D_801D9A44; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801D9434; +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_801D945C; +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_801D9418; +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_801D99A0; +extern s16 D_801D99A2; +extern s16 D_801D99AC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801D99A0; + + 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_801D99AC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801D99A0+0xC == &D_801D99AC; 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_801D99A0 + 0xC)) < 0x101) { + D_801D99A0 = 0; + D_801D99A2 = 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_801D99AC); + 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_801D99A0 + 0xC)) < 0x101) { + D_801D99A0 = 0; + D_801D99A2 = 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_801D9494; + extern s16 D_801D9496; + extern s16 D_801D9498; + extern s16 D_801D948C; + extern s16 D_801D948E; + extern s16 D_801D9490; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D9494, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D9496, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D9498, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D948C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D948E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D9490, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801D941C; +extern u16 D_801D949C; +extern u16 D_801D949E; +extern u16 D_801D94A0; +extern s16 D_801D99D0; + +void func_8017B1D8(void) { + func_8012A418(); + D_801D99D0 = 0; + D_801D941C = 0; + D_801D949C = D_80126B5E; + D_801D949E = D_80126B62; + D_801D94A0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018B150[]; + extern s16 D_801D9494; + extern s16 D_801D948C; + 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_8018B150[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018B150[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D9494; + s16 *p78C = &D_801D948C; + *(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_801D99D0 = 1; + D_801D941C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D943C; + extern SV4_8017B368 D_801D9444; + extern s16 D_801D9494; + extern s16 D_801D948C; + extern u16 D_8018B150; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801D943C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801D9444; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018B150)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018B150)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801D9494) = loc0; + (*(SV4_8017B368 *)&D_801D948C) = loc1; + D_801D99D0 = 1; + D_801D941C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018B150[]; + extern s16 D_801D9494; + extern s16 D_801D9496; + extern s16 D_801D9498; + extern s16 D_801D948C; + extern s16 D_801D948E; + extern s16 D_801D9490; + 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_8018B150[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018B150[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D9494; + s16 *p78C = &D_801D948C; + *(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_801D9496; + v798 = D_801D9498; + v78C = *p78C; + v78E = D_801D948E; + v790 = D_801D9490; + __asm__ __volatile__(""); + D_801D99D0 = 1; + D_801D941C = 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_801D941C; +extern s16 D_801D9494; +extern s16 D_801D9496; +extern s16 D_801D9498; +extern s16 D_801D948C; +extern s16 D_801D948E; +extern s16 D_801D9490; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801D941C = 0; + D_801D9494 = (s16) D_80114F30; + D_801D9496 = (s16) D_80114F34; + D_801D9498 = (s16) D_80114F38; + D_801D948C = (s16) D_80114F24; + D_801D948E = (s16) D_80114F28; + D_801D9490 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801D94AC; +extern s16 D_801D94AE; +extern s16 D_801D94B0; +extern s16 D_801D94B4; +extern s16 D_801D94B6; +extern s16 D_801D94B8; + +void func_8017B824(void) { + D_801D94AC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801D94AE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801D94B0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801D94B4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801D94B6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801D94B8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801D94AC; +extern s16 D_801D94AE; +extern s16 D_801D94B0; +extern s16 D_801D94B4; +extern s16 D_801D94B6; +extern s16 D_801D94B8; + +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_801D94AC; + D_80114F34 = D_801D94AE; + D_80114F38 = D_801D94B0; + D_80114F24 = D_801D94B4; + D_80114F28 = D_801D94B6; + D_80114F2C = D_801D94B8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801D9494), src[8..15] -> (*(S8_8017B8E8 *)&D_801D948C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801D9494) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801D948C) = ((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_801D949C; +extern u16 D_801D949E; +extern u16 D_801D94A0; + +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_801D941C; +extern short D_801D94A4; +extern short D_801D94A6; +extern short D_801D94A8; +extern s16 D_801D9494; +extern s16 D_801D9496; +extern s16 D_801D9498; +extern s16 D_801D948C; +extern s16 D_801D948E; +extern s16 D_801D9490; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D949C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D949E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D94A0); + (*(s16 *)&D_801D94A4) = buf[0]; + (*(s16 *)&D_801D94A6) = buf[1]; + (*(s16 *)&D_801D94A8) = buf[2]; + D_801D9494 = D_80114F30 + buf[0]; + D_801D941C = 0; + D_801D9496 = D_80114F34 + buf[1]; + D_801D9498 = D_80114F38 + buf[2]; + D_801D948C = D_80114F24 + buf[0]; + D_801D948E = D_80114F28 + buf[1]; + D_801D9490 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801D943C; +extern SV4 D_801D9444; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D9444) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801D943C = 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_801D9444 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D9444)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801D943C) = 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_801D9444) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801D9464[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801D9464; + 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_801D941C; +extern s16 D_801D99D0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801D941C = D_801D941C + 1; + if (D_801D941C >= 0x1F) { + D_801D99D0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801D941C; +extern s16 D_801D99D0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801D941C = D_801D941C + 1; + if (0x18 < D_801D941C) { + func_8012A4BC(); + D_801D99D0 = 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_801D941C; +extern void (*D_801D9460)(void); +extern short D_801D94A4; +extern short D_801D94A6; +extern short D_801D94A8; +extern s16 D_801D99D0; + +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_801D941C = D_801D941C + 1; + if (D_801D941C >= 0x19) { + if (D_801D9460 != 0) { + (*D_801D9460)(); + } else { + D_80114F30 = D_80114F30 + D_801D94A4; + D_80114F34 = D_80114F34 + D_801D94A6; + D_80114F38 = D_80114F38 + D_801D94A8; + D_80114F24 = D_80114F24 + D_801D94A4; + D_80114F28 = D_80114F28 + D_801D94A6; + D_80114F2C = D_80114F2C + D_801D94A8; + func_8012A4BC(); + } + D_801D99D0 = 0; + } +} + + + +extern void (*D_8018B1F0[])(void); + +void func_8017BE60(void *a0) { + D_8018B1F0[*(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 (*D_8018B214[])(void); + +void func_8017BEBC(void *a0) { + D_8018B214[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017BEF8); + +DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ + + +extern void (*D_8018B21C[])(void); + +void func_8017C150(void *a0) { + D_8018B21C[*(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_8018B208; + +void func_8017C18C(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_8018B208, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017C294); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017C3C4); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017C750); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017C9C8); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017CB10); + + +extern void (*D_8018B334[])(void); + +void func_8017CC90(void *a0) { + D_8018B334[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017CCCC); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017CD18); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017CE0C); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017CE8C); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017CF40); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017CFAC); + +extern void func_8012C218(void); +void func_8017D038(void) { + func_8012C218(); +} + + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017D058); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017D0AC); + + +extern void (*D_8018B38C[])(void); + +void func_8017D0E8(void *a0) { + D_8018B38C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017D124); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017D174); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017D1D0); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017D254); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017D3BC); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017D408); + + +extern void (*D_8018B3A0[])(void); + +void func_8017D714(void *a0) { + D_8018B3A0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017D750); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017D790); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017D800); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017D88C); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017D960); + + +extern void (*D_8018B3B4[])(void); + +void func_8017D9B4(void *a0) { + D_8018B3B4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017D9F0); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017DAA4); + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017AE2C", func_8017DB00); + diff --git a/src/ov_SC03_030/ov_SC03_030_jr_8017A4AC.c b/src/ov_SC03_030/ov_SC03_030_jr_8017A4AC.c index 00898866b..80bd07319 100644 --- a/src/ov_SC03_030/ov_SC03_030_jr_8017A4AC.c +++ b/src/ov_SC03_030/ov_SC03_030_jr_8017A4AC.c @@ -2967,1042 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801E1A8C; - extern s16 D_801E1A8E; - extern s16 D_801E1A90; - extern s16 D_801E1A84; - extern s16 D_801E1A86; - extern s16 D_801E1A88; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801E1A8C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801E1A8E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801E1A90, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801E1A84, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801E1A86, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801E1A88, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801E1A14; -extern u16 D_801E1A94; -extern u16 D_801E1A96; -extern u16 D_801E1A98; -extern s16 D_801E1BC8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801E1BC8 = 0; - D_801E1A14 = 0; - D_801E1A94 = D_80126B5E; - D_801E1A96 = D_80126B62; - D_801E1A98 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018578C[]; - extern s16 D_801E1A8C; - extern s16 D_801E1A84; - 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_8018578C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018578C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E1A8C; - s16 *p78C = &D_801E1A84; - *(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_801E1BC8 = 1; - D_801E1A14 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801E1A34; - extern SV4_8017B368 D_801E1A3C; - extern s16 D_801E1A8C; - extern s16 D_801E1A84; - extern u16 D_8018578C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801E1A34; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801E1A3C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018578C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018578C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801E1A8C) = loc0; - (*(SV4_8017B368 *)&D_801E1A84) = loc1; - D_801E1BC8 = 1; - D_801E1A14 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018578C[]; - extern s16 D_801E1A8C; - extern s16 D_801E1A8E; - extern s16 D_801E1A90; - extern s16 D_801E1A84; - extern s16 D_801E1A86; - extern s16 D_801E1A88; - 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_8018578C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018578C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E1A8C; - s16 *p78C = &D_801E1A84; - *(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_801E1A8E; - v798 = D_801E1A90; - v78C = *p78C; - v78E = D_801E1A86; - v790 = D_801E1A88; - __asm__ __volatile__(""); - D_801E1BC8 = 1; - D_801E1A14 = 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_801E1A14; -extern s16 D_801E1A8C; -extern s16 D_801E1A8E; -extern s16 D_801E1A90; -extern s16 D_801E1A84; -extern s16 D_801E1A86; -extern s16 D_801E1A88; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801E1A14 = 0; - D_801E1A8C = (s16) D_80114F30; - D_801E1A8E = (s16) D_80114F34; - D_801E1A90 = (s16) D_80114F38; - D_801E1A84 = (s16) D_80114F24; - D_801E1A86 = (s16) D_80114F28; - D_801E1A88 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801E1AA4; -extern s16 D_801E1AA6; -extern s16 D_801E1AA8; -extern s16 D_801E1AAC; -extern s16 D_801E1AAE; -extern s16 D_801E1AB0; - -void func_8017B824(void) { - D_801E1AA4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801E1AA6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801E1AA8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801E1AAC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801E1AAE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801E1AB0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801E1AA4; -extern s16 D_801E1AA6; -extern s16 D_801E1AA8; -extern s16 D_801E1AAC; -extern s16 D_801E1AAE; -extern s16 D_801E1AB0; - -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_801E1AA4; - D_80114F34 = D_801E1AA6; - D_80114F38 = D_801E1AA8; - D_80114F24 = D_801E1AAC; - D_80114F28 = D_801E1AAE; - D_80114F2C = D_801E1AB0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801E1A8C), src[8..15] -> (*(S8_8017B8E8 *)&D_801E1A84) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801E1A8C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801E1A84) = ((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_801E1A94; -extern u16 D_801E1A96; -extern u16 D_801E1A98; - -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_801E1A14; -extern short D_801E1A9C; -extern short D_801E1A9E; -extern short D_801E1AA0; -extern s16 D_801E1A8C; -extern s16 D_801E1A8E; -extern s16 D_801E1A90; -extern s16 D_801E1A84; -extern s16 D_801E1A86; -extern s16 D_801E1A88; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801E1A94); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801E1A96); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801E1A98); - (*(s16 *)&D_801E1A9C) = buf[0]; - (*(s16 *)&D_801E1A9E) = buf[1]; - (*(s16 *)&D_801E1AA0) = buf[2]; - D_801E1A8C = D_80114F30 + buf[0]; - D_801E1A14 = 0; - D_801E1A8E = D_80114F34 + buf[1]; - D_801E1A90 = D_80114F38 + buf[2]; - D_801E1A84 = D_80114F24 + buf[0]; - D_801E1A86 = D_80114F28 + buf[1]; - D_801E1A88 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801E1A34; -extern SV4 D_801E1A3C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801E1A3C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801E1A34 = 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_801E1A3C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801E1A3C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801E1A34) = 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_801E1A3C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801E1A5C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801E1A5C; - 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_801E1A14; -extern s16 D_801E1BC8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801E1A14 = D_801E1A14 + 1; - if (D_801E1A14 >= 0x1F) { - D_801E1BC8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801E1A14; -extern s16 D_801E1BC8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801E1A14 = D_801E1A14 + 1; - if (0x18 < D_801E1A14) { - func_8012A4BC(); - D_801E1BC8 = 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_801E1A14; -extern void (*D_801E1A58)(void); -extern short D_801E1A9C; -extern short D_801E1A9E; -extern short D_801E1AA0; -extern s16 D_801E1BC8; - -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_801E1A14 = D_801E1A14 + 1; - if (D_801E1A14 >= 0x19) { - if (D_801E1A58 != 0) { - (*D_801E1A58)(); - } else { - D_80114F30 = D_80114F30 + D_801E1A9C; - D_80114F34 = D_80114F34 + D_801E1A9E; - D_80114F38 = D_80114F38 + D_801E1AA0; - D_80114F24 = D_80114F24 + D_801E1A9C; - D_80114F28 = D_80114F28 + D_801E1A9E; - D_80114F2C = D_80114F2C + D_801E1AA0; - func_8012A4BC(); - } - D_801E1BC8 = 0; - } -} - - - -extern void (*D_8018582C[])(void); - -void func_8017BE60(void *a0) { - D_8018582C[*(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 (*D_80185850[])(void); - -void func_8017BEBC(void *a0) { - D_80185850[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017BEF8); - -DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ - - -extern void (*D_80185858[])(void); - -void func_8017C150(void *a0) { - D_80185858[*(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_80185844; - -void func_8017C18C(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_80185844, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017C294); - -DEFINE_func_8017C66C() /* dedup: shared engine-core @0x8017C66C (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (126 ins) - -DEFINE_func_8017C710() /* dedup: shared engine-core @0x8017C710 (src/shared) */ - - -DEFINE_func_8017C908() /* dedup: shared engine-core @0x8017C908 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017C974); - - -extern void (*D_801858D8[])(void); - -void func_8017D840(void *a0) { - D_801858D8[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017D87C); - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017D8C0(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_801858E0[])(void); - -void func_8017D8E4(void *a0) { - D_801858E0[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017D920); - - -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_8017D960(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_8017D9DC(void) { - func_800D1EBC(); - } - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017D9FC); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017DA24); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017DA4C); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017DA9C); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017DAFC); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017DB98); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017DC20); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017DC88); - -extern s32 func_80171990(u8 *a0); - extern void func_8017DD08(s32); - void func_8017DCD8(s32 arg0) { - ((s32 (*)(s32))func_80171990)(arg0); - func_8017DD08(arg0); - } - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017DD08); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017DD80); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017DE60); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017DEB0); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017DF1C); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017DF54); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017DFA0); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017E090); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017E194); - -extern void func_8017E1E8(void *a0); - void func_8017E1BC(u8 *a0) { - *(u16 *)(a0 + 0xAE) |= 0xFF00; - ((void (*)(void))func_8017E1E8)(); - } - - -void func_8017E1E8(void *a0) { - *(u16 *)((char *)a0 + 0xaa) &= 0xff00; - *(u16 *)((char *)a0 + 0xac) &= 0xff00; - } - - -extern s32 func_80012DBC(s32 arg0, s32 arg1, s32 arg2, s32 arg3); - void func_8017E204(void *param_1) { - *(short *)((char *)param_1 + 0x132) = func_80012DBC(*(short *)((char *)param_1 + 0x132), 0, - 0xa, 1); - } - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017E240); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017E2A0); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017E2C8); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017E354); - - -extern void (*D_80185960[])(void); - -void func_8017E3F4(void *a0) { - D_80185960[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017E430); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017E484); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017E50C); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017E5F8); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017E790); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017E7D4); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017EB98); - - -extern void (*D_80185974[])(void); - -void func_8017EBF8(void *a0) { - D_80185974[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017EC34); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017ECA8); - - -extern void (*D_8018597C[])(void); - -void func_8017ED30(void *a0) { - D_8018597C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017ED6C); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017EDD4); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017EEE0); - -extern void func_8012AD80(s32 a0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C098(s32 a0); -void func_8017EFD8(s32 a0) { - func_8012AD80(a0); - if (func_8012BEE8(a0)) { - func_8012C098(a0); - } -} - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017F018); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017F0E8); - - -extern void (*D_80186160[])(void); - -void func_8017F17C(void *a0) { - D_80186160[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017F1B8); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017F26C); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017F5D8); - - -// @class: struct -// @stuck: none — MATCH (fn-ptr table %lo-fold via extern array of code ptrs) - -extern code_fn D_80186494[]; - -extern s32 func_8012C0EC(s32 a0); - -void func_8017F670(int param_1) -{ - D_80186494[*(unsigned short *)(param_1 + 2)](); - ((void (*)(int))func_8012C0EC)(param_1); - return; -} - - -extern s32 func_8012AD50(void *a0); - void func_8017F6C0(void) { - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017F6E0); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017F8BC); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017FA6C); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017FB04); - - -extern void (*D_8018686C[])(void); - -void func_8017FC50(void *a0) { - D_8018686C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017FC8C); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8017FCBC); - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80180054); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_801801E8); - - -extern void (*D_80186884[])(void); - -void func_80180280(void *a0) { - D_80186884[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_801802BC); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80180398); - - -extern void (*D_8018688C[])(void); - -void func_80180458(void *a0) { - D_8018688C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80180494); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_801804F4); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8018055C); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_801805BC); - -void func_80180660(void) { -} - - -extern void (*D_801868A4[])(void); - -void func_80180668(void *a0) { - D_801868A4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_801806A4); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80180714); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_801807A0); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80180800); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80180880); - -void func_801808E8(void) { -} - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_801808F0); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80180960); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80180A3C); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80180B04); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80180B44); - - -extern void (*D_801869A4[])(void); - -void func_80180CA0(void *a0) { - D_801869A4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80180CDC); - -extern s32 func_80128ED8(void *a0, void *a1); -extern void func_801292C8(void); -void func_80180D6C(s32 a0) { - if (func_80128ED8((void *)*(s32 *)(a0 + 0x20), (void *)(a0 + 0x24)) != 0) { - ((void (*)(s32))func_801292C8)(a0); - } -} - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80180DAC); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80180E0C); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80180F14); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8018101C); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8018107C); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8018112C); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80181178); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80181214); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8018127C); - - -extern void (*D_801869F0[])(void); - -void func_80181300(void *a0) { - D_801869F0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8018133C); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_801813BC); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_8018141C); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_801814F4); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80181708); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80181824); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80181A60); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80181C08); - - -extern void (*D_80186A44[])(void); - -void func_80181C44(void *a0) { - D_80186A44[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80181C80); - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017A4AC", func_80181D48); - - -extern void func_80016714(void *a0, s32 a1); - extern void func_8012C218(void *a0); - void func_80181DC0(s32 param_1) { - s32 iVar1; - iVar1 = *(s32 *)(param_1 + 0xcc); - ((void (*)(s32 *, s32))func_80016714)((s32 *)iVar1, 0x38); - ((void (*)(s32))func_8012C218)(param_1); - } - - -extern s32 func_80181DF8(void); - -s32 func_80181DF8(void) { - return 0x1A; -} - - - diff --git a/src/ov_SC03_030/ov_SC03_030_jr_8017AE2C.c b/src/ov_SC03_030/ov_SC03_030_jr_8017AE2C.c new file mode 100644 index 000000000..4f466429b --- /dev/null +++ b/src/ov_SC03_030/ov_SC03_030_jr_8017AE2C.c @@ -0,0 +1,3940 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80184384; +extern u8 D_801842F4; +extern u8 D_801842D0; +extern u8 D_801842AC; +extern u8 D_80184360; +extern u8 D_8018433C; +extern u8 D_80184318; +extern u8 D_80184288; +extern void func_80145934(void); +extern u8 D_80184414; +extern u8 D_801843F0; +extern u8 D_801843CC; +extern u8 D_801843A8; +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_8018380C[]; +extern unsigned char D_8018383C[]; +extern unsigned char D_8018388C[]; +extern unsigned char D_801838BC[]; +extern unsigned char D_801838EC[]; +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(void); +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_8018393C[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80183A04[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80183A8C[]; +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_80183A94; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801E0910; +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_801E0914; +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_80183AC4; +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 void 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_80183B6C[])(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_80183B90[])(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_80183B80; +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_80183BA4[])(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_80183BB0[]; +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_80183BC0[])(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_80183BD8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80183BC8; +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_80183BEC[])(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_80183C08[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80183BF8; +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_80183C1C[])(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_80183C30[])(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_80183C44; +extern void (*D_80183C6C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80183C4C; +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_80183CB8[])(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_80183CBC[])(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(void *a0); +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_80184120[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80184130[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801E0948; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184158[])(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_80184138; +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_80184148; +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_80184198[])(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_801841A0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018416C; +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_801841AC[])(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_8018417C; +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_801E0950; +extern s32 D_801E095C; +extern s32 D_801E0960; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801841E8[])(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_801841BC[]; +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_801E0958; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80184438[])(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_80184258[]; +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_801844DC[])(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_80184630[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018444C; +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_80184638[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018445C; +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_8018447C; +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_80184640[])(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(void); +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_80184668[])(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_80184674[])(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_801844E8[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80184718; +extern void func_8015D380(s32 a0); +extern unsigned char D_801837FC[]; +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_8018472C[]; +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_80184768[]; +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_801847B0; +extern u16 D_801847B2; +extern u16 D_801847B4; +extern s32 D_801847B8; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_801847C0; +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_801844CC; +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_80184844[]; +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_801848F4[])(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_80184924[]; +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_80184988; +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_801E0968[]; +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_801849AC[])(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_801E09C0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_801849F4[])(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_801849E4; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801E017C[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_801849FC[])(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_80184A50[])(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_80184A18; +extern s16 D_80184A4C; +extern s16 D_80184A4A; +extern s16 D_80184A48; +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_80184A5C[])(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_801E0A20; +extern u8 D_801E0A21; +extern u8 D_801E0A22; +extern u8 D_801E0A23; +extern u8 D_801E0A24; +extern u8 D_801E0A25; +extern u8 D_801E0A26; +extern u8 D_801E0A27; +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_80184A6C[])(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_801E0A60; +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_80184AB0[])(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_80184B2C[]; +extern s32 D_80184B4C[]; +extern u8 D_80184BC8[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80184BE8[]; +extern u8 D_80184C08[]; +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_80184CA4[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80184D20[])(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_801E018C; +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_80184D2C[])(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_80184D34[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80184DFC[])(void); +extern void func_80166618(void *a0); +extern void (*D_80184E0C[])(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_80184E1C[])(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_80184E28[])(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_80184D88[]; +extern u8 D_80184D9C[]; +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_80184E40[])(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_80184E48[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80184E50[])(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_80184E58[])(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_80184E60[])(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_80184E68[])(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_80184E70[])(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_80184F24[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80184F2C[])(void); +extern void func_80169F00(void *a0); +extern char D_80184EDC[]; +extern char D_80184E9C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80184F64[])(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_80184F70[])(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_80184FB8[])(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_80185034[])(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_801E0D80; +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_80185028[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018506C[]; +extern unsigned short D_80185074[]; +extern unsigned short D_8018507C[]; +extern unsigned char D_801E0D88[]; +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_801E0D80; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80185084[])(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_801E0EBC; +extern M2C_UNK D_801E0EC0; +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_801E0E48; +extern void (*D_801850B4[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801E0EC4[]; +extern u8 D_801E0ECC[]; +extern u8 D_801E0E7C[]; +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_801850BC[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801850D8[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801850E0[])(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_80185148[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801850EC; +extern u8 D_801850F8; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018517C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80185184[])(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_801851D8[])(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_8018520C[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801851FC[]; +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_80185228; +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); +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_801852A0[])(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_801852A8[])(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_801852B0[])(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_801852B8[])(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_801852C0[])(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_801852C8[])(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_801852D4[])(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_801852E0[])(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_801852EC[])(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_801852FC[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018530C[])(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_80185314[])(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_8018531C[])(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_80185324[])(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_8018532C[])(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_80185334[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018533C[])(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_80185344[])(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_8018534C[])(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_80185354[])(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_8018535C[])(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_80185364[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018536C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80185374[])(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_8018537C[])(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_80185384[])(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_8018538C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80185394[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018539C[])(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_801853A4[])(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_801853AC[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801853B4[])(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_801853BC[])(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_80185400[])(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_801853C4; +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_80185430[])(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_8018546C[])(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(s32); +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_801854C4[])(); +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_801854D4[])(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_801854DC[])(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_80185644[])(); +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_80185650[])(); +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_801E03D4; +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 int func_801789AC(void); +extern s16 D_801E1BC8; +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_801E1600; +extern short D_801E1C3C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801E1A2C; +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_801E1A54; +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_801E1A10; +extern s32 func_8017A3B0(void); +extern short D_801E1A4C; +extern short D_801E1A48; +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_801E1B98; +extern s16 D_801E1B9A; +extern s16 D_801E1BA4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801E1B98; + + 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_801E1BA4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801E1B98+0xC == &D_801E1BA4; 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_801E1B98 + 0xC)) < 0x101) { + D_801E1B98 = 0; + D_801E1B9A = 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_801E1BA4); + 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_801E1B98 + 0xC)) < 0x101) { + D_801E1B98 = 0; + D_801E1B9A = 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_801E1A8C; + extern s16 D_801E1A8E; + extern s16 D_801E1A90; + extern s16 D_801E1A84; + extern s16 D_801E1A86; + extern s16 D_801E1A88; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801E1A8C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801E1A8E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801E1A90, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801E1A84, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801E1A86, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801E1A88, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801E1A14; +extern u16 D_801E1A94; +extern u16 D_801E1A96; +extern u16 D_801E1A98; +extern s16 D_801E1BC8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801E1BC8 = 0; + D_801E1A14 = 0; + D_801E1A94 = D_80126B5E; + D_801E1A96 = D_80126B62; + D_801E1A98 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018578C[]; + extern s16 D_801E1A8C; + extern s16 D_801E1A84; + 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_8018578C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018578C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801E1A8C; + s16 *p78C = &D_801E1A84; + *(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_801E1BC8 = 1; + D_801E1A14 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801E1A34; + extern SV4_8017B368 D_801E1A3C; + extern s16 D_801E1A8C; + extern s16 D_801E1A84; + extern u16 D_8018578C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801E1A34; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801E1A3C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018578C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018578C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801E1A8C) = loc0; + (*(SV4_8017B368 *)&D_801E1A84) = loc1; + D_801E1BC8 = 1; + D_801E1A14 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018578C[]; + extern s16 D_801E1A8C; + extern s16 D_801E1A8E; + extern s16 D_801E1A90; + extern s16 D_801E1A84; + extern s16 D_801E1A86; + extern s16 D_801E1A88; + 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_8018578C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018578C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801E1A8C; + s16 *p78C = &D_801E1A84; + *(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_801E1A8E; + v798 = D_801E1A90; + v78C = *p78C; + v78E = D_801E1A86; + v790 = D_801E1A88; + __asm__ __volatile__(""); + D_801E1BC8 = 1; + D_801E1A14 = 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_801E1A14; +extern s16 D_801E1A8C; +extern s16 D_801E1A8E; +extern s16 D_801E1A90; +extern s16 D_801E1A84; +extern s16 D_801E1A86; +extern s16 D_801E1A88; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801E1A14 = 0; + D_801E1A8C = (s16) D_80114F30; + D_801E1A8E = (s16) D_80114F34; + D_801E1A90 = (s16) D_80114F38; + D_801E1A84 = (s16) D_80114F24; + D_801E1A86 = (s16) D_80114F28; + D_801E1A88 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801E1AA4; +extern s16 D_801E1AA6; +extern s16 D_801E1AA8; +extern s16 D_801E1AAC; +extern s16 D_801E1AAE; +extern s16 D_801E1AB0; + +void func_8017B824(void) { + D_801E1AA4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801E1AA6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801E1AA8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801E1AAC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801E1AAE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801E1AB0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801E1AA4; +extern s16 D_801E1AA6; +extern s16 D_801E1AA8; +extern s16 D_801E1AAC; +extern s16 D_801E1AAE; +extern s16 D_801E1AB0; + +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_801E1AA4; + D_80114F34 = D_801E1AA6; + D_80114F38 = D_801E1AA8; + D_80114F24 = D_801E1AAC; + D_80114F28 = D_801E1AAE; + D_80114F2C = D_801E1AB0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801E1A8C), src[8..15] -> (*(S8_8017B8E8 *)&D_801E1A84) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801E1A8C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801E1A84) = ((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_801E1A94; +extern u16 D_801E1A96; +extern u16 D_801E1A98; + +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_801E1A14; +extern short D_801E1A9C; +extern short D_801E1A9E; +extern short D_801E1AA0; +extern s16 D_801E1A8C; +extern s16 D_801E1A8E; +extern s16 D_801E1A90; +extern s16 D_801E1A84; +extern s16 D_801E1A86; +extern s16 D_801E1A88; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801E1A94); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801E1A96); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801E1A98); + (*(s16 *)&D_801E1A9C) = buf[0]; + (*(s16 *)&D_801E1A9E) = buf[1]; + (*(s16 *)&D_801E1AA0) = buf[2]; + D_801E1A8C = D_80114F30 + buf[0]; + D_801E1A14 = 0; + D_801E1A8E = D_80114F34 + buf[1]; + D_801E1A90 = D_80114F38 + buf[2]; + D_801E1A84 = D_80114F24 + buf[0]; + D_801E1A86 = D_80114F28 + buf[1]; + D_801E1A88 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801E1A34; +extern SV4 D_801E1A3C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801E1A3C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801E1A34 = 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_801E1A3C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801E1A3C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801E1A34) = 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_801E1A3C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801E1A5C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801E1A5C; + 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_801E1A14; +extern s16 D_801E1BC8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801E1A14 = D_801E1A14 + 1; + if (D_801E1A14 >= 0x1F) { + D_801E1BC8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801E1A14; +extern s16 D_801E1BC8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801E1A14 = D_801E1A14 + 1; + if (0x18 < D_801E1A14) { + func_8012A4BC(); + D_801E1BC8 = 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_801E1A14; +extern void (*D_801E1A58)(void); +extern short D_801E1A9C; +extern short D_801E1A9E; +extern short D_801E1AA0; +extern s16 D_801E1BC8; + +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_801E1A14 = D_801E1A14 + 1; + if (D_801E1A14 >= 0x19) { + if (D_801E1A58 != 0) { + (*D_801E1A58)(); + } else { + D_80114F30 = D_80114F30 + D_801E1A9C; + D_80114F34 = D_80114F34 + D_801E1A9E; + D_80114F38 = D_80114F38 + D_801E1AA0; + D_80114F24 = D_80114F24 + D_801E1A9C; + D_80114F28 = D_80114F28 + D_801E1A9E; + D_80114F2C = D_80114F2C + D_801E1AA0; + func_8012A4BC(); + } + D_801E1BC8 = 0; + } +} + + + +extern void (*D_8018582C[])(void); + +void func_8017BE60(void *a0) { + D_8018582C[*(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 (*D_80185850[])(void); + +void func_8017BEBC(void *a0) { + D_80185850[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017BEF8); + +DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ + + +extern void (*D_80185858[])(void); + +void func_8017C150(void *a0) { + D_80185858[*(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_80185844; + +void func_8017C18C(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_80185844, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017C294); + +DEFINE_func_8017C66C() /* dedup: shared engine-core @0x8017C66C (src/shared) */ + + +// @class: regalloc-order +// @stuck: none — MATCH (126 ins) + +DEFINE_func_8017C710() /* dedup: shared engine-core @0x8017C710 (src/shared) */ + + +DEFINE_func_8017C908() /* dedup: shared engine-core @0x8017C908 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017C974); + + +extern void (*D_801858D8[])(void); + +void func_8017D840(void *a0) { + D_801858D8[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017D87C); + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017D8C0(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_801858E0[])(void); + +void func_8017D8E4(void *a0) { + D_801858E0[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017D920); + + +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_8017D960(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_8017D9DC(void) { + func_800D1EBC(); + } + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017D9FC); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017DA24); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017DA4C); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017DA9C); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017DAFC); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017DB98); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017DC20); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017DC88); + +extern s32 func_80171990(u8 *a0); + extern void func_8017DD08(s32); + void func_8017DCD8(s32 arg0) { + ((s32 (*)(s32))func_80171990)(arg0); + func_8017DD08(arg0); + } + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017DD08); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017DD80); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017DE60); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017DEB0); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017DF1C); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017DF54); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017DFA0); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017E090); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017E194); + +extern void func_8017E1E8(void *a0); + void func_8017E1BC(u8 *a0) { + *(u16 *)(a0 + 0xAE) |= 0xFF00; + ((void (*)(void))func_8017E1E8)(); + } + + +void func_8017E1E8(void *a0) { + *(u16 *)((char *)a0 + 0xaa) &= 0xff00; + *(u16 *)((char *)a0 + 0xac) &= 0xff00; + } + + +extern s32 func_80012DBC(s32 arg0, s32 arg1, s32 arg2, s32 arg3); + void func_8017E204(void *param_1) { + *(short *)((char *)param_1 + 0x132) = func_80012DBC(*(short *)((char *)param_1 + 0x132), 0, + 0xa, 1); + } + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017E240); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017E2A0); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017E2C8); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017E354); + + +extern void (*D_80185960[])(void); + +void func_8017E3F4(void *a0) { + D_80185960[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017E430); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017E484); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017E50C); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017E5F8); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017E790); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017E7D4); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017EB98); + + +extern void (*D_80185974[])(void); + +void func_8017EBF8(void *a0) { + D_80185974[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017EC34); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017ECA8); + + +extern void (*D_8018597C[])(void); + +void func_8017ED30(void *a0) { + D_8018597C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017ED6C); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017EDD4); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017EEE0); + +extern void func_8012AD80(s32 a0); +extern s32 func_8012BEE8(s32 a0); +extern void func_8012C098(s32 a0); +void func_8017EFD8(s32 a0) { + func_8012AD80(a0); + if (func_8012BEE8(a0)) { + func_8012C098(a0); + } +} + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017F018); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017F0E8); + + +extern void (*D_80186160[])(void); + +void func_8017F17C(void *a0) { + D_80186160[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017F1B8); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017F26C); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017F5D8); + + +// @class: struct +// @stuck: none — MATCH (fn-ptr table %lo-fold via extern array of code ptrs) + +extern code_fn D_80186494[]; + +extern s32 func_8012C0EC(s32 a0); + +void func_8017F670(int param_1) +{ + D_80186494[*(unsigned short *)(param_1 + 2)](); + ((void (*)(int))func_8012C0EC)(param_1); + return; +} + + +extern s32 func_8012AD50(void *a0); + void func_8017F6C0(void) { + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017F6E0); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017F8BC); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017FA6C); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017FB04); + + +extern void (*D_8018686C[])(void); + +void func_8017FC50(void *a0) { + D_8018686C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017FC8C); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8017FCBC); + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80180054); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_801801E8); + + +extern void (*D_80186884[])(void); + +void func_80180280(void *a0) { + D_80186884[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_801802BC); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80180398); + + +extern void (*D_8018688C[])(void); + +void func_80180458(void *a0) { + D_8018688C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80180494); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_801804F4); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8018055C); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_801805BC); + +void func_80180660(void) { +} + + +extern void (*D_801868A4[])(void); + +void func_80180668(void *a0) { + D_801868A4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_801806A4); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80180714); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_801807A0); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80180800); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80180880); + +void func_801808E8(void) { +} + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_801808F0); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80180960); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80180A3C); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80180B04); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80180B44); + + +extern void (*D_801869A4[])(void); + +void func_80180CA0(void *a0) { + D_801869A4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80180CDC); + +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_801292C8(void); +void func_80180D6C(s32 a0) { + if (func_80128ED8((void *)*(s32 *)(a0 + 0x20), (void *)(a0 + 0x24)) != 0) { + ((void (*)(s32))func_801292C8)(a0); + } +} + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80180DAC); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80180E0C); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80180F14); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8018101C); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8018107C); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8018112C); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80181178); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80181214); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8018127C); + + +extern void (*D_801869F0[])(void); + +void func_80181300(void *a0) { + D_801869F0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8018133C); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_801813BC); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_8018141C); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_801814F4); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80181708); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80181824); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80181A60); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80181C08); + + +extern void (*D_80186A44[])(void); + +void func_80181C44(void *a0) { + D_80186A44[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80181C80); + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8017AE2C", func_80181D48); + + +extern void func_80016714(void *a0, s32 a1); + extern void func_8012C218(void *a0); + void func_80181DC0(s32 param_1) { + s32 iVar1; + iVar1 = *(s32 *)(param_1 + 0xcc); + ((void (*)(s32 *, s32))func_80016714)((s32 *)iVar1, 0x38); + ((void (*)(s32))func_8012C218)(param_1); + } + + +extern s32 func_80181DF8(void); + +s32 func_80181DF8(void) { + return 0x1A; +} + + + + diff --git a/src/ov_SC03_031/ov_SC03_031_jr_8017A4AC.c b/src/ov_SC03_031/ov_SC03_031_jr_8017A4AC.c index 07d174e35..3f64e8f99 100644 --- a/src/ov_SC03_031/ov_SC03_031_jr_8017A4AC.c +++ b/src/ov_SC03_031/ov_SC03_031_jr_8017A4AC.c @@ -2967,678 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801C5E8C; - extern s16 D_801C5E8E; - extern s16 D_801C5E90; - extern s16 D_801C5E84; - extern s16 D_801C5E86; - extern s16 D_801C5E88; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C5E8C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C5E8E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C5E90, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C5E84, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C5E86, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C5E88, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801C5E14; -extern u16 D_801C5E94; -extern u16 D_801C5E96; -extern u16 D_801C5E98; -extern s16 D_801C6230; - -void func_8017B1D8(void) { - func_8012A418(); - D_801C6230 = 0; - D_801C5E14 = 0; - D_801C5E94 = D_80126B5E; - D_801C5E96 = D_80126B62; - D_801C5E98 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80185CA8[]; - extern s16 D_801C5E8C; - extern s16 D_801C5E84; - 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_80185CA8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80185CA8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C5E8C; - s16 *p78C = &D_801C5E84; - *(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_801C6230 = 1; - D_801C5E14 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C5E34; - extern SV4_8017B368 D_801C5E3C; - extern s16 D_801C5E8C; - extern s16 D_801C5E84; - extern u16 D_80185CA8; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801C5E34; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801C5E3C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80185CA8)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80185CA8)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801C5E8C) = loc0; - (*(SV4_8017B368 *)&D_801C5E84) = loc1; - D_801C6230 = 1; - D_801C5E14 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80185CA8[]; - extern s16 D_801C5E8C; - extern s16 D_801C5E8E; - extern s16 D_801C5E90; - extern s16 D_801C5E84; - extern s16 D_801C5E86; - extern s16 D_801C5E88; - 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_80185CA8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80185CA8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C5E8C; - s16 *p78C = &D_801C5E84; - *(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_801C5E8E; - v798 = D_801C5E90; - v78C = *p78C; - v78E = D_801C5E86; - v790 = D_801C5E88; - __asm__ __volatile__(""); - D_801C6230 = 1; - D_801C5E14 = 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_801C5E14; -extern s16 D_801C5E8C; -extern s16 D_801C5E8E; -extern s16 D_801C5E90; -extern s16 D_801C5E84; -extern s16 D_801C5E86; -extern s16 D_801C5E88; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801C5E14 = 0; - D_801C5E8C = (s16) D_80114F30; - D_801C5E8E = (s16) D_80114F34; - D_801C5E90 = (s16) D_80114F38; - D_801C5E84 = (s16) D_80114F24; - D_801C5E86 = (s16) D_80114F28; - D_801C5E88 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801C5EA4; -extern s16 D_801C5EA6; -extern s16 D_801C5EA8; -extern s16 D_801C5EAC; -extern s16 D_801C5EAE; -extern s16 D_801C5EB0; - -void func_8017B824(void) { - D_801C5EA4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801C5EA6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801C5EA8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801C5EAC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801C5EAE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801C5EB0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801C5EA4; -extern s16 D_801C5EA6; -extern s16 D_801C5EA8; -extern s16 D_801C5EAC; -extern s16 D_801C5EAE; -extern s16 D_801C5EB0; - -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_801C5EA4; - D_80114F34 = D_801C5EA6; - D_80114F38 = D_801C5EA8; - D_80114F24 = D_801C5EAC; - D_80114F28 = D_801C5EAE; - D_80114F2C = D_801C5EB0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801C5E8C), src[8..15] -> (*(S8_8017B8E8 *)&D_801C5E84) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801C5E8C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801C5E84) = ((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_801C5E94; -extern u16 D_801C5E96; -extern u16 D_801C5E98; - -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_801C5E14; -extern short D_801C5E9C; -extern short D_801C5E9E; -extern short D_801C5EA0; -extern s16 D_801C5E8C; -extern s16 D_801C5E8E; -extern s16 D_801C5E90; -extern s16 D_801C5E84; -extern s16 D_801C5E86; -extern s16 D_801C5E88; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C5E94); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C5E96); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C5E98); - (*(s16 *)&D_801C5E9C) = buf[0]; - (*(s16 *)&D_801C5E9E) = buf[1]; - (*(s16 *)&D_801C5EA0) = buf[2]; - D_801C5E8C = D_80114F30 + buf[0]; - D_801C5E14 = 0; - D_801C5E8E = D_80114F34 + buf[1]; - D_801C5E90 = D_80114F38 + buf[2]; - D_801C5E84 = D_80114F24 + buf[0]; - D_801C5E86 = D_80114F28 + buf[1]; - D_801C5E88 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801C5E34; -extern SV4 D_801C5E3C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C5E3C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801C5E34 = 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_801C5E3C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C5E3C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801C5E34) = 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_801C5E3C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801C5E5C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801C5E5C; - 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_801C5E14; -extern s16 D_801C6230; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801C5E14 = D_801C5E14 + 1; - if (D_801C5E14 >= 0x1F) { - D_801C6230 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801C5E14; -extern s16 D_801C6230; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801C5E14 = D_801C5E14 + 1; - if (0x18 < D_801C5E14) { - func_8012A4BC(); - D_801C6230 = 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_801C5E14; -extern void (*D_801C5E58)(void); -extern short D_801C5E9C; -extern short D_801C5E9E; -extern short D_801C5EA0; -extern s16 D_801C6230; - -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_801C5E14 = D_801C5E14 + 1; - if (D_801C5E14 >= 0x19) { - if (D_801C5E58 != 0) { - (*D_801C5E58)(); - } else { - D_80114F30 = D_80114F30 + D_801C5E9C; - D_80114F34 = D_80114F34 + D_801C5E9E; - D_80114F38 = D_80114F38 + D_801C5EA0; - D_80114F24 = D_80114F24 + D_801C5E9C; - D_80114F28 = D_80114F28 + D_801C5E9E; - D_80114F2C = D_80114F2C + D_801C5EA0; - func_8012A4BC(); - } - D_801C6230 = 0; - } -} - - - -extern void (*D_80185D48[])(void); - -void func_8017BE60(void *a0) { - D_80185D48[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017BF88); - - -extern void (*D_80185D60[])(void); - -void func_8017C0E4(void *a0) { - D_80185D60[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017C120); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017C180); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017C2B0); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017C63C); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017C8B4); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017C9FC); - - -extern void (*D_80185E78[])(void); - -void func_8017CB7C(void *a0) { - D_80185E78[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017CBB8); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017CC04); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017CCF8); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017CD78); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017CE2C); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017CE98); - -extern void func_8012C218(void); -void func_8017CF24(void) { - func_8012C218(); -} - - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017CF44); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017CF98); - - -extern void (*D_80185ED0[])(void); - -void func_8017CFD4(void *a0) { - D_80185ED0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017D010); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017D060); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017D0BC); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017D140); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017D2A8); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017D2F4); - - -extern void (*D_80185EE4[])(void); - -void func_8017D600(void *a0) { - D_80185EE4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017D63C); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017D67C); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017D6EC); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017D778); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017D84C); - - -extern void (*D_80185EF8[])(void); - -void func_8017D8A0(void *a0) { - D_80185EF8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017D8DC); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017D990); - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017A4AC", func_8017D9EC); diff --git a/src/ov_SC03_031/ov_SC03_031_jr_8017AE2C.c b/src/ov_SC03_031/ov_SC03_031_jr_8017AE2C.c new file mode 100644 index 000000000..e722f2477 --- /dev/null +++ b/src/ov_SC03_031/ov_SC03_031_jr_8017AE2C.c @@ -0,0 +1,3576 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801848A0; +extern u8 D_80184810; +extern u8 D_801847EC; +extern u8 D_801847C8; +extern u8 D_8018487C; +extern u8 D_80184858; +extern u8 D_80184834; +extern u8 D_801847A4; +extern void func_80145934(void); +extern u8 D_80184930; +extern u8 D_8018490C; +extern u8 D_801848E8; +extern u8 D_801848C4; +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_80183D28[]; +extern unsigned char D_80183D58[]; +extern unsigned char D_80183DA8[]; +extern unsigned char D_80183DD8[]; +extern unsigned char D_80183E08[]; +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(void); +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_80183E58[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80183F20[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80183FA8[]; +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_80183FB0; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801C4D10; +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_801C4D14; +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_80183FE0; +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 void 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_80184088[])(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_801840AC[])(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_8018409C; +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_801840C0[])(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_801840CC[]; +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_801840DC[])(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_801840F4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801840E4; +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_80184108[])(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_80184124[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80184114; +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_80184138[])(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_8018414C[])(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_80184160; +extern void (*D_80184188[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80184168; +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_801841D4[])(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_801841D8[])(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(void *a0); +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_8018463C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018464C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801C4D48; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184674[])(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_80184654; +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_80184664; +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_801846B4[])(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_801846BC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80184688; +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_801846C8[])(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_80184698; +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_801C4D50; +extern s32 D_801C4D5C; +extern s32 D_801C4D60; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80184704[])(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_801846D8[]; +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_801C4D58; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80184954[])(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_80184774[]; +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_801849F8[])(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_80184B4C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80184968; +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_80184B54[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80184978; +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_80184998; +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_80184B5C[])(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(void); +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_80184B84[])(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_80184B90[])(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_80184A04[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80184C34; +extern void func_8015D380(s32 a0); +extern unsigned char D_80183D18[]; +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_80184C48[]; +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_80184C84[]; +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_80184CCC; +extern u16 D_80184CCE; +extern u16 D_80184CD0; +extern s32 D_80184CD4; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80184CDC; +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_801849E8; +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_80184D60[]; +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_80184E10[])(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_80184E40[]; +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_80184EA4; +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_801C4D68[]; +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_80184EC8[])(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_801C4DC0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80184F10[])(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_80184F00; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801C4620[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_80184F18[])(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_80184F6C[])(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_80184F34; +extern s16 D_80184F68; +extern s16 D_80184F66; +extern s16 D_80184F64; +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_80184F78[])(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_801C4E20; +extern u8 D_801C4E21; +extern u8 D_801C4E22; +extern u8 D_801C4E23; +extern u8 D_801C4E24; +extern u8 D_801C4E25; +extern u8 D_801C4E26; +extern u8 D_801C4E27; +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_80184F88[])(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_801C4E60; +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_80184FCC[])(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_80185048[]; +extern s32 D_80185068[]; +extern u8 D_801850E4[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80185104[]; +extern u8 D_80185124[]; +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_801851C0[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018523C[])(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_801C4630; +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_80185248[])(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_80185250[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80185318[])(void); +extern void func_80166618(void *a0); +extern void (*D_80185328[])(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_80185338[])(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_80185344[])(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_801852A4[]; +extern u8 D_801852B8[]; +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_8018535C[])(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_80185364[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018536C[])(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_80185374[])(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_8018537C[])(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_80185384[])(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_8018538C[])(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_80185440[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80185448[])(void); +extern void func_80169F00(void *a0); +extern char D_801853F8[]; +extern char D_801853B8[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80185480[])(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_8018548C[])(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_801854D4[])(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_80185550[])(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_801C5180; +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_80185544[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80185588[]; +extern unsigned short D_80185590[]; +extern unsigned short D_80185598[]; +extern unsigned char D_801C5188[]; +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_801C5180; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801855A0[])(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_801C52BC; +extern M2C_UNK D_801C52C0; +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_801C5248; +extern void (*D_801855D0[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801C52C4[]; +extern u8 D_801C52CC[]; +extern u8 D_801C527C[]; +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_801855D8[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801855F4[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801855FC[])(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_80185664[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80185608; +extern u8 D_80185614; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80185698[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801856A0[])(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_801856F4[])(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_80185728[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80185718[]; +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_80185744; +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); +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_801857BC[])(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_801857C4[])(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_801857CC[])(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_801857D4[])(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_801857DC[])(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_801857E4[])(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_801857F0[])(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_801857FC[])(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_80185808[])(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_80185818[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80185828[])(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_80185830[])(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_80185838[])(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_80185840[])(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_80185848[])(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_80185850[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80185858[])(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_80185860[])(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_80185868[])(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_80185870[])(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_80185878[])(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_80185880[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80185888[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80185890[])(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_80185898[])(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_801858A0[])(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_801858A8[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801858B0[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801858B8[])(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_801858C0[])(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_801858C8[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801858D0[])(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_801858D8[])(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_8018591C[])(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_801858E0; +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_8018594C[])(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_80185988[])(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(s32); +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_801859E0[])(); +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_801859F0[])(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_801859F8[])(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_80185B60[])(); +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_80185B6C[])(); +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_801C4878; +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 int func_801789AC(void); +extern s16 D_801C6230; +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_801C5A00; +extern short D_801C62A4; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801C5E2C; +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_801C5E54; +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_801C5E10; +extern s32 func_8017A3B0(void); +extern short D_801C5E4C; +extern short D_801C5E48; +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_801C6200; +extern s16 D_801C6202; +extern s16 D_801C620C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801C6200; + + 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_801C620C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801C6200+0xC == &D_801C620C; 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_801C6200 + 0xC)) < 0x101) { + D_801C6200 = 0; + D_801C6202 = 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_801C620C); + 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_801C6200 + 0xC)) < 0x101) { + D_801C6200 = 0; + D_801C6202 = 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_801C5E8C; + extern s16 D_801C5E8E; + extern s16 D_801C5E90; + extern s16 D_801C5E84; + extern s16 D_801C5E86; + extern s16 D_801C5E88; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C5E8C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C5E8E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C5E90, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C5E84, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C5E86, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C5E88, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801C5E14; +extern u16 D_801C5E94; +extern u16 D_801C5E96; +extern u16 D_801C5E98; +extern s16 D_801C6230; + +void func_8017B1D8(void) { + func_8012A418(); + D_801C6230 = 0; + D_801C5E14 = 0; + D_801C5E94 = D_80126B5E; + D_801C5E96 = D_80126B62; + D_801C5E98 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80185CA8[]; + extern s16 D_801C5E8C; + extern s16 D_801C5E84; + 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_80185CA8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80185CA8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C5E8C; + s16 *p78C = &D_801C5E84; + *(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_801C6230 = 1; + D_801C5E14 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C5E34; + extern SV4_8017B368 D_801C5E3C; + extern s16 D_801C5E8C; + extern s16 D_801C5E84; + extern u16 D_80185CA8; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801C5E34; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801C5E3C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80185CA8)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80185CA8)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801C5E8C) = loc0; + (*(SV4_8017B368 *)&D_801C5E84) = loc1; + D_801C6230 = 1; + D_801C5E14 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80185CA8[]; + extern s16 D_801C5E8C; + extern s16 D_801C5E8E; + extern s16 D_801C5E90; + extern s16 D_801C5E84; + extern s16 D_801C5E86; + extern s16 D_801C5E88; + 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_80185CA8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80185CA8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C5E8C; + s16 *p78C = &D_801C5E84; + *(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_801C5E8E; + v798 = D_801C5E90; + v78C = *p78C; + v78E = D_801C5E86; + v790 = D_801C5E88; + __asm__ __volatile__(""); + D_801C6230 = 1; + D_801C5E14 = 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_801C5E14; +extern s16 D_801C5E8C; +extern s16 D_801C5E8E; +extern s16 D_801C5E90; +extern s16 D_801C5E84; +extern s16 D_801C5E86; +extern s16 D_801C5E88; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801C5E14 = 0; + D_801C5E8C = (s16) D_80114F30; + D_801C5E8E = (s16) D_80114F34; + D_801C5E90 = (s16) D_80114F38; + D_801C5E84 = (s16) D_80114F24; + D_801C5E86 = (s16) D_80114F28; + D_801C5E88 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801C5EA4; +extern s16 D_801C5EA6; +extern s16 D_801C5EA8; +extern s16 D_801C5EAC; +extern s16 D_801C5EAE; +extern s16 D_801C5EB0; + +void func_8017B824(void) { + D_801C5EA4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801C5EA6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801C5EA8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801C5EAC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801C5EAE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801C5EB0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801C5EA4; +extern s16 D_801C5EA6; +extern s16 D_801C5EA8; +extern s16 D_801C5EAC; +extern s16 D_801C5EAE; +extern s16 D_801C5EB0; + +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_801C5EA4; + D_80114F34 = D_801C5EA6; + D_80114F38 = D_801C5EA8; + D_80114F24 = D_801C5EAC; + D_80114F28 = D_801C5EAE; + D_80114F2C = D_801C5EB0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801C5E8C), src[8..15] -> (*(S8_8017B8E8 *)&D_801C5E84) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801C5E8C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801C5E84) = ((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_801C5E94; +extern u16 D_801C5E96; +extern u16 D_801C5E98; + +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_801C5E14; +extern short D_801C5E9C; +extern short D_801C5E9E; +extern short D_801C5EA0; +extern s16 D_801C5E8C; +extern s16 D_801C5E8E; +extern s16 D_801C5E90; +extern s16 D_801C5E84; +extern s16 D_801C5E86; +extern s16 D_801C5E88; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C5E94); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C5E96); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C5E98); + (*(s16 *)&D_801C5E9C) = buf[0]; + (*(s16 *)&D_801C5E9E) = buf[1]; + (*(s16 *)&D_801C5EA0) = buf[2]; + D_801C5E8C = D_80114F30 + buf[0]; + D_801C5E14 = 0; + D_801C5E8E = D_80114F34 + buf[1]; + D_801C5E90 = D_80114F38 + buf[2]; + D_801C5E84 = D_80114F24 + buf[0]; + D_801C5E86 = D_80114F28 + buf[1]; + D_801C5E88 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801C5E34; +extern SV4 D_801C5E3C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C5E3C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801C5E34 = 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_801C5E3C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C5E3C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801C5E34) = 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_801C5E3C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801C5E5C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801C5E5C; + 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_801C5E14; +extern s16 D_801C6230; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801C5E14 = D_801C5E14 + 1; + if (D_801C5E14 >= 0x1F) { + D_801C6230 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801C5E14; +extern s16 D_801C6230; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801C5E14 = D_801C5E14 + 1; + if (0x18 < D_801C5E14) { + func_8012A4BC(); + D_801C6230 = 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_801C5E14; +extern void (*D_801C5E58)(void); +extern short D_801C5E9C; +extern short D_801C5E9E; +extern short D_801C5EA0; +extern s16 D_801C6230; + +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_801C5E14 = D_801C5E14 + 1; + if (D_801C5E14 >= 0x19) { + if (D_801C5E58 != 0) { + (*D_801C5E58)(); + } else { + D_80114F30 = D_80114F30 + D_801C5E9C; + D_80114F34 = D_80114F34 + D_801C5E9E; + D_80114F38 = D_80114F38 + D_801C5EA0; + D_80114F24 = D_80114F24 + D_801C5E9C; + D_80114F28 = D_80114F28 + D_801C5E9E; + D_80114F2C = D_80114F2C + D_801C5EA0; + func_8012A4BC(); + } + D_801C6230 = 0; + } +} + + + +extern void (*D_80185D48[])(void); + +void func_8017BE60(void *a0) { + D_80185D48[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017BF88); + + +extern void (*D_80185D60[])(void); + +void func_8017C0E4(void *a0) { + D_80185D60[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017C120); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017C180); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017C2B0); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017C63C); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017C8B4); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017C9FC); + + +extern void (*D_80185E78[])(void); + +void func_8017CB7C(void *a0) { + D_80185E78[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017CBB8); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017CC04); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017CCF8); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017CD78); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017CE2C); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017CE98); + +extern void func_8012C218(void); +void func_8017CF24(void) { + func_8012C218(); +} + + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017CF44); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017CF98); + + +extern void (*D_80185ED0[])(void); + +void func_8017CFD4(void *a0) { + D_80185ED0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017D010); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017D060); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017D0BC); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017D140); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017D2A8); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017D2F4); + + +extern void (*D_80185EE4[])(void); + +void func_8017D600(void *a0) { + D_80185EE4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017D63C); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017D67C); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017D6EC); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017D778); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017D84C); + + +extern void (*D_80185EF8[])(void); + +void func_8017D8A0(void *a0) { + D_80185EF8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017D8DC); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017D990); + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017AE2C", func_8017D9EC); + diff --git a/src/ov_SC03_089/ov_SC03_089_jr_8017A4AC.c b/src/ov_SC03_089/ov_SC03_089_jr_8017A4AC.c index 08b06be86..b20b820c8 100644 --- a/src/ov_SC03_089/ov_SC03_089_jr_8017A4AC.c +++ b/src/ov_SC03_089/ov_SC03_089_jr_8017A4AC.c @@ -2967,626 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801C6744; - extern s16 D_801C6746; - extern s16 D_801C6748; - extern s16 D_801C673C; - extern s16 D_801C673E; - extern s16 D_801C6740; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C6744, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C6746, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C6748, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C673C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C673E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C6740, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801C66CC; -extern u16 D_801C674C; -extern u16 D_801C674E; -extern u16 D_801C6750; -extern s16 D_801C68A8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801C68A8 = 0; - D_801C66CC = 0; - D_801C674C = D_80126B5E; - D_801C674E = D_80126B62; - D_801C6750 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018CFA4[]; - extern s16 D_801C6744; - extern s16 D_801C673C; - 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_8018CFA4[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018CFA4[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C6744; - s16 *p78C = &D_801C673C; - *(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_801C68A8 = 1; - D_801C66CC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C66EC; - extern SV4_8017B368 D_801C66F4; - extern s16 D_801C6744; - extern s16 D_801C673C; - extern u16 D_8018CFA4; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801C66EC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801C66F4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018CFA4)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018CFA4)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801C6744) = loc0; - (*(SV4_8017B368 *)&D_801C673C) = loc1; - D_801C68A8 = 1; - D_801C66CC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018CFA4[]; - extern s16 D_801C6744; - extern s16 D_801C6746; - extern s16 D_801C6748; - extern s16 D_801C673C; - extern s16 D_801C673E; - extern s16 D_801C6740; - 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_8018CFA4[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018CFA4[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C6744; - s16 *p78C = &D_801C673C; - *(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_801C6746; - v798 = D_801C6748; - v78C = *p78C; - v78E = D_801C673E; - v790 = D_801C6740; - __asm__ __volatile__(""); - D_801C68A8 = 1; - D_801C66CC = 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_801C66CC; -extern s16 D_801C6744; -extern s16 D_801C6746; -extern s16 D_801C6748; -extern s16 D_801C673C; -extern s16 D_801C673E; -extern s16 D_801C6740; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801C66CC = 0; - D_801C6744 = (s16) D_80114F30; - D_801C6746 = (s16) D_80114F34; - D_801C6748 = (s16) D_80114F38; - D_801C673C = (s16) D_80114F24; - D_801C673E = (s16) D_80114F28; - D_801C6740 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801C675C; -extern s16 D_801C675E; -extern s16 D_801C6760; -extern s16 D_801C6764; -extern s16 D_801C6766; -extern s16 D_801C6768; - -void func_8017B824(void) { - D_801C675C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801C675E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801C6760 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801C6764 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801C6766 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801C6768 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801C675C; -extern s16 D_801C675E; -extern s16 D_801C6760; -extern s16 D_801C6764; -extern s16 D_801C6766; -extern s16 D_801C6768; - -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_801C675C; - D_80114F34 = D_801C675E; - D_80114F38 = D_801C6760; - D_80114F24 = D_801C6764; - D_80114F28 = D_801C6766; - D_80114F2C = D_801C6768; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801C6744), src[8..15] -> (*(S8_8017B8E8 *)&D_801C673C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801C6744) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801C673C) = ((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_801C674C; -extern u16 D_801C674E; -extern u16 D_801C6750; - -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_801C66CC; -extern short D_801C6754; -extern short D_801C6756; -extern short D_801C6758; -extern s16 D_801C6744; -extern s16 D_801C6746; -extern s16 D_801C6748; -extern s16 D_801C673C; -extern s16 D_801C673E; -extern s16 D_801C6740; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C674C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C674E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C6750); - (*(s16 *)&D_801C6754) = buf[0]; - (*(s16 *)&D_801C6756) = buf[1]; - (*(s16 *)&D_801C6758) = buf[2]; - D_801C6744 = D_80114F30 + buf[0]; - D_801C66CC = 0; - D_801C6746 = D_80114F34 + buf[1]; - D_801C6748 = D_80114F38 + buf[2]; - D_801C673C = D_80114F24 + buf[0]; - D_801C673E = D_80114F28 + buf[1]; - D_801C6740 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801C66EC; -extern SV4 D_801C66F4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C66F4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801C66EC = 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_801C66F4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C66F4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801C66EC) = 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_801C66F4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801C6714[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801C6714; - 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_801C66CC; -extern s16 D_801C68A8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801C66CC = D_801C66CC + 1; - if (D_801C66CC >= 0x1F) { - D_801C68A8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801C66CC; -extern s16 D_801C68A8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801C66CC = D_801C66CC + 1; - if (0x18 < D_801C66CC) { - func_8012A4BC(); - D_801C68A8 = 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_801C66CC; -extern void (*D_801C6710)(void); -extern short D_801C6754; -extern short D_801C6756; -extern short D_801C6758; -extern s16 D_801C68A8; - -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_801C66CC = D_801C66CC + 1; - if (D_801C66CC >= 0x19) { - if (D_801C6710 != 0) { - (*D_801C6710)(); - } else { - D_80114F30 = D_80114F30 + D_801C6754; - D_80114F34 = D_80114F34 + D_801C6756; - D_80114F38 = D_80114F38 + D_801C6758; - D_80114F24 = D_80114F24 + D_801C6754; - D_80114F28 = D_80114F28 + D_801C6756; - D_80114F2C = D_80114F2C + D_801C6758; - func_8012A4BC(); - } - D_801C68A8 = 0; - } -} - - - -extern void (*D_8018D044[])(void); - -void func_8017BE60(void *a0) { - D_8018D044[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017A4AC", func_8017BEBC); - - -extern void (*D_8018D07C[])(void); - -void func_8017BEF8(void *a0) { - D_8018D07C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017A4AC", func_8017BF34); - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017A4AC", func_8017BF84); - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017A4AC", func_8017BFE0); - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017A4AC", func_8017C064); - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017A4AC", func_8017C1CC); - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017A4AC", func_8017C218); - - -extern void (*D_8018D090[])(void); - -void func_8017C524(void *a0) { - D_8018D090[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017A4AC", func_8017C560); - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017A4AC", func_8017C5A0); - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017A4AC", func_8017C610); - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017A4AC", func_8017C69C); - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017A4AC", func_8017C770); - - -extern void (*D_8018D0A4[])(void); - -void func_8017C7C4(void *a0) { - D_8018D0A4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017A4AC", func_8017C800); - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017A4AC", func_8017C8B4); - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017A4AC", func_8017C910); diff --git a/src/ov_SC03_089/ov_SC03_089_jr_8017AE2C.c b/src/ov_SC03_089/ov_SC03_089_jr_8017AE2C.c new file mode 100644 index 000000000..dbc94ef62 --- /dev/null +++ b/src/ov_SC03_089/ov_SC03_089_jr_8017AE2C.c @@ -0,0 +1,3524 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018BB9C; +extern u8 D_8018BB0C; +extern u8 D_8018BAE8; +extern u8 D_8018BAC4; +extern u8 D_8018BB78; +extern u8 D_8018BB54; +extern u8 D_8018BB30; +extern u8 D_8018BAA0; +extern void func_80145934(void); +extern u8 D_8018BC2C; +extern u8 D_8018BC08; +extern u8 D_8018BBE4; +extern u8 D_8018BBC0; +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_8018B024[]; +extern unsigned char D_8018B054[]; +extern unsigned char D_8018B0A4[]; +extern unsigned char D_8018B0D4[]; +extern unsigned char D_8018B104[]; +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(void); +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_8018B154[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018B21C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018B2A4[]; +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_8018B2AC; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801C55C8; +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_801C55CC; +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_8018B2DC; +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 void 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_8018B384[])(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_8018B3A8[])(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_8018B398; +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_8018B3BC[])(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_8018B3C8[]; +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_8018B3D8[])(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_8018B3F0[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018B3E0; +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_8018B404[])(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_8018B420[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018B410; +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_8018B434[])(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_8018B448[])(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_8018B45C; +extern void (*D_8018B484[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018B464; +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_8018B4D0[])(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_8018B4D4[])(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(void *a0); +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_8018B938[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018B948[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801C5600; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018B970[])(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_8018B950; +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_8018B960; +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_8018B9B0[])(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_8018B9B8[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018B984; +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_8018B9C4[])(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_8018B994; +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_801C5608; +extern s32 D_801C5614; +extern s32 D_801C5618; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018BA00[])(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_8018B9D4[]; +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_801C5610; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018BC50[])(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_8018BA70[]; +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_8018BCF4[])(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_8018BE48[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018BC64; +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_8018BE50[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018BC74; +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_8018BC94; +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_8018BE58[])(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(void); +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_8018BE80[])(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_8018BE8C[])(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_8018BD00[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018BF30; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018B014[]; +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_8018BF44[]; +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_8018BF80[]; +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_8018BFC8; +extern u16 D_8018BFCA; +extern u16 D_8018BFCC; +extern s32 D_8018BFD0; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018BFD8; +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_8018BCE4; +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_8018C05C[]; +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_8018C10C[])(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_8018C13C[]; +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_8018C1A0; +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_801C5620[]; +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_8018C1C4[])(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_801C5678[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018C20C[])(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_8018C1FC; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801C4E8C[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_8018C214[])(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_8018C268[])(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_8018C230; +extern s16 D_8018C264; +extern s16 D_8018C262; +extern s16 D_8018C260; +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_8018C274[])(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_801C56D8; +extern u8 D_801C56D9; +extern u8 D_801C56DA; +extern u8 D_801C56DB; +extern u8 D_801C56DC; +extern u8 D_801C56DD; +extern u8 D_801C56DE; +extern u8 D_801C56DF; +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_8018C284[])(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_801C5718; +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_8018C2C8[])(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_8018C344[]; +extern s32 D_8018C364[]; +extern u8 D_8018C3E0[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018C400[]; +extern u8 D_8018C420[]; +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_8018C4BC[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018C538[])(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_801C4E9C; +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_8018C544[])(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_8018C54C[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018C614[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018C624[])(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_8018C634[])(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_8018C640[])(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_8018C5A0[]; +extern u8 D_8018C5B4[]; +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_8018C658[])(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_8018C660[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018C668[])(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_8018C670[])(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_8018C678[])(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_8018C680[])(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_8018C688[])(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_8018C73C[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018C744[])(void); +extern void func_80169F00(void *a0); +extern char D_8018C6F4[]; +extern char D_8018C6B4[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018C77C[])(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_8018C788[])(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_8018C7D0[])(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_8018C84C[])(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_801C5A38; +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_8018C840[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018C884[]; +extern unsigned short D_8018C88C[]; +extern unsigned short D_8018C894[]; +extern unsigned char D_801C5A40[]; +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_801C5A38; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018C89C[])(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_801C5B74; +extern M2C_UNK D_801C5B78; +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_801C5B00; +extern void (*D_8018C8CC[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801C5B7C[]; +extern u8 D_801C5B84[]; +extern u8 D_801C5B34[]; +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_8018C8D4[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018C8F0[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018C8F8[])(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_8018C960[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018C904; +extern u8 D_8018C910; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018C994[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018C99C[])(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_8018C9F0[])(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_8018CA24[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018CA14[]; +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_8018CA40; +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); +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_8018CAB8[])(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_8018CAC0[])(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_8018CAC8[])(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_8018CAD0[])(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_8018CAD8[])(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_8018CAE0[])(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_8018CAEC[])(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_8018CAF8[])(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_8018CB04[])(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_8018CB14[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018CB24[])(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_8018CB2C[])(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_8018CB34[])(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_8018CB3C[])(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_8018CB44[])(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_8018CB4C[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018CB54[])(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_8018CB5C[])(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_8018CB64[])(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_8018CB6C[])(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_8018CB74[])(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_8018CB7C[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018CB84[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018CB8C[])(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_8018CB94[])(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_8018CB9C[])(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_8018CBA4[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018CBAC[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018CBB4[])(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_8018CBBC[])(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_8018CBC4[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018CBCC[])(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_8018CBD4[])(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_8018CC18[])(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_8018CBDC; +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_8018CC48[])(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_8018CC84[])(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(s32); +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_8018CCDC[])(); +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_8018CCEC[])(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_8018CCF4[])(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_8018CE5C[])(); +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_8018CE68[])(); +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_801C50E4; +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 int func_801789AC(void); +extern s16 D_801C68A8; +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_801C62B8; +extern short D_801C691C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801C66E4; +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_801C670C; +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_801C66C8; +extern s32 func_8017A3B0(void); +extern short D_801C6704; +extern short D_801C6700; +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_801C6878; +extern s16 D_801C687A; +extern s16 D_801C6884; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801C6878; + + 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_801C6884); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801C6878+0xC == &D_801C6884; 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_801C6878 + 0xC)) < 0x101) { + D_801C6878 = 0; + D_801C687A = 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_801C6884); + 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_801C6878 + 0xC)) < 0x101) { + D_801C6878 = 0; + D_801C687A = 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_801C6744; + extern s16 D_801C6746; + extern s16 D_801C6748; + extern s16 D_801C673C; + extern s16 D_801C673E; + extern s16 D_801C6740; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C6744, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C6746, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C6748, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C673C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C673E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C6740, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801C66CC; +extern u16 D_801C674C; +extern u16 D_801C674E; +extern u16 D_801C6750; +extern s16 D_801C68A8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801C68A8 = 0; + D_801C66CC = 0; + D_801C674C = D_80126B5E; + D_801C674E = D_80126B62; + D_801C6750 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018CFA4[]; + extern s16 D_801C6744; + extern s16 D_801C673C; + 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_8018CFA4[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018CFA4[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C6744; + s16 *p78C = &D_801C673C; + *(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_801C68A8 = 1; + D_801C66CC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C66EC; + extern SV4_8017B368 D_801C66F4; + extern s16 D_801C6744; + extern s16 D_801C673C; + extern u16 D_8018CFA4; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801C66EC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801C66F4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018CFA4)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018CFA4)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801C6744) = loc0; + (*(SV4_8017B368 *)&D_801C673C) = loc1; + D_801C68A8 = 1; + D_801C66CC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018CFA4[]; + extern s16 D_801C6744; + extern s16 D_801C6746; + extern s16 D_801C6748; + extern s16 D_801C673C; + extern s16 D_801C673E; + extern s16 D_801C6740; + 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_8018CFA4[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018CFA4[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C6744; + s16 *p78C = &D_801C673C; + *(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_801C6746; + v798 = D_801C6748; + v78C = *p78C; + v78E = D_801C673E; + v790 = D_801C6740; + __asm__ __volatile__(""); + D_801C68A8 = 1; + D_801C66CC = 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_801C66CC; +extern s16 D_801C6744; +extern s16 D_801C6746; +extern s16 D_801C6748; +extern s16 D_801C673C; +extern s16 D_801C673E; +extern s16 D_801C6740; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801C66CC = 0; + D_801C6744 = (s16) D_80114F30; + D_801C6746 = (s16) D_80114F34; + D_801C6748 = (s16) D_80114F38; + D_801C673C = (s16) D_80114F24; + D_801C673E = (s16) D_80114F28; + D_801C6740 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801C675C; +extern s16 D_801C675E; +extern s16 D_801C6760; +extern s16 D_801C6764; +extern s16 D_801C6766; +extern s16 D_801C6768; + +void func_8017B824(void) { + D_801C675C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801C675E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801C6760 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801C6764 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801C6766 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801C6768 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801C675C; +extern s16 D_801C675E; +extern s16 D_801C6760; +extern s16 D_801C6764; +extern s16 D_801C6766; +extern s16 D_801C6768; + +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_801C675C; + D_80114F34 = D_801C675E; + D_80114F38 = D_801C6760; + D_80114F24 = D_801C6764; + D_80114F28 = D_801C6766; + D_80114F2C = D_801C6768; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801C6744), src[8..15] -> (*(S8_8017B8E8 *)&D_801C673C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801C6744) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801C673C) = ((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_801C674C; +extern u16 D_801C674E; +extern u16 D_801C6750; + +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_801C66CC; +extern short D_801C6754; +extern short D_801C6756; +extern short D_801C6758; +extern s16 D_801C6744; +extern s16 D_801C6746; +extern s16 D_801C6748; +extern s16 D_801C673C; +extern s16 D_801C673E; +extern s16 D_801C6740; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C674C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C674E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C6750); + (*(s16 *)&D_801C6754) = buf[0]; + (*(s16 *)&D_801C6756) = buf[1]; + (*(s16 *)&D_801C6758) = buf[2]; + D_801C6744 = D_80114F30 + buf[0]; + D_801C66CC = 0; + D_801C6746 = D_80114F34 + buf[1]; + D_801C6748 = D_80114F38 + buf[2]; + D_801C673C = D_80114F24 + buf[0]; + D_801C673E = D_80114F28 + buf[1]; + D_801C6740 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801C66EC; +extern SV4 D_801C66F4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C66F4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801C66EC = 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_801C66F4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C66F4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801C66EC) = 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_801C66F4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801C6714[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801C6714; + 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_801C66CC; +extern s16 D_801C68A8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801C66CC = D_801C66CC + 1; + if (D_801C66CC >= 0x1F) { + D_801C68A8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801C66CC; +extern s16 D_801C68A8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801C66CC = D_801C66CC + 1; + if (0x18 < D_801C66CC) { + func_8012A4BC(); + D_801C68A8 = 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_801C66CC; +extern void (*D_801C6710)(void); +extern short D_801C6754; +extern short D_801C6756; +extern short D_801C6758; +extern s16 D_801C68A8; + +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_801C66CC = D_801C66CC + 1; + if (D_801C66CC >= 0x19) { + if (D_801C6710 != 0) { + (*D_801C6710)(); + } else { + D_80114F30 = D_80114F30 + D_801C6754; + D_80114F34 = D_80114F34 + D_801C6756; + D_80114F38 = D_80114F38 + D_801C6758; + D_80114F24 = D_80114F24 + D_801C6754; + D_80114F28 = D_80114F28 + D_801C6756; + D_80114F2C = D_80114F2C + D_801C6758; + func_8012A4BC(); + } + D_801C68A8 = 0; + } +} + + + +extern void (*D_8018D044[])(void); + +void func_8017BE60(void *a0) { + D_8018D044[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017AE2C", func_8017BEBC); + + +extern void (*D_8018D07C[])(void); + +void func_8017BEF8(void *a0) { + D_8018D07C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017AE2C", func_8017BF34); + +INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017AE2C", func_8017BF84); + +INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017AE2C", func_8017BFE0); + +INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017AE2C", func_8017C064); + +INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017AE2C", func_8017C1CC); + +INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017AE2C", func_8017C218); + + +extern void (*D_8018D090[])(void); + +void func_8017C524(void *a0) { + D_8018D090[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017AE2C", func_8017C560); + +INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017AE2C", func_8017C5A0); + +INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017AE2C", func_8017C610); + +INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017AE2C", func_8017C69C); + +INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017AE2C", func_8017C770); + + +extern void (*D_8018D0A4[])(void); + +void func_8017C7C4(void *a0) { + D_8018D0A4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017AE2C", func_8017C800); + +INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017AE2C", func_8017C8B4); + +INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017AE2C", func_8017C910); + diff --git a/src/ov_SC03_090/ov_SC03_090_jr_8017A4AC.c b/src/ov_SC03_090/ov_SC03_090_jr_8017A4AC.c index 697ac5a4f..53f908a86 100644 --- a/src/ov_SC03_090/ov_SC03_090_jr_8017A4AC.c +++ b/src/ov_SC03_090/ov_SC03_090_jr_8017A4AC.c @@ -2967,626 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801CBBAC; - extern s16 D_801CBBAE; - extern s16 D_801CBBB0; - extern s16 D_801CBBA4; - extern s16 D_801CBBA6; - extern s16 D_801CBBA8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801CBBAC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801CBBAE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801CBBB0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801CBBA4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801CBBA6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801CBBA8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801CBB34; -extern u16 D_801CBBB4; -extern u16 D_801CBBB6; -extern u16 D_801CBBB8; -extern s16 D_801CBD18; - -void func_8017B1D8(void) { - func_8012A418(); - D_801CBD18 = 0; - D_801CBB34 = 0; - D_801CBBB4 = D_80126B5E; - D_801CBBB6 = D_80126B62; - D_801CBBB8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018F3C8[]; - extern s16 D_801CBBAC; - extern s16 D_801CBBA4; - 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_8018F3C8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018F3C8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801CBBAC; - s16 *p78C = &D_801CBBA4; - *(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_801CBD18 = 1; - D_801CBB34 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801CBB54; - extern SV4_8017B368 D_801CBB5C; - extern s16 D_801CBBAC; - extern s16 D_801CBBA4; - extern u16 D_8018F3C8; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801CBB54; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801CBB5C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018F3C8)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018F3C8)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801CBBAC) = loc0; - (*(SV4_8017B368 *)&D_801CBBA4) = loc1; - D_801CBD18 = 1; - D_801CBB34 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018F3C8[]; - extern s16 D_801CBBAC; - extern s16 D_801CBBAE; - extern s16 D_801CBBB0; - extern s16 D_801CBBA4; - extern s16 D_801CBBA6; - extern s16 D_801CBBA8; - 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_8018F3C8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018F3C8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801CBBAC; - s16 *p78C = &D_801CBBA4; - *(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_801CBBAE; - v798 = D_801CBBB0; - v78C = *p78C; - v78E = D_801CBBA6; - v790 = D_801CBBA8; - __asm__ __volatile__(""); - D_801CBD18 = 1; - D_801CBB34 = 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_801CBB34; -extern s16 D_801CBBAC; -extern s16 D_801CBBAE; -extern s16 D_801CBBB0; -extern s16 D_801CBBA4; -extern s16 D_801CBBA6; -extern s16 D_801CBBA8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801CBB34 = 0; - D_801CBBAC = (s16) D_80114F30; - D_801CBBAE = (s16) D_80114F34; - D_801CBBB0 = (s16) D_80114F38; - D_801CBBA4 = (s16) D_80114F24; - D_801CBBA6 = (s16) D_80114F28; - D_801CBBA8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801CBBC4; -extern s16 D_801CBBC6; -extern s16 D_801CBBC8; -extern s16 D_801CBBCC; -extern s16 D_801CBBCE; -extern s16 D_801CBBD0; - -void func_8017B824(void) { - D_801CBBC4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801CBBC6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801CBBC8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801CBBCC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801CBBCE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801CBBD0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801CBBC4; -extern s16 D_801CBBC6; -extern s16 D_801CBBC8; -extern s16 D_801CBBCC; -extern s16 D_801CBBCE; -extern s16 D_801CBBD0; - -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_801CBBC4; - D_80114F34 = D_801CBBC6; - D_80114F38 = D_801CBBC8; - D_80114F24 = D_801CBBCC; - D_80114F28 = D_801CBBCE; - D_80114F2C = D_801CBBD0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801CBBAC), src[8..15] -> (*(S8_8017B8E8 *)&D_801CBBA4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801CBBAC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801CBBA4) = ((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_801CBBB4; -extern u16 D_801CBBB6; -extern u16 D_801CBBB8; - -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_801CBB34; -extern short D_801CBBBC; -extern short D_801CBBBE; -extern short D_801CBBC0; -extern s16 D_801CBBAC; -extern s16 D_801CBBAE; -extern s16 D_801CBBB0; -extern s16 D_801CBBA4; -extern s16 D_801CBBA6; -extern s16 D_801CBBA8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801CBBB4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801CBBB6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801CBBB8); - (*(s16 *)&D_801CBBBC) = buf[0]; - (*(s16 *)&D_801CBBBE) = buf[1]; - (*(s16 *)&D_801CBBC0) = buf[2]; - D_801CBBAC = D_80114F30 + buf[0]; - D_801CBB34 = 0; - D_801CBBAE = D_80114F34 + buf[1]; - D_801CBBB0 = D_80114F38 + buf[2]; - D_801CBBA4 = D_80114F24 + buf[0]; - D_801CBBA6 = D_80114F28 + buf[1]; - D_801CBBA8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801CBB54; -extern SV4 D_801CBB5C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801CBB5C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801CBB54 = 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_801CBB5C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801CBB5C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801CBB54) = 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_801CBB5C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801CBB7C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801CBB7C; - 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_801CBB34; -extern s16 D_801CBD18; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801CBB34 = D_801CBB34 + 1; - if (D_801CBB34 >= 0x1F) { - D_801CBD18 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801CBB34; -extern s16 D_801CBD18; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801CBB34 = D_801CBB34 + 1; - if (0x18 < D_801CBB34) { - func_8012A4BC(); - D_801CBD18 = 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_801CBB34; -extern void (*D_801CBB78)(void); -extern short D_801CBBBC; -extern short D_801CBBBE; -extern short D_801CBBC0; -extern s16 D_801CBD18; - -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_801CBB34 = D_801CBB34 + 1; - if (D_801CBB34 >= 0x19) { - if (D_801CBB78 != 0) { - (*D_801CBB78)(); - } else { - D_80114F30 = D_80114F30 + D_801CBBBC; - D_80114F34 = D_80114F34 + D_801CBBBE; - D_80114F38 = D_80114F38 + D_801CBBC0; - D_80114F24 = D_80114F24 + D_801CBBBC; - D_80114F28 = D_80114F28 + D_801CBBBE; - D_80114F2C = D_80114F2C + D_801CBBC0; - func_8012A4BC(); - } - D_801CBD18 = 0; - } -} - - - -extern void (*D_8018F468[])(void); - -void func_8017BE60(void *a0) { - D_8018F468[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017A4AC", func_8017BEBC); - - -extern void (*D_8018F4A0[])(void); - -void func_8017BEF8(void *a0) { - D_8018F4A0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017A4AC", func_8017BF34); - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017A4AC", func_8017BF84); - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017A4AC", func_8017BFE0); - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017A4AC", func_8017C064); - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017A4AC", func_8017C1CC); - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017A4AC", func_8017C218); - - -extern void (*D_8018F4B4[])(void); - -void func_8017C524(void *a0) { - D_8018F4B4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017A4AC", func_8017C560); - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017A4AC", func_8017C5A0); - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017A4AC", func_8017C610); - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017A4AC", func_8017C69C); - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017A4AC", func_8017C770); - - -extern void (*D_8018F4C8[])(void); - -void func_8017C7C4(void *a0) { - D_8018F4C8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017A4AC", func_8017C800); - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017A4AC", func_8017C8B4); - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017A4AC", func_8017C910); diff --git a/src/ov_SC03_090/ov_SC03_090_jr_8017AE2C.c b/src/ov_SC03_090/ov_SC03_090_jr_8017AE2C.c new file mode 100644 index 000000000..aa81da9c5 --- /dev/null +++ b/src/ov_SC03_090/ov_SC03_090_jr_8017AE2C.c @@ -0,0 +1,3524 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018DFC0; +extern u8 D_8018DF30; +extern u8 D_8018DF0C; +extern u8 D_8018DEE8; +extern u8 D_8018DF9C; +extern u8 D_8018DF78; +extern u8 D_8018DF54; +extern u8 D_8018DEC4; +extern void func_80145934(void); +extern u8 D_8018E050; +extern u8 D_8018E02C; +extern u8 D_8018E008; +extern u8 D_8018DFE4; +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_8018D448[]; +extern unsigned char D_8018D478[]; +extern unsigned char D_8018D4C8[]; +extern unsigned char D_8018D4F8[]; +extern unsigned char D_8018D528[]; +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(void); +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_8018D578[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018D640[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018D6C8[]; +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_8018D6D0; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801CAA30; +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_801CAA34; +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_8018D700; +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 void 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_8018D7A8[])(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_8018D7CC[])(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_8018D7BC; +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_8018D7E0[])(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_8018D7EC[]; +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_8018D7FC[])(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_8018D814[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018D804; +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_8018D828[])(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_8018D844[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018D834; +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_8018D858[])(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_8018D86C[])(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_8018D880; +extern void (*D_8018D8A8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018D888; +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_8018D8F4[])(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_8018D8F8[])(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(void *a0); +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_8018DD5C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018DD6C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801CAA68; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018DD94[])(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_8018DD74; +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_8018DD84; +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_8018DDD4[])(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_8018DDDC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018DDA8; +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_8018DDE8[])(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_8018DDB8; +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_801CAA70; +extern s32 D_801CAA7C; +extern s32 D_801CAA80; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018DE24[])(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_8018DDF8[]; +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_801CAA78; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018E074[])(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_8018DE94[]; +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_8018E118[])(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_8018E26C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018E088; +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_8018E274[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018E098; +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_8018E0B8; +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_8018E27C[])(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(void); +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_8018E2A4[])(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_8018E2B0[])(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_8018E124[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018E354; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018D438[]; +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_8018E368[]; +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_8018E3A4[]; +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_8018E3EC; +extern u16 D_8018E3EE; +extern u16 D_8018E3F0; +extern s32 D_8018E3F4; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018E3FC; +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_8018E108; +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_8018E480[]; +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_8018E530[])(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_8018E560[]; +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_8018E5C4; +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_801CAA88[]; +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_8018E5E8[])(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_801CAAE0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018E630[])(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_8018E620; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801CA2F8[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_8018E638[])(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_8018E68C[])(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_8018E654; +extern s16 D_8018E688; +extern s16 D_8018E686; +extern s16 D_8018E684; +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_8018E698[])(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_801CAB40; +extern u8 D_801CAB41; +extern u8 D_801CAB42; +extern u8 D_801CAB43; +extern u8 D_801CAB44; +extern u8 D_801CAB45; +extern u8 D_801CAB46; +extern u8 D_801CAB47; +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_8018E6A8[])(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_801CAB80; +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_8018E6EC[])(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_8018E768[]; +extern s32 D_8018E788[]; +extern u8 D_8018E804[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018E824[]; +extern u8 D_8018E844[]; +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_8018E8E0[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018E95C[])(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_801CA308; +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_8018E968[])(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_8018E970[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018EA38[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018EA48[])(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_8018EA58[])(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_8018EA64[])(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_8018E9C4[]; +extern u8 D_8018E9D8[]; +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_8018EA7C[])(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_8018EA84[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018EA8C[])(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_8018EA94[])(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_8018EA9C[])(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_8018EAA4[])(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_8018EAAC[])(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_8018EB60[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018EB68[])(void); +extern void func_80169F00(void *a0); +extern char D_8018EB18[]; +extern char D_8018EAD8[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018EBA0[])(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_8018EBAC[])(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_8018EBF4[])(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_8018EC70[])(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_801CAEA0; +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_8018EC64[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018ECA8[]; +extern unsigned short D_8018ECB0[]; +extern unsigned short D_8018ECB8[]; +extern unsigned char D_801CAEA8[]; +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_801CAEA0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018ECC0[])(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_801CAFDC; +extern M2C_UNK D_801CAFE0; +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_801CAF68; +extern void (*D_8018ECF0[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801CAFE4[]; +extern u8 D_801CAFEC[]; +extern u8 D_801CAF9C[]; +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_8018ECF8[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018ED14[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018ED1C[])(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_8018ED84[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018ED28; +extern u8 D_8018ED34; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018EDB8[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018EDC0[])(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_8018EE14[])(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_8018EE48[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018EE38[]; +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_8018EE64; +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); +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_8018EEDC[])(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_8018EEE4[])(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_8018EEEC[])(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_8018EEF4[])(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_8018EEFC[])(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_8018EF04[])(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_8018EF10[])(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_8018EF1C[])(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_8018EF28[])(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_8018EF38[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018EF48[])(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_8018EF50[])(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_8018EF58[])(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_8018EF60[])(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_8018EF68[])(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_8018EF70[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018EF78[])(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_8018EF80[])(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_8018EF88[])(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_8018EF90[])(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_8018EF98[])(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_8018EFA0[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018EFA8[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018EFB0[])(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_8018EFB8[])(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_8018EFC0[])(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_8018EFC8[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018EFD0[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018EFD8[])(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_8018EFE0[])(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_8018EFE8[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018EFF0[])(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_8018EFF8[])(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_8018F03C[])(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_8018F000; +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_8018F06C[])(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_8018F0A8[])(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(s32); +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_8018F100[])(); +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_8018F110[])(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_8018F118[])(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_8018F280[])(); +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_8018F28C[])(); +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_801CA550; +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 int func_801789AC(void); +extern s16 D_801CBD18; +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_801CB720; +extern short D_801CBD8C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801CBB4C; +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_801CBB74; +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_801CBB30; +extern s32 func_8017A3B0(void); +extern short D_801CBB6C; +extern short D_801CBB68; +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_801CBCE8; +extern s16 D_801CBCEA; +extern s16 D_801CBCF4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801CBCE8; + + 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_801CBCF4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801CBCE8+0xC == &D_801CBCF4; 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_801CBCE8 + 0xC)) < 0x101) { + D_801CBCE8 = 0; + D_801CBCEA = 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_801CBCF4); + 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_801CBCE8 + 0xC)) < 0x101) { + D_801CBCE8 = 0; + D_801CBCEA = 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_801CBBAC; + extern s16 D_801CBBAE; + extern s16 D_801CBBB0; + extern s16 D_801CBBA4; + extern s16 D_801CBBA6; + extern s16 D_801CBBA8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801CBBAC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801CBBAE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801CBBB0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801CBBA4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801CBBA6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801CBBA8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801CBB34; +extern u16 D_801CBBB4; +extern u16 D_801CBBB6; +extern u16 D_801CBBB8; +extern s16 D_801CBD18; + +void func_8017B1D8(void) { + func_8012A418(); + D_801CBD18 = 0; + D_801CBB34 = 0; + D_801CBBB4 = D_80126B5E; + D_801CBBB6 = D_80126B62; + D_801CBBB8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018F3C8[]; + extern s16 D_801CBBAC; + extern s16 D_801CBBA4; + 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_8018F3C8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018F3C8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801CBBAC; + s16 *p78C = &D_801CBBA4; + *(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_801CBD18 = 1; + D_801CBB34 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801CBB54; + extern SV4_8017B368 D_801CBB5C; + extern s16 D_801CBBAC; + extern s16 D_801CBBA4; + extern u16 D_8018F3C8; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801CBB54; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801CBB5C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018F3C8)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018F3C8)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801CBBAC) = loc0; + (*(SV4_8017B368 *)&D_801CBBA4) = loc1; + D_801CBD18 = 1; + D_801CBB34 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018F3C8[]; + extern s16 D_801CBBAC; + extern s16 D_801CBBAE; + extern s16 D_801CBBB0; + extern s16 D_801CBBA4; + extern s16 D_801CBBA6; + extern s16 D_801CBBA8; + 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_8018F3C8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018F3C8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801CBBAC; + s16 *p78C = &D_801CBBA4; + *(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_801CBBAE; + v798 = D_801CBBB0; + v78C = *p78C; + v78E = D_801CBBA6; + v790 = D_801CBBA8; + __asm__ __volatile__(""); + D_801CBD18 = 1; + D_801CBB34 = 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_801CBB34; +extern s16 D_801CBBAC; +extern s16 D_801CBBAE; +extern s16 D_801CBBB0; +extern s16 D_801CBBA4; +extern s16 D_801CBBA6; +extern s16 D_801CBBA8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801CBB34 = 0; + D_801CBBAC = (s16) D_80114F30; + D_801CBBAE = (s16) D_80114F34; + D_801CBBB0 = (s16) D_80114F38; + D_801CBBA4 = (s16) D_80114F24; + D_801CBBA6 = (s16) D_80114F28; + D_801CBBA8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801CBBC4; +extern s16 D_801CBBC6; +extern s16 D_801CBBC8; +extern s16 D_801CBBCC; +extern s16 D_801CBBCE; +extern s16 D_801CBBD0; + +void func_8017B824(void) { + D_801CBBC4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801CBBC6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801CBBC8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801CBBCC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801CBBCE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801CBBD0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801CBBC4; +extern s16 D_801CBBC6; +extern s16 D_801CBBC8; +extern s16 D_801CBBCC; +extern s16 D_801CBBCE; +extern s16 D_801CBBD0; + +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_801CBBC4; + D_80114F34 = D_801CBBC6; + D_80114F38 = D_801CBBC8; + D_80114F24 = D_801CBBCC; + D_80114F28 = D_801CBBCE; + D_80114F2C = D_801CBBD0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801CBBAC), src[8..15] -> (*(S8_8017B8E8 *)&D_801CBBA4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801CBBAC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801CBBA4) = ((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_801CBBB4; +extern u16 D_801CBBB6; +extern u16 D_801CBBB8; + +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_801CBB34; +extern short D_801CBBBC; +extern short D_801CBBBE; +extern short D_801CBBC0; +extern s16 D_801CBBAC; +extern s16 D_801CBBAE; +extern s16 D_801CBBB0; +extern s16 D_801CBBA4; +extern s16 D_801CBBA6; +extern s16 D_801CBBA8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801CBBB4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801CBBB6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801CBBB8); + (*(s16 *)&D_801CBBBC) = buf[0]; + (*(s16 *)&D_801CBBBE) = buf[1]; + (*(s16 *)&D_801CBBC0) = buf[2]; + D_801CBBAC = D_80114F30 + buf[0]; + D_801CBB34 = 0; + D_801CBBAE = D_80114F34 + buf[1]; + D_801CBBB0 = D_80114F38 + buf[2]; + D_801CBBA4 = D_80114F24 + buf[0]; + D_801CBBA6 = D_80114F28 + buf[1]; + D_801CBBA8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801CBB54; +extern SV4 D_801CBB5C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801CBB5C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801CBB54 = 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_801CBB5C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801CBB5C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801CBB54) = 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_801CBB5C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801CBB7C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801CBB7C; + 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_801CBB34; +extern s16 D_801CBD18; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801CBB34 = D_801CBB34 + 1; + if (D_801CBB34 >= 0x1F) { + D_801CBD18 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801CBB34; +extern s16 D_801CBD18; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801CBB34 = D_801CBB34 + 1; + if (0x18 < D_801CBB34) { + func_8012A4BC(); + D_801CBD18 = 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_801CBB34; +extern void (*D_801CBB78)(void); +extern short D_801CBBBC; +extern short D_801CBBBE; +extern short D_801CBBC0; +extern s16 D_801CBD18; + +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_801CBB34 = D_801CBB34 + 1; + if (D_801CBB34 >= 0x19) { + if (D_801CBB78 != 0) { + (*D_801CBB78)(); + } else { + D_80114F30 = D_80114F30 + D_801CBBBC; + D_80114F34 = D_80114F34 + D_801CBBBE; + D_80114F38 = D_80114F38 + D_801CBBC0; + D_80114F24 = D_80114F24 + D_801CBBBC; + D_80114F28 = D_80114F28 + D_801CBBBE; + D_80114F2C = D_80114F2C + D_801CBBC0; + func_8012A4BC(); + } + D_801CBD18 = 0; + } +} + + + +extern void (*D_8018F468[])(void); + +void func_8017BE60(void *a0) { + D_8018F468[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017AE2C", func_8017BEBC); + + +extern void (*D_8018F4A0[])(void); + +void func_8017BEF8(void *a0) { + D_8018F4A0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017AE2C", func_8017BF34); + +INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017AE2C", func_8017BF84); + +INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017AE2C", func_8017BFE0); + +INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017AE2C", func_8017C064); + +INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017AE2C", func_8017C1CC); + +INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017AE2C", func_8017C218); + + +extern void (*D_8018F4B4[])(void); + +void func_8017C524(void *a0) { + D_8018F4B4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017AE2C", func_8017C560); + +INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017AE2C", func_8017C5A0); + +INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017AE2C", func_8017C610); + +INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017AE2C", func_8017C69C); + +INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017AE2C", func_8017C770); + + +extern void (*D_8018F4C8[])(void); + +void func_8017C7C4(void *a0) { + D_8018F4C8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017AE2C", func_8017C800); + +INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017AE2C", func_8017C8B4); + +INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017AE2C", func_8017C910); + diff --git a/src/ov_SC03_091/ov_SC03_091_jr_8017A4AC.c b/src/ov_SC03_091/ov_SC03_091_jr_8017A4AC.c index f024e3038..fc7e19fa9 100644 --- a/src/ov_SC03_091/ov_SC03_091_jr_8017A4AC.c +++ b/src/ov_SC03_091/ov_SC03_091_jr_8017A4AC.c @@ -2967,664 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801D227C; - extern s16 D_801D227E; - extern s16 D_801D2280; - extern s16 D_801D2274; - extern s16 D_801D2276; - extern s16 D_801D2278; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D227C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D227E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D2280, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D2274, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D2276, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D2278, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801D2204; -extern u16 D_801D2284; -extern u16 D_801D2286; -extern u16 D_801D2288; -extern s16 D_801D2668; - -void func_8017B1D8(void) { - func_8012A418(); - D_801D2668 = 0; - D_801D2204 = 0; - D_801D2284 = D_80126B5E; - D_801D2286 = D_80126B62; - D_801D2288 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80190270[]; - extern s16 D_801D227C; - extern s16 D_801D2274; - 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_80190270[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80190270[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D227C; - s16 *p78C = &D_801D2274; - *(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_801D2668 = 1; - D_801D2204 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D2224; - extern SV4_8017B368 D_801D222C; - extern s16 D_801D227C; - extern s16 D_801D2274; - extern u16 D_80190270; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801D2224; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801D222C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80190270)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80190270)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801D227C) = loc0; - (*(SV4_8017B368 *)&D_801D2274) = loc1; - D_801D2668 = 1; - D_801D2204 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80190270[]; - extern s16 D_801D227C; - extern s16 D_801D227E; - extern s16 D_801D2280; - extern s16 D_801D2274; - extern s16 D_801D2276; - extern s16 D_801D2278; - 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_80190270[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80190270[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D227C; - s16 *p78C = &D_801D2274; - *(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_801D227E; - v798 = D_801D2280; - v78C = *p78C; - v78E = D_801D2276; - v790 = D_801D2278; - __asm__ __volatile__(""); - D_801D2668 = 1; - D_801D2204 = 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_801D2204; -extern s16 D_801D227C; -extern s16 D_801D227E; -extern s16 D_801D2280; -extern s16 D_801D2274; -extern s16 D_801D2276; -extern s16 D_801D2278; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801D2204 = 0; - D_801D227C = (s16) D_80114F30; - D_801D227E = (s16) D_80114F34; - D_801D2280 = (s16) D_80114F38; - D_801D2274 = (s16) D_80114F24; - D_801D2276 = (s16) D_80114F28; - D_801D2278 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801D2294; -extern s16 D_801D2296; -extern s16 D_801D2298; -extern s16 D_801D229C; -extern s16 D_801D229E; -extern s16 D_801D22A0; - -void func_8017B824(void) { - D_801D2294 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801D2296 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801D2298 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801D229C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801D229E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801D22A0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801D2294; -extern s16 D_801D2296; -extern s16 D_801D2298; -extern s16 D_801D229C; -extern s16 D_801D229E; -extern s16 D_801D22A0; - -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_801D2294; - D_80114F34 = D_801D2296; - D_80114F38 = D_801D2298; - D_80114F24 = D_801D229C; - D_80114F28 = D_801D229E; - D_80114F2C = D_801D22A0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801D227C), src[8..15] -> (*(S8_8017B8E8 *)&D_801D2274) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801D227C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801D2274) = ((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_801D2284; -extern u16 D_801D2286; -extern u16 D_801D2288; - -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_801D2204; -extern short D_801D228C; -extern short D_801D228E; -extern short D_801D2290; -extern s16 D_801D227C; -extern s16 D_801D227E; -extern s16 D_801D2280; -extern s16 D_801D2274; -extern s16 D_801D2276; -extern s16 D_801D2278; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D2284); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D2286); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D2288); - (*(s16 *)&D_801D228C) = buf[0]; - (*(s16 *)&D_801D228E) = buf[1]; - (*(s16 *)&D_801D2290) = buf[2]; - D_801D227C = D_80114F30 + buf[0]; - D_801D2204 = 0; - D_801D227E = D_80114F34 + buf[1]; - D_801D2280 = D_80114F38 + buf[2]; - D_801D2274 = D_80114F24 + buf[0]; - D_801D2276 = D_80114F28 + buf[1]; - D_801D2278 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801D2224; -extern SV4 D_801D222C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D222C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801D2224 = 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_801D222C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D222C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801D2224) = 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_801D222C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801D224C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801D224C; - 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_801D2204; -extern s16 D_801D2668; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801D2204 = D_801D2204 + 1; - if (D_801D2204 >= 0x1F) { - D_801D2668 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801D2204; -extern s16 D_801D2668; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801D2204 = D_801D2204 + 1; - if (0x18 < D_801D2204) { - func_8012A4BC(); - D_801D2668 = 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_801D2204; -extern void (*D_801D2248)(void); -extern short D_801D228C; -extern short D_801D228E; -extern short D_801D2290; -extern s16 D_801D2668; - -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_801D2204 = D_801D2204 + 1; - if (D_801D2204 >= 0x19) { - if (D_801D2248 != 0) { - (*D_801D2248)(); - } else { - D_80114F30 = D_80114F30 + D_801D228C; - D_80114F34 = D_80114F34 + D_801D228E; - D_80114F38 = D_80114F38 + D_801D2290; - D_80114F24 = D_80114F24 + D_801D228C; - D_80114F28 = D_80114F28 + D_801D228E; - D_80114F2C = D_80114F2C + D_801D2290; - func_8012A4BC(); - } - D_801D2668 = 0; - } -} - - - -extern void (*D_80190310[])(void); - -void func_8017BE60(void *a0) { - D_80190310[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017BFEC); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017C378); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017C5F0); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017C738); - - -extern void (*D_8019042C[])(void); - -void func_8017C8B8(void *a0) { - D_8019042C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017C8F4); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017C940); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017CA34); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017CAB4); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017CB68); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017CBD4); - -extern void func_8012C218(void); -void func_8017CC60(void) { - func_8012C218(); -} - - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017CC80); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017CCD4); - - -extern void (*D_80190484[])(void); - -void func_8017CD10(void *a0) { - D_80190484[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017CD4C); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017CD9C); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017CDF8); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017CE7C); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017CFE4); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017D030); - - -extern void (*D_80190498[])(void); - -void func_8017D33C(void *a0) { - D_80190498[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017D378); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017D3B8); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017D428); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017D4B4); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017D588); - - -extern void (*D_801904AC[])(void); - -void func_8017D5DC(void *a0) { - D_801904AC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017D618); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017D6CC); - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017A4AC", func_8017D728); diff --git a/src/ov_SC03_091/ov_SC03_091_jr_8017AE2C.c b/src/ov_SC03_091/ov_SC03_091_jr_8017AE2C.c new file mode 100644 index 000000000..16bf87c0e --- /dev/null +++ b/src/ov_SC03_091/ov_SC03_091_jr_8017AE2C.c @@ -0,0 +1,3562 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018EE68; +extern u8 D_8018EDD8; +extern u8 D_8018EDB4; +extern u8 D_8018ED90; +extern u8 D_8018EE44; +extern u8 D_8018EE20; +extern u8 D_8018EDFC; +extern u8 D_8018ED6C; +extern void func_80145934(void); +extern u8 D_8018EEF8; +extern u8 D_8018EED4; +extern u8 D_8018EEB0; +extern u8 D_8018EE8C; +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_8018E2F0[]; +extern unsigned char D_8018E320[]; +extern unsigned char D_8018E370[]; +extern unsigned char D_8018E3A0[]; +extern unsigned char D_8018E3D0[]; +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(void); +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_8018E420[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018E4E8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018E570[]; +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_8018E578; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801D1100; +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_801D1104; +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_8018E5A8; +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 void 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_8018E650[])(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_8018E674[])(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_8018E664; +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_8018E688[])(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_8018E694[]; +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_8018E6A4[])(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_8018E6BC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018E6AC; +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_8018E6D0[])(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_8018E6EC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018E6DC; +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_8018E700[])(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_8018E714[])(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_8018E728; +extern void (*D_8018E750[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018E730; +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_8018E79C[])(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_8018E7A0[])(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(void *a0); +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_8018EC04[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018EC14[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801D1138; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018EC3C[])(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_8018EC1C; +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_8018EC2C; +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_8018EC7C[])(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_8018EC84[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018EC50; +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_8018EC90[])(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_8018EC60; +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_801D1140; +extern s32 D_801D114C; +extern s32 D_801D1150; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018ECCC[])(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_8018ECA0[]; +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_801D1148; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018EF1C[])(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_8018ED3C[]; +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_8018EFC0[])(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_8018F114[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018EF30; +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_8018F11C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018EF40; +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_8018EF60; +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_8018F124[])(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(void); +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_8018F14C[])(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_8018F158[])(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_8018EFCC[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018F1FC; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018E2E0[]; +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_8018F210[]; +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_8018F24C[]; +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_8018F294; +extern u16 D_8018F296; +extern u16 D_8018F298; +extern s32 D_8018F29C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018F2A4; +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_8018EFB0; +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_8018F328[]; +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_8018F3D8[])(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_8018F408[]; +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_8018F46C; +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_801D1158[]; +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_8018F490[])(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_801D11B0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018F4D8[])(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_8018F4C8; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801D09C4[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_8018F4E0[])(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_8018F534[])(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_8018F4FC; +extern s16 D_8018F530; +extern s16 D_8018F52E; +extern s16 D_8018F52C; +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_8018F540[])(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_801D1210; +extern u8 D_801D1211; +extern u8 D_801D1212; +extern u8 D_801D1213; +extern u8 D_801D1214; +extern u8 D_801D1215; +extern u8 D_801D1216; +extern u8 D_801D1217; +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_8018F550[])(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_801D1250; +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_8018F594[])(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_8018F610[]; +extern s32 D_8018F630[]; +extern u8 D_8018F6AC[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018F6CC[]; +extern u8 D_8018F6EC[]; +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_8018F788[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018F804[])(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_801D09D4; +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_8018F810[])(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_8018F818[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018F8E0[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018F8F0[])(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_8018F900[])(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_8018F90C[])(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_8018F86C[]; +extern u8 D_8018F880[]; +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_8018F924[])(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_8018F92C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018F934[])(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_8018F93C[])(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_8018F944[])(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_8018F94C[])(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_8018F954[])(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_8018FA08[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018FA10[])(void); +extern void func_80169F00(void *a0); +extern char D_8018F9C0[]; +extern char D_8018F980[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018FA48[])(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_8018FA54[])(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_8018FA9C[])(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_8018FB18[])(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_801D1570; +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_8018FB0C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018FB50[]; +extern unsigned short D_8018FB58[]; +extern unsigned short D_8018FB60[]; +extern unsigned char D_801D1578[]; +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_801D1570; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018FB68[])(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_801D16AC; +extern M2C_UNK D_801D16B0; +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_801D1638; +extern void (*D_8018FB98[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801D16B4[]; +extern u8 D_801D16BC[]; +extern u8 D_801D166C[]; +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_8018FBA0[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018FBBC[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018FBC4[])(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_8018FC2C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018FBD0; +extern u8 D_8018FBDC; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018FC60[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018FC68[])(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_8018FCBC[])(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_8018FCF0[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018FCE0[]; +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_8018FD0C; +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); +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_8018FD84[])(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_8018FD8C[])(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_8018FD94[])(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_8018FD9C[])(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_8018FDA4[])(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_8018FDAC[])(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_8018FDB8[])(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_8018FDC4[])(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_8018FDD0[])(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_8018FDE0[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018FDF0[])(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_8018FDF8[])(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_8018FE00[])(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_8018FE08[])(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_8018FE10[])(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_8018FE18[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018FE20[])(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_8018FE28[])(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_8018FE30[])(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_8018FE38[])(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_8018FE40[])(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_8018FE48[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018FE50[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018FE58[])(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_8018FE60[])(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_8018FE68[])(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_8018FE70[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018FE78[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018FE80[])(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_8018FE88[])(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_8018FE90[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018FE98[])(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_8018FEA0[])(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_8018FEE4[])(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_8018FEA8; +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_8018FF14[])(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_8018FF50[])(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(s32); +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_8018FFA8[])(); +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_8018FFB8[])(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_8018FFC0[])(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_80190128[])(); +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_80190134[])(); +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_801D0C1C; +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 int func_801789AC(void); +extern s16 D_801D2668; +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_801D1DF0; +extern short D_801D26DC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801D221C; +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_801D2244; +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_801D2200; +extern s32 func_8017A3B0(void); +extern short D_801D223C; +extern short D_801D2238; +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_801D2638; +extern s16 D_801D263A; +extern s16 D_801D2644; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801D2638; + + 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_801D2644); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801D2638+0xC == &D_801D2644; 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_801D2638 + 0xC)) < 0x101) { + D_801D2638 = 0; + D_801D263A = 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_801D2644); + 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_801D2638 + 0xC)) < 0x101) { + D_801D2638 = 0; + D_801D263A = 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_801D227C; + extern s16 D_801D227E; + extern s16 D_801D2280; + extern s16 D_801D2274; + extern s16 D_801D2276; + extern s16 D_801D2278; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D227C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D227E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D2280, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D2274, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D2276, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D2278, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801D2204; +extern u16 D_801D2284; +extern u16 D_801D2286; +extern u16 D_801D2288; +extern s16 D_801D2668; + +void func_8017B1D8(void) { + func_8012A418(); + D_801D2668 = 0; + D_801D2204 = 0; + D_801D2284 = D_80126B5E; + D_801D2286 = D_80126B62; + D_801D2288 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80190270[]; + extern s16 D_801D227C; + extern s16 D_801D2274; + 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_80190270[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80190270[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D227C; + s16 *p78C = &D_801D2274; + *(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_801D2668 = 1; + D_801D2204 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D2224; + extern SV4_8017B368 D_801D222C; + extern s16 D_801D227C; + extern s16 D_801D2274; + extern u16 D_80190270; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801D2224; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801D222C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80190270)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80190270)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801D227C) = loc0; + (*(SV4_8017B368 *)&D_801D2274) = loc1; + D_801D2668 = 1; + D_801D2204 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80190270[]; + extern s16 D_801D227C; + extern s16 D_801D227E; + extern s16 D_801D2280; + extern s16 D_801D2274; + extern s16 D_801D2276; + extern s16 D_801D2278; + 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_80190270[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80190270[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D227C; + s16 *p78C = &D_801D2274; + *(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_801D227E; + v798 = D_801D2280; + v78C = *p78C; + v78E = D_801D2276; + v790 = D_801D2278; + __asm__ __volatile__(""); + D_801D2668 = 1; + D_801D2204 = 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_801D2204; +extern s16 D_801D227C; +extern s16 D_801D227E; +extern s16 D_801D2280; +extern s16 D_801D2274; +extern s16 D_801D2276; +extern s16 D_801D2278; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801D2204 = 0; + D_801D227C = (s16) D_80114F30; + D_801D227E = (s16) D_80114F34; + D_801D2280 = (s16) D_80114F38; + D_801D2274 = (s16) D_80114F24; + D_801D2276 = (s16) D_80114F28; + D_801D2278 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801D2294; +extern s16 D_801D2296; +extern s16 D_801D2298; +extern s16 D_801D229C; +extern s16 D_801D229E; +extern s16 D_801D22A0; + +void func_8017B824(void) { + D_801D2294 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801D2296 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801D2298 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801D229C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801D229E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801D22A0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801D2294; +extern s16 D_801D2296; +extern s16 D_801D2298; +extern s16 D_801D229C; +extern s16 D_801D229E; +extern s16 D_801D22A0; + +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_801D2294; + D_80114F34 = D_801D2296; + D_80114F38 = D_801D2298; + D_80114F24 = D_801D229C; + D_80114F28 = D_801D229E; + D_80114F2C = D_801D22A0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801D227C), src[8..15] -> (*(S8_8017B8E8 *)&D_801D2274) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801D227C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801D2274) = ((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_801D2284; +extern u16 D_801D2286; +extern u16 D_801D2288; + +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_801D2204; +extern short D_801D228C; +extern short D_801D228E; +extern short D_801D2290; +extern s16 D_801D227C; +extern s16 D_801D227E; +extern s16 D_801D2280; +extern s16 D_801D2274; +extern s16 D_801D2276; +extern s16 D_801D2278; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D2284); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D2286); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D2288); + (*(s16 *)&D_801D228C) = buf[0]; + (*(s16 *)&D_801D228E) = buf[1]; + (*(s16 *)&D_801D2290) = buf[2]; + D_801D227C = D_80114F30 + buf[0]; + D_801D2204 = 0; + D_801D227E = D_80114F34 + buf[1]; + D_801D2280 = D_80114F38 + buf[2]; + D_801D2274 = D_80114F24 + buf[0]; + D_801D2276 = D_80114F28 + buf[1]; + D_801D2278 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801D2224; +extern SV4 D_801D222C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D222C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801D2224 = 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_801D222C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D222C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801D2224) = 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_801D222C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801D224C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801D224C; + 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_801D2204; +extern s16 D_801D2668; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801D2204 = D_801D2204 + 1; + if (D_801D2204 >= 0x1F) { + D_801D2668 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801D2204; +extern s16 D_801D2668; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801D2204 = D_801D2204 + 1; + if (0x18 < D_801D2204) { + func_8012A4BC(); + D_801D2668 = 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_801D2204; +extern void (*D_801D2248)(void); +extern short D_801D228C; +extern short D_801D228E; +extern short D_801D2290; +extern s16 D_801D2668; + +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_801D2204 = D_801D2204 + 1; + if (D_801D2204 >= 0x19) { + if (D_801D2248 != 0) { + (*D_801D2248)(); + } else { + D_80114F30 = D_80114F30 + D_801D228C; + D_80114F34 = D_80114F34 + D_801D228E; + D_80114F38 = D_80114F38 + D_801D2290; + D_80114F24 = D_80114F24 + D_801D228C; + D_80114F28 = D_80114F28 + D_801D228E; + D_80114F2C = D_80114F2C + D_801D2290; + func_8012A4BC(); + } + D_801D2668 = 0; + } +} + + + +extern void (*D_80190310[])(void); + +void func_8017BE60(void *a0) { + D_80190310[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017BFEC); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017C378); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017C5F0); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017C738); + + +extern void (*D_8019042C[])(void); + +void func_8017C8B8(void *a0) { + D_8019042C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017C8F4); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017C940); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017CA34); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017CAB4); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017CB68); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017CBD4); + +extern void func_8012C218(void); +void func_8017CC60(void) { + func_8012C218(); +} + + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017CC80); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017CCD4); + + +extern void (*D_80190484[])(void); + +void func_8017CD10(void *a0) { + D_80190484[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017CD4C); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017CD9C); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017CDF8); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017CE7C); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017CFE4); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017D030); + + +extern void (*D_80190498[])(void); + +void func_8017D33C(void *a0) { + D_80190498[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017D378); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017D3B8); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017D428); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017D4B4); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017D588); + + +extern void (*D_801904AC[])(void); + +void func_8017D5DC(void *a0) { + D_801904AC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017D618); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017D6CC); + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8017AE2C", func_8017D728); + diff --git a/src/ov_SC03_092/ov_SC03_092_jr_8017A4AC.c b/src/ov_SC03_092/ov_SC03_092_jr_8017A4AC.c index 7ebb929ee..2737b8610 100644 --- a/src/ov_SC03_092/ov_SC03_092_jr_8017A4AC.c +++ b/src/ov_SC03_092/ov_SC03_092_jr_8017A4AC.c @@ -2967,1426 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801B2E44; - extern s16 D_801B2E46; - extern s16 D_801B2E48; - extern s16 D_801B2E3C; - extern s16 D_801B2E3E; - extern s16 D_801B2E40; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B2E44, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B2E46, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B2E48, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B2E3C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B2E3E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B2E40, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801B2DCC; -extern u16 D_801B2E4C; -extern u16 D_801B2E4E; -extern u16 D_801B2E50; -extern s16 D_801B3010; - -void func_8017B1D8(void) { - func_8012A418(); - D_801B3010 = 0; - D_801B2DCC = 0; - D_801B2E4C = D_80126B5E; - D_801B2E4E = D_80126B62; - D_801B2E50 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80188640[]; - extern s16 D_801B2E44; - extern s16 D_801B2E3C; - 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_80188640[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80188640[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B2E44; - s16 *p78C = &D_801B2E3C; - *(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_801B3010 = 1; - D_801B2DCC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B2DEC; - extern SV4_8017B368 D_801B2DF4; - extern s16 D_801B2E44; - extern s16 D_801B2E3C; - extern u16 D_80188640; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801B2DEC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801B2DF4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80188640)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80188640)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801B2E44) = loc0; - (*(SV4_8017B368 *)&D_801B2E3C) = loc1; - D_801B3010 = 1; - D_801B2DCC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80188640[]; - extern s16 D_801B2E44; - extern s16 D_801B2E46; - extern s16 D_801B2E48; - extern s16 D_801B2E3C; - extern s16 D_801B2E3E; - extern s16 D_801B2E40; - 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_80188640[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80188640[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B2E44; - s16 *p78C = &D_801B2E3C; - *(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_801B2E46; - v798 = D_801B2E48; - v78C = *p78C; - v78E = D_801B2E3E; - v790 = D_801B2E40; - __asm__ __volatile__(""); - D_801B3010 = 1; - D_801B2DCC = 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_801B2DCC; -extern s16 D_801B2E44; -extern s16 D_801B2E46; -extern s16 D_801B2E48; -extern s16 D_801B2E3C; -extern s16 D_801B2E3E; -extern s16 D_801B2E40; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801B2DCC = 0; - D_801B2E44 = (s16) D_80114F30; - D_801B2E46 = (s16) D_80114F34; - D_801B2E48 = (s16) D_80114F38; - D_801B2E3C = (s16) D_80114F24; - D_801B2E3E = (s16) D_80114F28; - D_801B2E40 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801B2E5C; -extern s16 D_801B2E5E; -extern s16 D_801B2E60; -extern s16 D_801B2E64; -extern s16 D_801B2E66; -extern s16 D_801B2E68; - -void func_8017B824(void) { - D_801B2E5C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801B2E5E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801B2E60 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801B2E64 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801B2E66 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801B2E68 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801B2E5C; -extern s16 D_801B2E5E; -extern s16 D_801B2E60; -extern s16 D_801B2E64; -extern s16 D_801B2E66; -extern s16 D_801B2E68; - -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_801B2E5C; - D_80114F34 = D_801B2E5E; - D_80114F38 = D_801B2E60; - D_80114F24 = D_801B2E64; - D_80114F28 = D_801B2E66; - D_80114F2C = D_801B2E68; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801B2E44), src[8..15] -> (*(S8_8017B8E8 *)&D_801B2E3C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801B2E44) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801B2E3C) = ((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_801B2E4C; -extern u16 D_801B2E4E; -extern u16 D_801B2E50; - -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_801B2DCC; -extern short D_801B2E54; -extern short D_801B2E56; -extern short D_801B2E58; -extern s16 D_801B2E44; -extern s16 D_801B2E46; -extern s16 D_801B2E48; -extern s16 D_801B2E3C; -extern s16 D_801B2E3E; -extern s16 D_801B2E40; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B2E4C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B2E4E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B2E50); - (*(s16 *)&D_801B2E54) = buf[0]; - (*(s16 *)&D_801B2E56) = buf[1]; - (*(s16 *)&D_801B2E58) = buf[2]; - D_801B2E44 = D_80114F30 + buf[0]; - D_801B2DCC = 0; - D_801B2E46 = D_80114F34 + buf[1]; - D_801B2E48 = D_80114F38 + buf[2]; - D_801B2E3C = D_80114F24 + buf[0]; - D_801B2E3E = D_80114F28 + buf[1]; - D_801B2E40 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801B2DEC; -extern SV4 D_801B2DF4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B2DF4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801B2DEC = 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_801B2DF4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B2DF4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801B2DEC) = 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_801B2DF4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801B2E14[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801B2E14; - 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_801B2DCC; -extern s16 D_801B3010; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801B2DCC = D_801B2DCC + 1; - if (D_801B2DCC >= 0x1F) { - D_801B3010 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801B2DCC; -extern s16 D_801B3010; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801B2DCC = D_801B2DCC + 1; - if (0x18 < D_801B2DCC) { - func_8012A4BC(); - D_801B3010 = 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_801B2DCC; -extern void (*D_801B2E10)(void); -extern short D_801B2E54; -extern short D_801B2E56; -extern short D_801B2E58; -extern s16 D_801B3010; - -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_801B2DCC = D_801B2DCC + 1; - if (D_801B2DCC >= 0x19) { - if (D_801B2E10 != 0) { - (*D_801B2E10)(); - } else { - D_80114F30 = D_80114F30 + D_801B2E54; - D_80114F34 = D_80114F34 + D_801B2E56; - D_80114F38 = D_80114F38 + D_801B2E58; - D_80114F24 = D_80114F24 + D_801B2E54; - D_80114F28 = D_80114F28 + D_801B2E56; - D_80114F2C = D_80114F2C + D_801B2E58; - func_8012A4BC(); - } - D_801B3010 = 0; - } -} - - - -extern void (*D_801886E0[])(void); - -void func_8017BE60(void *a0) { - D_801886E0[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017BEBC); - - -extern void (*D_80188718[])(void); - -void func_8017BEF8(void *a0) { - D_80188718[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017BF34); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017BF84); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017BFE0); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017C064); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017C1CC); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017C218); - - -extern void (*D_8018872C[])(void); - -void func_8017C524(void *a0) { - D_8018872C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017C560); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017C5A0); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017C610); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017C69C); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017C770); - - -extern void (*D_80188740[])(void); - -void func_8017C7C4(void *a0) { - D_80188740[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017C800); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017C8B4); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017C910); - - -extern void (*D_80188760[])(void); - -void func_8017CA80(void *a0) { - D_80188760[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017CABC); - -extern void func_80146C3C(void); -void func_8017CC80(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_80188768[])(void); - -void func_8017CD14(void *a0) { - D_80188768[*(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_80188754; - -void func_8017CD50(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_80188754, 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_8017CDF4(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; - } -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017CE58); - - -extern void (*D_80188918[])(void); - -void func_8017D9CC(void *a0) { - D_80188918[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017DA08); - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017DA4C(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_80188920[])(void); - -void func_8017DA70(void *a0) { - D_80188920[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017DAAC); - - -extern void (*D_80188928[])(void); - -void func_8017DAF0(void *a0) { - D_80188928[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017DB2C); - - -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_8017DB6C(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_8017DBE8(void) { - func_800D1EBC(); - } - - - -extern void (*D_80188934[])(void); - -void func_8017DC08(void *a0) { - D_80188934[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017DC44); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017DC88); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017DCC8); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017DCF0); - - -extern void (*D_80188954[])(void); - -void func_8017DD18(void *a0) { - D_80188954[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017DD54); - -void func_8017DD9C(void) { -} - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017DDA4); - - -extern s32 func_8014C050(s32 arg0, s32 arg1); - extern void func_80171928(void *a0); - void func_8017DDE8(void *a0) { - if (!func_8014C050((s32)a0, 0x1A)) { - ((void (*)(void *))func_80171928)(a0); - } - } - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017DE24); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017DE4C); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017DE74); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017DF40); - - -extern void (*D_801889B4[])(void); - -void func_8017E008(void *a0) { - D_801889B4[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017E044); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017E2FC); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017E524); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017E580); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017E60C); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017E6A0); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017E754); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017E780); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017EAA0); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017EBD0); - - -extern void (*D_80188C70[])(void); - -void func_8017ECFC(void *a0) { - D_80188C70[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017ED38); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017EDDC); - -void func_8017EE38(void) { -} - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017EE40); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017EE8C); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017EF54); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017F01C); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017F088); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017F0A8); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017F214); - - -extern void func_8017E754(void); -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_8017F250(void) { - func_8017E754(); - ((s32 (*)(s32, s32))func_8002D4C8)(0xB16, 0); -} - - -extern void func_8017E6A0(void); -void func_8017F27C(void) { - func_8017E6A0(); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017F29C); - - -extern void (*D_80188E48[])(void); - -void func_8017F2BC(void *a0) { - D_80188E48[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017F2F8); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017F49C); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017F4BC); - -s32 func_8017F4F4(s32 *a0) { - return *(u16 *)((s32)a0 + 0x2) == 0x3; - } - - - -extern void (*D_80188EE8[])(void); - -void func_8017F508(void *a0) { - D_80188EE8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017F544); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017F5B8); - -void func_8017F5F8(void) { -} - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017F600); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017F704); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017F7FC); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017F87C); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017F8D8); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017FA74); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017FC44); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017FE04); - - -extern void (*D_801893A0[])(void); - -void func_8017FE4C(void *a0) { - D_801893A0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017FE88); - -extern void func_80029514(s32 arg); - void func_8017FF34(void) { - func_80029514(0x14A); - } - - - -extern s32 D_801B2E70; - -void func_8017FF54(void) { - D_801B2E70 = 1; -} - - - -extern s32 D_801B2E70; - -void func_8017FF68(void) { - D_801B2E70 = 2; -} - - - -extern s32 D_801B2E70; - -void func_8017FF7C(void) { - D_801B2E70 = 3; -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017FF90); - - -extern s32 D_801B2E70; - -void func_8017FFA0(void) { - D_801B2E70 = 4; -} - - -extern void func_80029124(s32 arg0, s32 arg1); - void func_8017FFB4(void) { - func_80029124(0x100, 1); - } - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8017FFD8); - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80180074); - - - -extern s32 func_8012E57C(s32 arg0, s32 arg1); - void func_801800A8(void) { - s32 r; - s32 p; - r = func_8012E57C(0x1af, 0x1); - if (r != 0) { - *(s16 *)(r + 0xFC) = 1; - } - } - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_801800DC); - -extern void func_80029514(s32 arg); - void func_8018010C(void) { - func_80029514(0x17C); - } - - -extern void func_80029124(s32 arg0, s32 arg1); - void func_8018012C(void) { - func_80029124(0x105, 1); - } - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80180150); - -void func_801801EC(void) { -} - - -extern void (*D_8018944C[])(void); - -void func_801801F4(void *a0) { - D_8018944C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80180230); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80180298); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_801802EC); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80180380); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_801803F4); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_801804C0); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8018052C); - - -extern void (*D_80189488[])(void); - -void func_80180584(void *a0) { - D_80189488[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_801805C0); - -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8018052C(void *a0); -void func_80180614(int param_1) -{ - if (((int (*)(void))func_8012BEE8)() != 0) { - ((void (*)(int))func_8018052C)(param_1); - } -} - - -extern void func_8018074C(s32 a0, s32 a1); - void func_8018064C(s32 arg0) { - func_8018074C(arg0, arg0 + 0x24); - } - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8018066C); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8018074C); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80180874); - -extern s32 func_80180A10(void); - void func_801809F0(void) { - func_80180A10(); - } - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80180A10); - -extern s32 func_80180A9C(void); - -s32 func_80180A9C(void) { - return 0x36; -} - - - -extern void (*D_80189518[])(void); - -void func_80180AA4(void *a0) { - D_80189518[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80180AE0); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80180B28); - -void func_80180BF4(void) { -} - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80180BFC); - - -// @class: struct -// @stuck: none — MATCH (fn-ptr table %lo-fold via extern array of code ptrs) - -extern code_fn D_801AC620[]; - -extern s32 func_80180EC8(s32 a0); - -void func_80180D80(int param_1) -{ - D_801AC620[*(unsigned short *)(param_1 + 2)](); - ((void (*)(int))func_80180EC8)(param_1); - return; -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80180DD0); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80180E50); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80180EC8); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80180F08); - - -extern void (*D_801AC67C[])(void); - -void func_80181124(void *a0) { - D_801AC67C[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_80181160(void) { -} - -void func_80181168(void) { -} - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80181170); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80181274); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8018150C); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80181694); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80181B40); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80181CD4); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80182084); - -extern void (*D_801AD7C8[])(void); - -void func_80182170(void *a0) { - D_801AD7C8[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void (*D_801AD87C[])(void); - -void func_801821AC(void *a0) { - D_801AD87C[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_801821E8(void *a0) { - *(s8 *)((s32)a0 + 0xc1) = 0; - *(s16 *)((s32)a0 + 0x5e) = 0; - *(s16 *)((s32)a0 + 0x5c) &= 0xc800; - } - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80182200); - -void func_801822A4(void *a0) { - void *a1 = *(void **)((char *)a0 + 0x20); - *(u16 *)((char *)a1 + 0x12) += *(u16 *)((char *)a0 + 0xfc); - } - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_801822C0); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80182344); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80182380); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_801823B0); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80182434); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_801824F8); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_801825D8); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80182648); - -void func_80182724(void) { -} - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8018272C); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_801827E4); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_801828A8); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_801828FC); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80182978); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80182A5C); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80182B28); - -extern void (*D_801AFEA0[])(void); - -void func_80182C00(void *a0) { - D_801AFEA0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80182C3C); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80182E30); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80182EE0); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80182F90); - -void func_80183040(void) { -} - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80183048); - - -extern void (*D_801B01E8[])(void); - -void func_801830EC(void *a0) { - D_801B01E8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80183128); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_801831FC); - -void func_80183224(void) { -} - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8018322C); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80183378); - -extern void func_8012C218(void *a0); - void func_80183498(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 2; - ((s32 (*)(s32))func_8012C218)(*(s32 *)((char *)arg0 + 0xcc)); - } - - -void func_801834C4(void *a0) { - *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 1; - } - - -void func_801834D4(void *a0) { - *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 2; - } - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_801834E4); - - -extern s32 D_80126B58; -extern void func_8014ADA8(s32 a0, s32 a1); - -void func_80183524(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_80183558(void) { - return ((s32 (*)(void))func_80174764)() == 1; -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8018357C); - - -extern void (*D_801B0210[])(void); - -void func_801835E0(void *a0) { - D_801B0210[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8018361C); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_801836A4); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80183764); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_801837D4); - - -extern void (*D_801B033C[])(void); - -void func_801838CC(void *a0) { - D_801B033C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80183908); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_801839E0); - -void func_80183A08(void) { -} - - -extern void func_80178CBC(s32 a0, s32 a1); - extern short D_801B02EC; - void func_80183A10(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 4; - func_80178CBC((int)arg0, (int)&D_801B02EC); - } - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80183A3C); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80183A7C); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80183B3C); - -void func_80183BA8(void *a0) { - *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 1; - } - - -void func_80183BB8(void *a0) { - *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 2; - } - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80183BC8); - -extern void func_800296F8(void *a0); - s32 func_80183BE0(s32 arg0) { - ((void (*)(s32))func_800296F8)(*(s32 *)(arg0 + 0xdc)); - } - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80183C04); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80183D58); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80183FB0); - -extern void (*D_801B0404[])(void); - -void func_80184004(void *a0) { - D_801B0404[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80184040); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8018412C); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_801841EC); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8018423C); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80184324); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_80184370); - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017A4AC", func_8018478C); - -void func_80184CAC(void) { -} - - - diff --git a/src/ov_SC03_092/ov_SC03_092_jr_8017AE2C.c b/src/ov_SC03_092/ov_SC03_092_jr_8017AE2C.c new file mode 100644 index 000000000..edec4f5a5 --- /dev/null +++ b/src/ov_SC03_092/ov_SC03_092_jr_8017AE2C.c @@ -0,0 +1,4324 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80187238; +extern u8 D_801871A8; +extern u8 D_80187184; +extern u8 D_80187160; +extern u8 D_80187214; +extern u8 D_801871F0; +extern u8 D_801871CC; +extern u8 D_8018713C; +extern void func_80145934(void); +extern u8 D_801872C8; +extern u8 D_801872A4; +extern u8 D_80187280; +extern u8 D_8018725C; +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_801866C0[]; +extern unsigned char D_801866F0[]; +extern unsigned char D_80186740[]; +extern unsigned char D_80186770[]; +extern unsigned char D_801867A0[]; +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(void); +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_801867F0[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_801868B8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80186940[]; +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_80186948; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801B1CC8; +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_801B1CCC; +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_80186978; +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 void 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_80186A20[])(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_80186A44[])(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_80186A34; +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_80186A58[])(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_80186A64[]; +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_80186A74[])(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_80186A8C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80186A7C; +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_80186AA0[])(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_80186ABC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80186AAC; +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_80186AD0[])(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_80186AE4[])(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_80186AF8; +extern void (*D_80186B20[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80186B00; +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_80186B6C[])(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_80186B70[])(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(void *a0); +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_80186FD4[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80186FE4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801B1D00; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018700C[])(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_80186FEC; +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_80186FFC; +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_8018704C[])(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_80187054[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80187020; +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_80187060[])(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_80187030; +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_801B1D08; +extern s32 D_801B1D14; +extern s32 D_801B1D18; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018709C[])(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_80187070[]; +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_801B1D10; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801872EC[])(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_8018710C[]; +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_80187390[])(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_801874E4[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80187300; +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_801874EC[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80187310; +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_80187330; +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_801874F4[])(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(void); +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_8018751C[])(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_80187528[])(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_8018739C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801875CC; +extern void func_8015D380(s32 a0); +extern unsigned char D_801866B0[]; +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_801875E0[]; +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_8018761C[]; +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_80187664; +extern u16 D_80187666; +extern u16 D_80187668; +extern s32 D_8018766C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80187674; +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_80187380; +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_801876F8[]; +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_801877A8[])(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_801877D8[]; +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_8018783C; +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_801B1D20[]; +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_80187860[])(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_801B1D78[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_801878A8[])(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_80187898; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801B159C[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_801878B0[])(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_80187904[])(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_801878CC; +extern s16 D_80187900; +extern s16 D_801878FE; +extern s16 D_801878FC; +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_80187910[])(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_801B1DD8; +extern u8 D_801B1DD9; +extern u8 D_801B1DDA; +extern u8 D_801B1DDB; +extern u8 D_801B1DDC; +extern u8 D_801B1DDD; +extern u8 D_801B1DDE; +extern u8 D_801B1DDF; +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_80187920[])(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_801B1E18; +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_80187964[])(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_801879E0[]; +extern s32 D_80187A00[]; +extern u8 D_80187A7C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80187A9C[]; +extern u8 D_80187ABC[]; +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_80187B58[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80187BD4[])(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_801B15AC; +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_80187BE0[])(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_80187BE8[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80187CB0[])(void); +extern void func_80166618(void *a0); +extern void (*D_80187CC0[])(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_80187CD0[])(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_80187CDC[])(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_80187C3C[]; +extern u8 D_80187C50[]; +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_80187CF4[])(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_80187CFC[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80187D04[])(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_80187D0C[])(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_80187D14[])(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_80187D1C[])(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_80187D24[])(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_80187DD8[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80187DE0[])(void); +extern void func_80169F00(void *a0); +extern char D_80187D90[]; +extern char D_80187D50[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80187E18[])(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_80187E24[])(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_80187E6C[])(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_80187EE8[])(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_801B2138; +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_80187EDC[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80187F20[]; +extern unsigned short D_80187F28[]; +extern unsigned short D_80187F30[]; +extern unsigned char D_801B2140[]; +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_801B2138; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80187F38[])(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_801B2274; +extern M2C_UNK D_801B2278; +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_801B2200; +extern void (*D_80187F68[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801B227C[]; +extern u8 D_801B2284[]; +extern u8 D_801B2234[]; +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_80187F70[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80187F8C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80187F94[])(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_80187FFC[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80187FA0; +extern u8 D_80187FAC; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80188030[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80188038[])(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_8018808C[])(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_801880C0[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801880B0[]; +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_801880DC; +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); +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_80188154[])(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_8018815C[])(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_80188164[])(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_8018816C[])(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_80188174[])(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_8018817C[])(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_80188188[])(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_80188194[])(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_801881A0[])(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_801881B0[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801881C0[])(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_801881C8[])(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_801881D0[])(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_801881D8[])(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_801881E0[])(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_801881E8[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801881F0[])(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_801881F8[])(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_80188200[])(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_80188208[])(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_80188210[])(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_80188218[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80188220[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80188228[])(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_80188230[])(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_80188238[])(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_80188240[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80188248[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80188250[])(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_80188258[])(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_80188260[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80188268[])(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_80188270[])(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_801882B4[])(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_80188278; +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_801882E4[])(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_80188320[])(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(s32); +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_80188378[])(); +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_80188388[])(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_80188390[])(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_801884F8[])(); +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_80188504[])(); +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_801B17F4; +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 int func_801789AC(void); +extern s16 D_801B3010; +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_801B29B8; +extern short D_801B3084; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801B2DE4; +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_801B2E0C; +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_801B2DC8; +extern s32 func_8017A3B0(void); +extern short D_801B2E04; +extern short D_801B2E00; +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_801B2FE0; +extern s16 D_801B2FE2; +extern s16 D_801B2FEC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801B2FE0; + + 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_801B2FEC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801B2FE0+0xC == &D_801B2FEC; 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_801B2FE0 + 0xC)) < 0x101) { + D_801B2FE0 = 0; + D_801B2FE2 = 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_801B2FEC); + 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_801B2FE0 + 0xC)) < 0x101) { + D_801B2FE0 = 0; + D_801B2FE2 = 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_801B2E44; + extern s16 D_801B2E46; + extern s16 D_801B2E48; + extern s16 D_801B2E3C; + extern s16 D_801B2E3E; + extern s16 D_801B2E40; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B2E44, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B2E46, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B2E48, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B2E3C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B2E3E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B2E40, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801B2DCC; +extern u16 D_801B2E4C; +extern u16 D_801B2E4E; +extern u16 D_801B2E50; +extern s16 D_801B3010; + +void func_8017B1D8(void) { + func_8012A418(); + D_801B3010 = 0; + D_801B2DCC = 0; + D_801B2E4C = D_80126B5E; + D_801B2E4E = D_80126B62; + D_801B2E50 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80188640[]; + extern s16 D_801B2E44; + extern s16 D_801B2E3C; + 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_80188640[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80188640[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B2E44; + s16 *p78C = &D_801B2E3C; + *(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_801B3010 = 1; + D_801B2DCC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B2DEC; + extern SV4_8017B368 D_801B2DF4; + extern s16 D_801B2E44; + extern s16 D_801B2E3C; + extern u16 D_80188640; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801B2DEC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801B2DF4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80188640)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80188640)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801B2E44) = loc0; + (*(SV4_8017B368 *)&D_801B2E3C) = loc1; + D_801B3010 = 1; + D_801B2DCC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80188640[]; + extern s16 D_801B2E44; + extern s16 D_801B2E46; + extern s16 D_801B2E48; + extern s16 D_801B2E3C; + extern s16 D_801B2E3E; + extern s16 D_801B2E40; + 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_80188640[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80188640[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B2E44; + s16 *p78C = &D_801B2E3C; + *(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_801B2E46; + v798 = D_801B2E48; + v78C = *p78C; + v78E = D_801B2E3E; + v790 = D_801B2E40; + __asm__ __volatile__(""); + D_801B3010 = 1; + D_801B2DCC = 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_801B2DCC; +extern s16 D_801B2E44; +extern s16 D_801B2E46; +extern s16 D_801B2E48; +extern s16 D_801B2E3C; +extern s16 D_801B2E3E; +extern s16 D_801B2E40; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801B2DCC = 0; + D_801B2E44 = (s16) D_80114F30; + D_801B2E46 = (s16) D_80114F34; + D_801B2E48 = (s16) D_80114F38; + D_801B2E3C = (s16) D_80114F24; + D_801B2E3E = (s16) D_80114F28; + D_801B2E40 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801B2E5C; +extern s16 D_801B2E5E; +extern s16 D_801B2E60; +extern s16 D_801B2E64; +extern s16 D_801B2E66; +extern s16 D_801B2E68; + +void func_8017B824(void) { + D_801B2E5C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801B2E5E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801B2E60 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801B2E64 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801B2E66 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801B2E68 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801B2E5C; +extern s16 D_801B2E5E; +extern s16 D_801B2E60; +extern s16 D_801B2E64; +extern s16 D_801B2E66; +extern s16 D_801B2E68; + +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_801B2E5C; + D_80114F34 = D_801B2E5E; + D_80114F38 = D_801B2E60; + D_80114F24 = D_801B2E64; + D_80114F28 = D_801B2E66; + D_80114F2C = D_801B2E68; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801B2E44), src[8..15] -> (*(S8_8017B8E8 *)&D_801B2E3C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801B2E44) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801B2E3C) = ((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_801B2E4C; +extern u16 D_801B2E4E; +extern u16 D_801B2E50; + +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_801B2DCC; +extern short D_801B2E54; +extern short D_801B2E56; +extern short D_801B2E58; +extern s16 D_801B2E44; +extern s16 D_801B2E46; +extern s16 D_801B2E48; +extern s16 D_801B2E3C; +extern s16 D_801B2E3E; +extern s16 D_801B2E40; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B2E4C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B2E4E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B2E50); + (*(s16 *)&D_801B2E54) = buf[0]; + (*(s16 *)&D_801B2E56) = buf[1]; + (*(s16 *)&D_801B2E58) = buf[2]; + D_801B2E44 = D_80114F30 + buf[0]; + D_801B2DCC = 0; + D_801B2E46 = D_80114F34 + buf[1]; + D_801B2E48 = D_80114F38 + buf[2]; + D_801B2E3C = D_80114F24 + buf[0]; + D_801B2E3E = D_80114F28 + buf[1]; + D_801B2E40 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801B2DEC; +extern SV4 D_801B2DF4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B2DF4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801B2DEC = 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_801B2DF4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B2DF4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801B2DEC) = 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_801B2DF4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801B2E14[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801B2E14; + 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_801B2DCC; +extern s16 D_801B3010; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801B2DCC = D_801B2DCC + 1; + if (D_801B2DCC >= 0x1F) { + D_801B3010 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801B2DCC; +extern s16 D_801B3010; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801B2DCC = D_801B2DCC + 1; + if (0x18 < D_801B2DCC) { + func_8012A4BC(); + D_801B3010 = 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_801B2DCC; +extern void (*D_801B2E10)(void); +extern short D_801B2E54; +extern short D_801B2E56; +extern short D_801B2E58; +extern s16 D_801B3010; + +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_801B2DCC = D_801B2DCC + 1; + if (D_801B2DCC >= 0x19) { + if (D_801B2E10 != 0) { + (*D_801B2E10)(); + } else { + D_80114F30 = D_80114F30 + D_801B2E54; + D_80114F34 = D_80114F34 + D_801B2E56; + D_80114F38 = D_80114F38 + D_801B2E58; + D_80114F24 = D_80114F24 + D_801B2E54; + D_80114F28 = D_80114F28 + D_801B2E56; + D_80114F2C = D_80114F2C + D_801B2E58; + func_8012A4BC(); + } + D_801B3010 = 0; + } +} + + + +extern void (*D_801886E0[])(void); + +void func_8017BE60(void *a0) { + D_801886E0[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017BEBC); + + +extern void (*D_80188718[])(void); + +void func_8017BEF8(void *a0) { + D_80188718[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017BF34); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017BF84); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017BFE0); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017C064); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017C1CC); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017C218); + + +extern void (*D_8018872C[])(void); + +void func_8017C524(void *a0) { + D_8018872C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017C560); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017C5A0); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017C610); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017C69C); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017C770); + + +extern void (*D_80188740[])(void); + +void func_8017C7C4(void *a0) { + D_80188740[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017C800); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017C8B4); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017C910); + + +extern void (*D_80188760[])(void); + +void func_8017CA80(void *a0) { + D_80188760[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017CABC); + +extern void func_80146C3C(void); +void func_8017CC80(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_80188768[])(void); + +void func_8017CD14(void *a0) { + D_80188768[*(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_80188754; + +void func_8017CD50(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_80188754, 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_8017CDF4(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; + } +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017CE58); + + +extern void (*D_80188918[])(void); + +void func_8017D9CC(void *a0) { + D_80188918[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017DA08); + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017DA4C(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_80188920[])(void); + +void func_8017DA70(void *a0) { + D_80188920[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017DAAC); + + +extern void (*D_80188928[])(void); + +void func_8017DAF0(void *a0) { + D_80188928[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017DB2C); + + +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_8017DB6C(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_8017DBE8(void) { + func_800D1EBC(); + } + + + +extern void (*D_80188934[])(void); + +void func_8017DC08(void *a0) { + D_80188934[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017DC44); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017DC88); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017DCC8); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017DCF0); + + +extern void (*D_80188954[])(void); + +void func_8017DD18(void *a0) { + D_80188954[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017DD54); + +void func_8017DD9C(void) { +} + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017DDA4); + + +extern s32 func_8014C050(s32 arg0, s32 arg1); + extern void func_80171928(void *a0); + void func_8017DDE8(void *a0) { + if (!func_8014C050((s32)a0, 0x1A)) { + ((void (*)(void *))func_80171928)(a0); + } + } + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017DE24); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017DE4C); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017DE74); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017DF40); + + +extern void (*D_801889B4[])(void); + +void func_8017E008(void *a0) { + D_801889B4[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017E044); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017E2FC); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017E524); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017E580); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017E60C); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017E6A0); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017E754); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017E780); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017EAA0); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017EBD0); + + +extern void (*D_80188C70[])(void); + +void func_8017ECFC(void *a0) { + D_80188C70[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017ED38); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017EDDC); + +void func_8017EE38(void) { +} + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017EE40); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017EE8C); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017EF54); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017F01C); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017F088); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017F0A8); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017F214); + + +extern void func_8017E754(void); +extern void func_8002D4C8(s32 a0, s32 a1); + +void func_8017F250(void) { + func_8017E754(); + ((s32 (*)(s32, s32))func_8002D4C8)(0xB16, 0); +} + + +extern void func_8017E6A0(void); +void func_8017F27C(void) { + func_8017E6A0(); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017F29C); + + +extern void (*D_80188E48[])(void); + +void func_8017F2BC(void *a0) { + D_80188E48[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017F2F8); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017F49C); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017F4BC); + +s32 func_8017F4F4(s32 *a0) { + return *(u16 *)((s32)a0 + 0x2) == 0x3; + } + + + +extern void (*D_80188EE8[])(void); + +void func_8017F508(void *a0) { + D_80188EE8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017F544); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017F5B8); + +void func_8017F5F8(void) { +} + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017F600); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017F704); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017F7FC); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017F87C); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017F8D8); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017FA74); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017FC44); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017FE04); + + +extern void (*D_801893A0[])(void); + +void func_8017FE4C(void *a0) { + D_801893A0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017FE88); + +extern void func_80029514(s32 arg); + void func_8017FF34(void) { + func_80029514(0x14A); + } + + + +extern s32 D_801B2E70; + +void func_8017FF54(void) { + D_801B2E70 = 1; +} + + + +extern s32 D_801B2E70; + +void func_8017FF68(void) { + D_801B2E70 = 2; +} + + + +extern s32 D_801B2E70; + +void func_8017FF7C(void) { + D_801B2E70 = 3; +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017FF90); + + +extern s32 D_801B2E70; + +void func_8017FFA0(void) { + D_801B2E70 = 4; +} + + +extern void func_80029124(s32 arg0, s32 arg1); + void func_8017FFB4(void) { + func_80029124(0x100, 1); + } + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017FFD8); + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80180074); + + + +extern s32 func_8012E57C(s32 arg0, s32 arg1); + void func_801800A8(void) { + s32 r; + s32 p; + r = func_8012E57C(0x1af, 0x1); + if (r != 0) { + *(s16 *)(r + 0xFC) = 1; + } + } + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_801800DC); + +extern void func_80029514(s32 arg); + void func_8018010C(void) { + func_80029514(0x17C); + } + + +extern void func_80029124(s32 arg0, s32 arg1); + void func_8018012C(void) { + func_80029124(0x105, 1); + } + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80180150); + +void func_801801EC(void) { +} + + +extern void (*D_8018944C[])(void); + +void func_801801F4(void *a0) { + D_8018944C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80180230); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80180298); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_801802EC); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80180380); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_801803F4); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_801804C0); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8018052C); + + +extern void (*D_80189488[])(void); + +void func_80180584(void *a0) { + D_80189488[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_801805C0); + +extern s32 func_8012BEE8(s32 a0); +extern s32 func_8018052C(void *a0); +void func_80180614(int param_1) +{ + if (((int (*)(void))func_8012BEE8)() != 0) { + ((void (*)(int))func_8018052C)(param_1); + } +} + + +extern void func_8018074C(s32 a0, s32 a1); + void func_8018064C(s32 arg0) { + func_8018074C(arg0, arg0 + 0x24); + } + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8018066C); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8018074C); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80180874); + +extern s32 func_80180A10(void); + void func_801809F0(void) { + func_80180A10(); + } + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80180A10); + +extern s32 func_80180A9C(void); + +s32 func_80180A9C(void) { + return 0x36; +} + + + +extern void (*D_80189518[])(void); + +void func_80180AA4(void *a0) { + D_80189518[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80180AE0); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80180B28); + +void func_80180BF4(void) { +} + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80180BFC); + + +// @class: struct +// @stuck: none — MATCH (fn-ptr table %lo-fold via extern array of code ptrs) + +extern code_fn D_801AC620[]; + +extern s32 func_80180EC8(s32 a0); + +void func_80180D80(int param_1) +{ + D_801AC620[*(unsigned short *)(param_1 + 2)](); + ((void (*)(int))func_80180EC8)(param_1); + return; +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80180DD0); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80180E50); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80180EC8); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80180F08); + + +extern void (*D_801AC67C[])(void); + +void func_80181124(void *a0) { + D_801AC67C[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_80181160(void) { +} + +void func_80181168(void) { +} + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80181170); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80181274); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8018150C); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80181694); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80181B40); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80181CD4); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80182084); + +extern void (*D_801AD7C8[])(void); + +void func_80182170(void *a0) { + D_801AD7C8[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void (*D_801AD87C[])(void); + +void func_801821AC(void *a0) { + D_801AD87C[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_801821E8(void *a0) { + *(s8 *)((s32)a0 + 0xc1) = 0; + *(s16 *)((s32)a0 + 0x5e) = 0; + *(s16 *)((s32)a0 + 0x5c) &= 0xc800; + } + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80182200); + +void func_801822A4(void *a0) { + void *a1 = *(void **)((char *)a0 + 0x20); + *(u16 *)((char *)a1 + 0x12) += *(u16 *)((char *)a0 + 0xfc); + } + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_801822C0); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80182344); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80182380); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_801823B0); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80182434); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_801824F8); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_801825D8); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80182648); + +void func_80182724(void) { +} + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8018272C); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_801827E4); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_801828A8); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_801828FC); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80182978); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80182A5C); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80182B28); + +extern void (*D_801AFEA0[])(void); + +void func_80182C00(void *a0) { + D_801AFEA0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80182C3C); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80182E30); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80182EE0); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80182F90); + +void func_80183040(void) { +} + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80183048); + + +extern void (*D_801B01E8[])(void); + +void func_801830EC(void *a0) { + D_801B01E8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80183128); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_801831FC); + +void func_80183224(void) { +} + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8018322C); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80183378); + +extern void func_8012C218(void *a0); + void func_80183498(void * arg0) { + *(short *)((char *)arg0 + 0x2) = 2; + ((s32 (*)(s32))func_8012C218)(*(s32 *)((char *)arg0 + 0xcc)); + } + + +void func_801834C4(void *a0) { + *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 1; + } + + +void func_801834D4(void *a0) { + *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 2; + } + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_801834E4); + + +extern s32 D_80126B58; +extern void func_8014ADA8(s32 a0, s32 a1); + +void func_80183524(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_80183558(void) { + return ((s32 (*)(void))func_80174764)() == 1; +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8018357C); + + +extern void (*D_801B0210[])(void); + +void func_801835E0(void *a0) { + D_801B0210[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8018361C); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_801836A4); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80183764); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_801837D4); + + +extern void (*D_801B033C[])(void); + +void func_801838CC(void *a0) { + D_801B033C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80183908); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_801839E0); + +void func_80183A08(void) { +} + + +extern void func_80178CBC(s32 a0, s32 a1); + extern short D_801B02EC; + void func_80183A10(void * arg0) { + *(short *)((char *)arg0 + 0x2) = 4; + func_80178CBC((int)arg0, (int)&D_801B02EC); + } + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80183A3C); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80183A7C); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80183B3C); + +void func_80183BA8(void *a0) { + *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 1; + } + + +void func_80183BB8(void *a0) { + *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 2; + } + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80183BC8); + +extern void func_800296F8(void *a0); + s32 func_80183BE0(s32 arg0) { + ((void (*)(s32))func_800296F8)(*(s32 *)(arg0 + 0xdc)); + } + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80183C04); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80183D58); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80183FB0); + +extern void (*D_801B0404[])(void); + +void func_80184004(void *a0) { + D_801B0404[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80184040); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8018412C); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_801841EC); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8018423C); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80184324); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_80184370); + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8018478C); + +void func_80184CAC(void) { +} + + + + diff --git a/src/ov_SC03_093/ov_SC03_093_jr_8017A4AC.c b/src/ov_SC03_093/ov_SC03_093_jr_8017A4AC.c index 920bea073..e600bba7e 100644 --- a/src/ov_SC03_093/ov_SC03_093_jr_8017A4AC.c +++ b/src/ov_SC03_093/ov_SC03_093_jr_8017A4AC.c @@ -2967,664 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801CC2B4; - extern s16 D_801CC2B6; - extern s16 D_801CC2B8; - extern s16 D_801CC2AC; - extern s16 D_801CC2AE; - extern s16 D_801CC2B0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801CC2B4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801CC2B6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801CC2B8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801CC2AC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801CC2AE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801CC2B0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801CC23C; -extern u16 D_801CC2BC; -extern u16 D_801CC2BE; -extern u16 D_801CC2C0; -extern s16 D_801CC668; - -void func_8017B1D8(void) { - func_8012A418(); - D_801CC668 = 0; - D_801CC23C = 0; - D_801CC2BC = D_80126B5E; - D_801CC2BE = D_80126B62; - D_801CC2C0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80189818[]; - extern s16 D_801CC2B4; - extern s16 D_801CC2AC; - 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_80189818[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80189818[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801CC2B4; - s16 *p78C = &D_801CC2AC; - *(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_801CC668 = 1; - D_801CC23C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801CC25C; - extern SV4_8017B368 D_801CC264; - extern s16 D_801CC2B4; - extern s16 D_801CC2AC; - extern u16 D_80189818; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801CC25C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801CC264; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80189818)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80189818)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801CC2B4) = loc0; - (*(SV4_8017B368 *)&D_801CC2AC) = loc1; - D_801CC668 = 1; - D_801CC23C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80189818[]; - extern s16 D_801CC2B4; - extern s16 D_801CC2B6; - extern s16 D_801CC2B8; - extern s16 D_801CC2AC; - extern s16 D_801CC2AE; - extern s16 D_801CC2B0; - 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_80189818[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80189818[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801CC2B4; - s16 *p78C = &D_801CC2AC; - *(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_801CC2B6; - v798 = D_801CC2B8; - v78C = *p78C; - v78E = D_801CC2AE; - v790 = D_801CC2B0; - __asm__ __volatile__(""); - D_801CC668 = 1; - D_801CC23C = 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_801CC23C; -extern s16 D_801CC2B4; -extern s16 D_801CC2B6; -extern s16 D_801CC2B8; -extern s16 D_801CC2AC; -extern s16 D_801CC2AE; -extern s16 D_801CC2B0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801CC23C = 0; - D_801CC2B4 = (s16) D_80114F30; - D_801CC2B6 = (s16) D_80114F34; - D_801CC2B8 = (s16) D_80114F38; - D_801CC2AC = (s16) D_80114F24; - D_801CC2AE = (s16) D_80114F28; - D_801CC2B0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801CC2CC; -extern s16 D_801CC2CE; -extern s16 D_801CC2D0; -extern s16 D_801CC2D4; -extern s16 D_801CC2D6; -extern s16 D_801CC2D8; - -void func_8017B824(void) { - D_801CC2CC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801CC2CE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801CC2D0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801CC2D4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801CC2D6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801CC2D8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801CC2CC; -extern s16 D_801CC2CE; -extern s16 D_801CC2D0; -extern s16 D_801CC2D4; -extern s16 D_801CC2D6; -extern s16 D_801CC2D8; - -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_801CC2CC; - D_80114F34 = D_801CC2CE; - D_80114F38 = D_801CC2D0; - D_80114F24 = D_801CC2D4; - D_80114F28 = D_801CC2D6; - D_80114F2C = D_801CC2D8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801CC2B4), src[8..15] -> (*(S8_8017B8E8 *)&D_801CC2AC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801CC2B4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801CC2AC) = ((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_801CC2BC; -extern u16 D_801CC2BE; -extern u16 D_801CC2C0; - -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_801CC23C; -extern short D_801CC2C4; -extern short D_801CC2C6; -extern short D_801CC2C8; -extern s16 D_801CC2B4; -extern s16 D_801CC2B6; -extern s16 D_801CC2B8; -extern s16 D_801CC2AC; -extern s16 D_801CC2AE; -extern s16 D_801CC2B0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801CC2BC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801CC2BE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801CC2C0); - (*(s16 *)&D_801CC2C4) = buf[0]; - (*(s16 *)&D_801CC2C6) = buf[1]; - (*(s16 *)&D_801CC2C8) = buf[2]; - D_801CC2B4 = D_80114F30 + buf[0]; - D_801CC23C = 0; - D_801CC2B6 = D_80114F34 + buf[1]; - D_801CC2B8 = D_80114F38 + buf[2]; - D_801CC2AC = D_80114F24 + buf[0]; - D_801CC2AE = D_80114F28 + buf[1]; - D_801CC2B0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801CC25C; -extern SV4 D_801CC264; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801CC264) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801CC25C = 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_801CC264 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801CC264)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801CC25C) = 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_801CC264) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801CC284[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801CC284; - 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_801CC23C; -extern s16 D_801CC668; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801CC23C = D_801CC23C + 1; - if (D_801CC23C >= 0x1F) { - D_801CC668 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801CC23C; -extern s16 D_801CC668; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801CC23C = D_801CC23C + 1; - if (0x18 < D_801CC23C) { - func_8012A4BC(); - D_801CC668 = 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_801CC23C; -extern void (*D_801CC280)(void); -extern short D_801CC2C4; -extern short D_801CC2C6; -extern short D_801CC2C8; -extern s16 D_801CC668; - -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_801CC23C = D_801CC23C + 1; - if (D_801CC23C >= 0x19) { - if (D_801CC280 != 0) { - (*D_801CC280)(); - } else { - D_80114F30 = D_80114F30 + D_801CC2C4; - D_80114F34 = D_80114F34 + D_801CC2C6; - D_80114F38 = D_80114F38 + D_801CC2C8; - D_80114F24 = D_80114F24 + D_801CC2C4; - D_80114F28 = D_80114F28 + D_801CC2C6; - D_80114F2C = D_80114F2C + D_801CC2C8; - func_8012A4BC(); - } - D_801CC668 = 0; - } -} - - - -extern void (*D_801898B8[])(void); - -void func_8017BE60(void *a0) { - D_801898B8[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017BFEC); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017C378); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017C5F0); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017C738); - - -extern void (*D_801899D4[])(void); - -void func_8017C8B8(void *a0) { - D_801899D4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017C8F4); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017C940); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017CA34); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017CAB4); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017CB68); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017CBD4); - -extern void func_8012C218(void); -void func_8017CC60(void) { - func_8012C218(); -} - - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017CC80); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017CCD4); - - -extern void (*D_80189A2C[])(void); - -void func_8017CD10(void *a0) { - D_80189A2C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017CD4C); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017CD9C); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017CDF8); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017CE7C); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017CFE4); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017D030); - - -extern void (*D_80189A40[])(void); - -void func_8017D33C(void *a0) { - D_80189A40[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017D378); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017D3B8); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017D428); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017D4B4); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017D588); - - -extern void (*D_80189A54[])(void); - -void func_8017D5DC(void *a0) { - D_80189A54[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017D618); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017D6CC); - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017A4AC", func_8017D728); diff --git a/src/ov_SC03_093/ov_SC03_093_jr_8017AE2C.c b/src/ov_SC03_093/ov_SC03_093_jr_8017AE2C.c new file mode 100644 index 000000000..e4ad69392 --- /dev/null +++ b/src/ov_SC03_093/ov_SC03_093_jr_8017AE2C.c @@ -0,0 +1,3562 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80188410; +extern u8 D_80188380; +extern u8 D_8018835C; +extern u8 D_80188338; +extern u8 D_801883EC; +extern u8 D_801883C8; +extern u8 D_801883A4; +extern u8 D_80188314; +extern void func_80145934(void); +extern u8 D_801884A0; +extern u8 D_8018847C; +extern u8 D_80188458; +extern u8 D_80188434; +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_80187898[]; +extern unsigned char D_801878C8[]; +extern unsigned char D_80187918[]; +extern unsigned char D_80187948[]; +extern unsigned char D_80187978[]; +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(void); +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_801879C8[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80187A90[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80187B18[]; +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_80187B20; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801CB138; +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_801CB13C; +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_80187B50; +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 void 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_80187BF8[])(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_80187C1C[])(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_80187C0C; +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_80187C30[])(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_80187C3C[]; +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_80187C4C[])(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_80187C64[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80187C54; +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_80187C78[])(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_80187C94[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80187C84; +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_80187CA8[])(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_80187CBC[])(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_80187CD0; +extern void (*D_80187CF8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80187CD8; +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_80187D44[])(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_80187D48[])(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(void *a0); +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_801881AC[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_801881BC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801CB170; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801881E4[])(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_801881C4; +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_801881D4; +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_80188224[])(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_8018822C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801881F8; +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_80188238[])(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_80188208; +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_801CB178; +extern s32 D_801CB184; +extern s32 D_801CB188; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80188274[])(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_80188248[]; +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_801CB180; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801884C4[])(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_801882E4[]; +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_80188568[])(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_801886BC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801884D8; +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_801886C4[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801884E8; +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_80188508; +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_801886CC[])(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(void); +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_801886F4[])(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_80188700[])(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_80188574[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801887A4; +extern void func_8015D380(s32 a0); +extern unsigned char D_80187888[]; +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_801887B8[]; +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_801887F4[]; +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_8018883C; +extern u16 D_8018883E; +extern u16 D_80188840; +extern s32 D_80188844; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018884C; +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_80188558; +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_801888D0[]; +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_80188980[])(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_801889B0[]; +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_80188A14; +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_801CB190[]; +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_80188A38[])(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_801CB1E8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80188A80[])(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_80188A70; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801CA9F0[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_80188A88[])(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_80188ADC[])(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_80188AA4; +extern s16 D_80188AD8; +extern s16 D_80188AD6; +extern s16 D_80188AD4; +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_80188AE8[])(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_801CB248; +extern u8 D_801CB249; +extern u8 D_801CB24A; +extern u8 D_801CB24B; +extern u8 D_801CB24C; +extern u8 D_801CB24D; +extern u8 D_801CB24E; +extern u8 D_801CB24F; +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_80188AF8[])(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_801CB288; +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_80188B3C[])(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_80188BB8[]; +extern s32 D_80188BD8[]; +extern u8 D_80188C54[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80188C74[]; +extern u8 D_80188C94[]; +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_80188D30[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80188DAC[])(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_801CAA00; +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_80188DB8[])(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_80188DC0[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80188E88[])(void); +extern void func_80166618(void *a0); +extern void (*D_80188E98[])(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_80188EA8[])(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_80188EB4[])(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_80188E14[]; +extern u8 D_80188E28[]; +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_80188ECC[])(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_80188ED4[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80188EDC[])(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_80188EE4[])(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_80188EEC[])(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_80188EF4[])(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_80188EFC[])(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_80188FB0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80188FB8[])(void); +extern void func_80169F00(void *a0); +extern char D_80188F68[]; +extern char D_80188F28[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80188FF0[])(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_80188FFC[])(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_80189044[])(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_801890C0[])(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_801CB5A8; +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_801890B4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_801890F8[]; +extern unsigned short D_80189100[]; +extern unsigned short D_80189108[]; +extern unsigned char D_801CB5B0[]; +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_801CB5A8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80189110[])(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_801CB6E4; +extern M2C_UNK D_801CB6E8; +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_801CB670; +extern void (*D_80189140[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801CB6EC[]; +extern u8 D_801CB6F4[]; +extern u8 D_801CB6A4[]; +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_80189148[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80189164[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018916C[])(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_801891D4[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80189178; +extern u8 D_80189184; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80189208[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80189210[])(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_80189264[])(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_80189298[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80189288[]; +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_801892B4; +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); +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_8018932C[])(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_80189334[])(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_8018933C[])(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_80189344[])(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_8018934C[])(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_80189354[])(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_80189360[])(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_8018936C[])(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_80189378[])(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_80189388[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80189398[])(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_801893A0[])(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_801893A8[])(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_801893B0[])(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_801893B8[])(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_801893C0[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801893C8[])(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_801893D0[])(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_801893D8[])(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_801893E0[])(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_801893E8[])(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_801893F0[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801893F8[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80189400[])(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_80189408[])(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_80189410[])(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_80189418[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80189420[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80189428[])(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_80189430[])(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_80189438[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80189440[])(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_80189448[])(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_8018948C[])(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_80189450; +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_801894BC[])(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_801894F8[])(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(s32); +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_80189550[])(); +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_80189560[])(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_80189568[])(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_801896D0[])(); +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_801896DC[])(); +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_801CAC48; +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 int func_801789AC(void); +extern s16 D_801CC668; +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_801CBE28; +extern short D_801CC6DC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801CC254; +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_801CC27C; +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_801CC238; +extern s32 func_8017A3B0(void); +extern short D_801CC274; +extern short D_801CC270; +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_801CC638; +extern s16 D_801CC63A; +extern s16 D_801CC644; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801CC638; + + 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_801CC644); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801CC638+0xC == &D_801CC644; 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_801CC638 + 0xC)) < 0x101) { + D_801CC638 = 0; + D_801CC63A = 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_801CC644); + 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_801CC638 + 0xC)) < 0x101) { + D_801CC638 = 0; + D_801CC63A = 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_801CC2B4; + extern s16 D_801CC2B6; + extern s16 D_801CC2B8; + extern s16 D_801CC2AC; + extern s16 D_801CC2AE; + extern s16 D_801CC2B0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801CC2B4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801CC2B6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801CC2B8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801CC2AC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801CC2AE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801CC2B0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801CC23C; +extern u16 D_801CC2BC; +extern u16 D_801CC2BE; +extern u16 D_801CC2C0; +extern s16 D_801CC668; + +void func_8017B1D8(void) { + func_8012A418(); + D_801CC668 = 0; + D_801CC23C = 0; + D_801CC2BC = D_80126B5E; + D_801CC2BE = D_80126B62; + D_801CC2C0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80189818[]; + extern s16 D_801CC2B4; + extern s16 D_801CC2AC; + 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_80189818[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80189818[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801CC2B4; + s16 *p78C = &D_801CC2AC; + *(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_801CC668 = 1; + D_801CC23C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801CC25C; + extern SV4_8017B368 D_801CC264; + extern s16 D_801CC2B4; + extern s16 D_801CC2AC; + extern u16 D_80189818; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801CC25C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801CC264; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80189818)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80189818)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801CC2B4) = loc0; + (*(SV4_8017B368 *)&D_801CC2AC) = loc1; + D_801CC668 = 1; + D_801CC23C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80189818[]; + extern s16 D_801CC2B4; + extern s16 D_801CC2B6; + extern s16 D_801CC2B8; + extern s16 D_801CC2AC; + extern s16 D_801CC2AE; + extern s16 D_801CC2B0; + 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_80189818[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80189818[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801CC2B4; + s16 *p78C = &D_801CC2AC; + *(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_801CC2B6; + v798 = D_801CC2B8; + v78C = *p78C; + v78E = D_801CC2AE; + v790 = D_801CC2B0; + __asm__ __volatile__(""); + D_801CC668 = 1; + D_801CC23C = 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_801CC23C; +extern s16 D_801CC2B4; +extern s16 D_801CC2B6; +extern s16 D_801CC2B8; +extern s16 D_801CC2AC; +extern s16 D_801CC2AE; +extern s16 D_801CC2B0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801CC23C = 0; + D_801CC2B4 = (s16) D_80114F30; + D_801CC2B6 = (s16) D_80114F34; + D_801CC2B8 = (s16) D_80114F38; + D_801CC2AC = (s16) D_80114F24; + D_801CC2AE = (s16) D_80114F28; + D_801CC2B0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801CC2CC; +extern s16 D_801CC2CE; +extern s16 D_801CC2D0; +extern s16 D_801CC2D4; +extern s16 D_801CC2D6; +extern s16 D_801CC2D8; + +void func_8017B824(void) { + D_801CC2CC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801CC2CE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801CC2D0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801CC2D4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801CC2D6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801CC2D8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801CC2CC; +extern s16 D_801CC2CE; +extern s16 D_801CC2D0; +extern s16 D_801CC2D4; +extern s16 D_801CC2D6; +extern s16 D_801CC2D8; + +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_801CC2CC; + D_80114F34 = D_801CC2CE; + D_80114F38 = D_801CC2D0; + D_80114F24 = D_801CC2D4; + D_80114F28 = D_801CC2D6; + D_80114F2C = D_801CC2D8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801CC2B4), src[8..15] -> (*(S8_8017B8E8 *)&D_801CC2AC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801CC2B4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801CC2AC) = ((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_801CC2BC; +extern u16 D_801CC2BE; +extern u16 D_801CC2C0; + +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_801CC23C; +extern short D_801CC2C4; +extern short D_801CC2C6; +extern short D_801CC2C8; +extern s16 D_801CC2B4; +extern s16 D_801CC2B6; +extern s16 D_801CC2B8; +extern s16 D_801CC2AC; +extern s16 D_801CC2AE; +extern s16 D_801CC2B0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801CC2BC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801CC2BE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801CC2C0); + (*(s16 *)&D_801CC2C4) = buf[0]; + (*(s16 *)&D_801CC2C6) = buf[1]; + (*(s16 *)&D_801CC2C8) = buf[2]; + D_801CC2B4 = D_80114F30 + buf[0]; + D_801CC23C = 0; + D_801CC2B6 = D_80114F34 + buf[1]; + D_801CC2B8 = D_80114F38 + buf[2]; + D_801CC2AC = D_80114F24 + buf[0]; + D_801CC2AE = D_80114F28 + buf[1]; + D_801CC2B0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801CC25C; +extern SV4 D_801CC264; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801CC264) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801CC25C = 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_801CC264 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801CC264)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801CC25C) = 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_801CC264) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801CC284[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801CC284; + 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_801CC23C; +extern s16 D_801CC668; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801CC23C = D_801CC23C + 1; + if (D_801CC23C >= 0x1F) { + D_801CC668 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801CC23C; +extern s16 D_801CC668; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801CC23C = D_801CC23C + 1; + if (0x18 < D_801CC23C) { + func_8012A4BC(); + D_801CC668 = 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_801CC23C; +extern void (*D_801CC280)(void); +extern short D_801CC2C4; +extern short D_801CC2C6; +extern short D_801CC2C8; +extern s16 D_801CC668; + +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_801CC23C = D_801CC23C + 1; + if (D_801CC23C >= 0x19) { + if (D_801CC280 != 0) { + (*D_801CC280)(); + } else { + D_80114F30 = D_80114F30 + D_801CC2C4; + D_80114F34 = D_80114F34 + D_801CC2C6; + D_80114F38 = D_80114F38 + D_801CC2C8; + D_80114F24 = D_80114F24 + D_801CC2C4; + D_80114F28 = D_80114F28 + D_801CC2C6; + D_80114F2C = D_80114F2C + D_801CC2C8; + func_8012A4BC(); + } + D_801CC668 = 0; + } +} + + + +extern void (*D_801898B8[])(void); + +void func_8017BE60(void *a0) { + D_801898B8[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017BFEC); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017C378); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017C5F0); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017C738); + + +extern void (*D_801899D4[])(void); + +void func_8017C8B8(void *a0) { + D_801899D4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017C8F4); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017C940); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017CA34); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017CAB4); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017CB68); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017CBD4); + +extern void func_8012C218(void); +void func_8017CC60(void) { + func_8012C218(); +} + + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017CC80); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017CCD4); + + +extern void (*D_80189A2C[])(void); + +void func_8017CD10(void *a0) { + D_80189A2C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017CD4C); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017CD9C); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017CDF8); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017CE7C); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017CFE4); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017D030); + + +extern void (*D_80189A40[])(void); + +void func_8017D33C(void *a0) { + D_80189A40[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017D378); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017D3B8); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017D428); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017D4B4); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017D588); + + +extern void (*D_80189A54[])(void); + +void func_8017D5DC(void *a0) { + D_80189A54[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017D618); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017D6CC); + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017AE2C", func_8017D728); + diff --git a/src/ov_SC03_094/ov_SC03_094_jr_8017A4AC.c b/src/ov_SC03_094/ov_SC03_094_jr_8017A4AC.c index 42fe134ff..3c996185c 100644 --- a/src/ov_SC03_094/ov_SC03_094_jr_8017A4AC.c +++ b/src/ov_SC03_094/ov_SC03_094_jr_8017A4AC.c @@ -2967,572 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801D30F4; - extern s16 D_801D30F6; - extern s16 D_801D30F8; - extern s16 D_801D30EC; - extern s16 D_801D30EE; - extern s16 D_801D30F0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D30F4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D30F6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D30F8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D30EC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D30EE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D30F0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801D307C; -extern u16 D_801D30FC; -extern u16 D_801D30FE; -extern u16 D_801D3100; -extern s16 D_801D3220; - -void func_8017B1D8(void) { - func_8012A418(); - D_801D3220 = 0; - D_801D307C = 0; - D_801D30FC = D_80126B5E; - D_801D30FE = D_80126B62; - D_801D3100 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018B214[]; - extern s16 D_801D30F4; - extern s16 D_801D30EC; - 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_8018B214[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018B214[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D30F4; - s16 *p78C = &D_801D30EC; - *(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_801D3220 = 1; - D_801D307C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D309C; - extern SV4_8017B368 D_801D30A4; - extern s16 D_801D30F4; - extern s16 D_801D30EC; - extern u16 D_8018B214; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801D309C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801D30A4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018B214)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018B214)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801D30F4) = loc0; - (*(SV4_8017B368 *)&D_801D30EC) = loc1; - D_801D3220 = 1; - D_801D307C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018B214[]; - extern s16 D_801D30F4; - extern s16 D_801D30F6; - extern s16 D_801D30F8; - extern s16 D_801D30EC; - extern s16 D_801D30EE; - extern s16 D_801D30F0; - 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_8018B214[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018B214[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D30F4; - s16 *p78C = &D_801D30EC; - *(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_801D30F6; - v798 = D_801D30F8; - v78C = *p78C; - v78E = D_801D30EE; - v790 = D_801D30F0; - __asm__ __volatile__(""); - D_801D3220 = 1; - D_801D307C = 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_801D307C; -extern s16 D_801D30F4; -extern s16 D_801D30F6; -extern s16 D_801D30F8; -extern s16 D_801D30EC; -extern s16 D_801D30EE; -extern s16 D_801D30F0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801D307C = 0; - D_801D30F4 = (s16) D_80114F30; - D_801D30F6 = (s16) D_80114F34; - D_801D30F8 = (s16) D_80114F38; - D_801D30EC = (s16) D_80114F24; - D_801D30EE = (s16) D_80114F28; - D_801D30F0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801D310C; -extern s16 D_801D310E; -extern s16 D_801D3110; -extern s16 D_801D3114; -extern s16 D_801D3116; -extern s16 D_801D3118; - -void func_8017B824(void) { - D_801D310C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801D310E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801D3110 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801D3114 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801D3116 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801D3118 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801D310C; -extern s16 D_801D310E; -extern s16 D_801D3110; -extern s16 D_801D3114; -extern s16 D_801D3116; -extern s16 D_801D3118; - -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_801D310C; - D_80114F34 = D_801D310E; - D_80114F38 = D_801D3110; - D_80114F24 = D_801D3114; - D_80114F28 = D_801D3116; - D_80114F2C = D_801D3118; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801D30F4), src[8..15] -> (*(S8_8017B8E8 *)&D_801D30EC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801D30F4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801D30EC) = ((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_801D30FC; -extern u16 D_801D30FE; -extern u16 D_801D3100; - -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_801D307C; -extern short D_801D3104; -extern short D_801D3106; -extern short D_801D3108; -extern s16 D_801D30F4; -extern s16 D_801D30F6; -extern s16 D_801D30F8; -extern s16 D_801D30EC; -extern s16 D_801D30EE; -extern s16 D_801D30F0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D30FC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D30FE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D3100); - (*(s16 *)&D_801D3104) = buf[0]; - (*(s16 *)&D_801D3106) = buf[1]; - (*(s16 *)&D_801D3108) = buf[2]; - D_801D30F4 = D_80114F30 + buf[0]; - D_801D307C = 0; - D_801D30F6 = D_80114F34 + buf[1]; - D_801D30F8 = D_80114F38 + buf[2]; - D_801D30EC = D_80114F24 + buf[0]; - D_801D30EE = D_80114F28 + buf[1]; - D_801D30F0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801D309C; -extern SV4 D_801D30A4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D30A4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801D309C = 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_801D30A4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D30A4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801D309C) = 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_801D30A4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801D30C4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801D30C4; - 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_801D307C; -extern s16 D_801D3220; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801D307C = D_801D307C + 1; - if (D_801D307C >= 0x1F) { - D_801D3220 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801D307C; -extern s16 D_801D3220; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801D307C = D_801D307C + 1; - if (0x18 < D_801D307C) { - func_8012A4BC(); - D_801D3220 = 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_801D307C; -extern void (*D_801D30C0)(void); -extern short D_801D3104; -extern short D_801D3106; -extern short D_801D3108; -extern s16 D_801D3220; - -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_801D307C = D_801D307C + 1; - if (D_801D307C >= 0x19) { - if (D_801D30C0 != 0) { - (*D_801D30C0)(); - } else { - D_80114F30 = D_80114F30 + D_801D3104; - D_80114F34 = D_80114F34 + D_801D3106; - D_80114F38 = D_80114F38 + D_801D3108; - D_80114F24 = D_80114F24 + D_801D3104; - D_80114F28 = D_80114F28 + D_801D3106; - D_80114F2C = D_80114F2C + D_801D3108; - func_8012A4BC(); - } - D_801D3220 = 0; - } -} - - - -extern void (*D_8018B2B4[])(void); - -void func_8017BE60(void *a0) { - D_8018B2B4[*(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) */ diff --git a/src/ov_SC03_094/ov_SC03_094_jr_8017AE2C.c b/src/ov_SC03_094/ov_SC03_094_jr_8017AE2C.c new file mode 100644 index 000000000..90d2da5dd --- /dev/null +++ b/src/ov_SC03_094/ov_SC03_094_jr_8017AE2C.c @@ -0,0 +1,3470 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80189E0C; +extern u8 D_80189D7C; +extern u8 D_80189D58; +extern u8 D_80189D34; +extern u8 D_80189DE8; +extern u8 D_80189DC4; +extern u8 D_80189DA0; +extern u8 D_80189D10; +extern void func_80145934(void); +extern u8 D_80189E9C; +extern u8 D_80189E78; +extern u8 D_80189E54; +extern u8 D_80189E30; +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_80189294[]; +extern unsigned char D_801892C4[]; +extern unsigned char D_80189314[]; +extern unsigned char D_80189344[]; +extern unsigned char D_80189374[]; +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(void); +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_801893C4[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018948C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80189514[]; +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_8018951C; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801D1F78; +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_801D1F7C; +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_8018954C; +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 void 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_801895F4[])(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_80189618[])(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_80189608; +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_8018962C[])(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_80189638[]; +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_80189648[])(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_80189660[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80189650; +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_80189674[])(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_80189690[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80189680; +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_801896A4[])(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_801896B8[])(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_801896CC; +extern void (*D_801896F4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801896D4; +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_80189740[])(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_80189744[])(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(void *a0); +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_80189BA8[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80189BB8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801D1FB0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80189BE0[])(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_80189BC0; +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_80189BD0; +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_80189C20[])(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_80189C28[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80189BF4; +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_80189C34[])(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_80189C04; +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_801D1FB8; +extern s32 D_801D1FC4; +extern s32 D_801D1FC8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80189C70[])(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_80189C44[]; +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_801D1FC0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80189EC0[])(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_80189CE0[]; +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_80189F64[])(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_8018A0B8[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80189ED4; +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_8018A0C0[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80189EE4; +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_80189F04; +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_8018A0C8[])(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(void); +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_8018A0F0[])(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_8018A0FC[])(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_80189F70[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018A1A0; +extern void func_8015D380(s32 a0); +extern unsigned char D_80189284[]; +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_8018A1B4[]; +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_8018A1F0[]; +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_8018A238; +extern u16 D_8018A23A; +extern u16 D_8018A23C; +extern s32 D_8018A240; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018A248; +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_80189F54; +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_8018A2CC[]; +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_8018A37C[])(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_8018A3AC[]; +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_8018A410; +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_801D1FD0[]; +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_8018A434[])(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_801D2028[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018A47C[])(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_8018A46C; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801D182C[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_8018A484[])(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_8018A4D8[])(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_8018A4A0; +extern s16 D_8018A4D4; +extern s16 D_8018A4D2; +extern s16 D_8018A4D0; +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_8018A4E4[])(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_801D2088; +extern u8 D_801D2089; +extern u8 D_801D208A; +extern u8 D_801D208B; +extern u8 D_801D208C; +extern u8 D_801D208D; +extern u8 D_801D208E; +extern u8 D_801D208F; +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_8018A4F4[])(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_801D20C8; +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_8018A538[])(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_8018A5B4[]; +extern s32 D_8018A5D4[]; +extern u8 D_8018A650[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018A670[]; +extern u8 D_8018A690[]; +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_8018A72C[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018A7A8[])(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_801D183C; +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_8018A7B4[])(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_8018A7BC[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018A884[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018A894[])(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_8018A8A4[])(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_8018A8B0[])(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_8018A810[]; +extern u8 D_8018A824[]; +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_8018A8C8[])(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_8018A8D0[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018A8D8[])(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_8018A8E0[])(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_8018A8E8[])(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_8018A8F0[])(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_8018A8F8[])(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_8018A9AC[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018A9B4[])(void); +extern void func_80169F00(void *a0); +extern char D_8018A964[]; +extern char D_8018A924[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018A9EC[])(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_8018A9F8[])(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_8018AA40[])(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_8018AABC[])(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_801D23E8; +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_8018AAB0[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018AAF4[]; +extern unsigned short D_8018AAFC[]; +extern unsigned short D_8018AB04[]; +extern unsigned char D_801D23F0[]; +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_801D23E8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018AB0C[])(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_801D2524; +extern M2C_UNK D_801D2528; +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_801D24B0; +extern void (*D_8018AB3C[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801D252C[]; +extern u8 D_801D2534[]; +extern u8 D_801D24E4[]; +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_8018AB44[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018AB60[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018AB68[])(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_8018ABD0[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018AB74; +extern u8 D_8018AB80; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018AC04[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018AC0C[])(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_8018AC60[])(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_8018AC94[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018AC84[]; +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_8018ACB0; +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); +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_8018AD28[])(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_8018AD30[])(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_8018AD38[])(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_8018AD40[])(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_8018AD48[])(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_8018AD50[])(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_8018AD5C[])(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_8018AD68[])(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_8018AD74[])(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_8018AD84[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018AD94[])(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_8018AD9C[])(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_8018ADA4[])(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_8018ADAC[])(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_8018ADB4[])(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_8018ADBC[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018ADC4[])(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_8018ADCC[])(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_8018ADD4[])(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_8018ADDC[])(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_8018ADE4[])(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_8018ADEC[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018ADF4[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018ADFC[])(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_8018AE04[])(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_8018AE0C[])(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_8018AE14[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018AE1C[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018AE24[])(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_8018AE2C[])(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_8018AE34[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018AE3C[])(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_8018AE44[])(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_8018AE88[])(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_8018AE4C; +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_8018AEB8[])(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_8018AEF4[])(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(s32); +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_8018AF4C[])(); +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_8018AF5C[])(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_8018AF64[])(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_8018B0CC[])(); +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_8018B0D8[])(); +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_801D1A84; +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 int func_801789AC(void); +extern s16 D_801D3220; +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_801D2C68; +extern short D_801D3294; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801D3094; +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_801D30BC; +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_801D3078; +extern s32 func_8017A3B0(void); +extern short D_801D30B4; +extern short D_801D30B0; +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_801D31F0; +extern s16 D_801D31F2; +extern s16 D_801D31FC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801D31F0; + + 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_801D31FC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801D31F0+0xC == &D_801D31FC; 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_801D31F0 + 0xC)) < 0x101) { + D_801D31F0 = 0; + D_801D31F2 = 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_801D31FC); + 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_801D31F0 + 0xC)) < 0x101) { + D_801D31F0 = 0; + D_801D31F2 = 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_801D30F4; + extern s16 D_801D30F6; + extern s16 D_801D30F8; + extern s16 D_801D30EC; + extern s16 D_801D30EE; + extern s16 D_801D30F0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D30F4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D30F6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D30F8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D30EC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D30EE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D30F0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801D307C; +extern u16 D_801D30FC; +extern u16 D_801D30FE; +extern u16 D_801D3100; +extern s16 D_801D3220; + +void func_8017B1D8(void) { + func_8012A418(); + D_801D3220 = 0; + D_801D307C = 0; + D_801D30FC = D_80126B5E; + D_801D30FE = D_80126B62; + D_801D3100 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018B214[]; + extern s16 D_801D30F4; + extern s16 D_801D30EC; + 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_8018B214[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018B214[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D30F4; + s16 *p78C = &D_801D30EC; + *(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_801D3220 = 1; + D_801D307C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D309C; + extern SV4_8017B368 D_801D30A4; + extern s16 D_801D30F4; + extern s16 D_801D30EC; + extern u16 D_8018B214; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801D309C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801D30A4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018B214)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018B214)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801D30F4) = loc0; + (*(SV4_8017B368 *)&D_801D30EC) = loc1; + D_801D3220 = 1; + D_801D307C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018B214[]; + extern s16 D_801D30F4; + extern s16 D_801D30F6; + extern s16 D_801D30F8; + extern s16 D_801D30EC; + extern s16 D_801D30EE; + extern s16 D_801D30F0; + 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_8018B214[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018B214[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D30F4; + s16 *p78C = &D_801D30EC; + *(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_801D30F6; + v798 = D_801D30F8; + v78C = *p78C; + v78E = D_801D30EE; + v790 = D_801D30F0; + __asm__ __volatile__(""); + D_801D3220 = 1; + D_801D307C = 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_801D307C; +extern s16 D_801D30F4; +extern s16 D_801D30F6; +extern s16 D_801D30F8; +extern s16 D_801D30EC; +extern s16 D_801D30EE; +extern s16 D_801D30F0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801D307C = 0; + D_801D30F4 = (s16) D_80114F30; + D_801D30F6 = (s16) D_80114F34; + D_801D30F8 = (s16) D_80114F38; + D_801D30EC = (s16) D_80114F24; + D_801D30EE = (s16) D_80114F28; + D_801D30F0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801D310C; +extern s16 D_801D310E; +extern s16 D_801D3110; +extern s16 D_801D3114; +extern s16 D_801D3116; +extern s16 D_801D3118; + +void func_8017B824(void) { + D_801D310C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801D310E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801D3110 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801D3114 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801D3116 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801D3118 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801D310C; +extern s16 D_801D310E; +extern s16 D_801D3110; +extern s16 D_801D3114; +extern s16 D_801D3116; +extern s16 D_801D3118; + +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_801D310C; + D_80114F34 = D_801D310E; + D_80114F38 = D_801D3110; + D_80114F24 = D_801D3114; + D_80114F28 = D_801D3116; + D_80114F2C = D_801D3118; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801D30F4), src[8..15] -> (*(S8_8017B8E8 *)&D_801D30EC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801D30F4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801D30EC) = ((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_801D30FC; +extern u16 D_801D30FE; +extern u16 D_801D3100; + +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_801D307C; +extern short D_801D3104; +extern short D_801D3106; +extern short D_801D3108; +extern s16 D_801D30F4; +extern s16 D_801D30F6; +extern s16 D_801D30F8; +extern s16 D_801D30EC; +extern s16 D_801D30EE; +extern s16 D_801D30F0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D30FC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D30FE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D3100); + (*(s16 *)&D_801D3104) = buf[0]; + (*(s16 *)&D_801D3106) = buf[1]; + (*(s16 *)&D_801D3108) = buf[2]; + D_801D30F4 = D_80114F30 + buf[0]; + D_801D307C = 0; + D_801D30F6 = D_80114F34 + buf[1]; + D_801D30F8 = D_80114F38 + buf[2]; + D_801D30EC = D_80114F24 + buf[0]; + D_801D30EE = D_80114F28 + buf[1]; + D_801D30F0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801D309C; +extern SV4 D_801D30A4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D30A4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801D309C = 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_801D30A4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D30A4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801D309C) = 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_801D30A4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801D30C4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801D30C4; + 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_801D307C; +extern s16 D_801D3220; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801D307C = D_801D307C + 1; + if (D_801D307C >= 0x1F) { + D_801D3220 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801D307C; +extern s16 D_801D3220; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801D307C = D_801D307C + 1; + if (0x18 < D_801D307C) { + func_8012A4BC(); + D_801D3220 = 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_801D307C; +extern void (*D_801D30C0)(void); +extern short D_801D3104; +extern short D_801D3106; +extern short D_801D3108; +extern s16 D_801D3220; + +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_801D307C = D_801D307C + 1; + if (D_801D307C >= 0x19) { + if (D_801D30C0 != 0) { + (*D_801D30C0)(); + } else { + D_80114F30 = D_80114F30 + D_801D3104; + D_80114F34 = D_80114F34 + D_801D3106; + D_80114F38 = D_80114F38 + D_801D3108; + D_80114F24 = D_80114F24 + D_801D3104; + D_80114F28 = D_80114F28 + D_801D3106; + D_80114F2C = D_80114F2C + D_801D3108; + func_8012A4BC(); + } + D_801D3220 = 0; + } +} + + + +extern void (*D_8018B2B4[])(void); + +void func_8017BE60(void *a0) { + D_8018B2B4[*(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) */ + diff --git a/src/ov_SC03_095/ov_SC03_095_jr_8017A4AC.c b/src/ov_SC03_095/ov_SC03_095_jr_8017A4AC.c index 8a2bea3ea..96bcf55be 100644 --- a/src/ov_SC03_095/ov_SC03_095_jr_8017A4AC.c +++ b/src/ov_SC03_095/ov_SC03_095_jr_8017A4AC.c @@ -2967,572 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8019BCEC; - extern s16 D_8019BCEE; - extern s16 D_8019BCF0; - extern s16 D_8019BCE4; - extern s16 D_8019BCE6; - extern s16 D_8019BCE8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019BCEC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019BCEE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019BCF0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019BCE4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019BCE6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019BCE8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8019BC74; -extern u16 D_8019BCF4; -extern u16 D_8019BCF6; -extern u16 D_8019BCF8; -extern s16 D_8019BE20; - -void func_8017B1D8(void) { - func_8012A418(); - D_8019BE20 = 0; - D_8019BC74 = 0; - D_8019BCF4 = D_80126B5E; - D_8019BCF6 = D_80126B62; - D_8019BCF8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80184874[]; - extern s16 D_8019BCEC; - extern s16 D_8019BCE4; - 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_80184874[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80184874[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019BCEC; - s16 *p78C = &D_8019BCE4; - *(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_8019BE20 = 1; - D_8019BC74 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019BC94; - extern SV4_8017B368 D_8019BC9C; - extern s16 D_8019BCEC; - extern s16 D_8019BCE4; - extern u16 D_80184874; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8019BC94; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8019BC9C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80184874)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80184874)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8019BCEC) = loc0; - (*(SV4_8017B368 *)&D_8019BCE4) = loc1; - D_8019BE20 = 1; - D_8019BC74 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80184874[]; - extern s16 D_8019BCEC; - extern s16 D_8019BCEE; - extern s16 D_8019BCF0; - extern s16 D_8019BCE4; - extern s16 D_8019BCE6; - extern s16 D_8019BCE8; - 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_80184874[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80184874[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019BCEC; - s16 *p78C = &D_8019BCE4; - *(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_8019BCEE; - v798 = D_8019BCF0; - v78C = *p78C; - v78E = D_8019BCE6; - v790 = D_8019BCE8; - __asm__ __volatile__(""); - D_8019BE20 = 1; - D_8019BC74 = 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_8019BC74; -extern s16 D_8019BCEC; -extern s16 D_8019BCEE; -extern s16 D_8019BCF0; -extern s16 D_8019BCE4; -extern s16 D_8019BCE6; -extern s16 D_8019BCE8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8019BC74 = 0; - D_8019BCEC = (s16) D_80114F30; - D_8019BCEE = (s16) D_80114F34; - D_8019BCF0 = (s16) D_80114F38; - D_8019BCE4 = (s16) D_80114F24; - D_8019BCE6 = (s16) D_80114F28; - D_8019BCE8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8019BD04; -extern s16 D_8019BD06; -extern s16 D_8019BD08; -extern s16 D_8019BD0C; -extern s16 D_8019BD0E; -extern s16 D_8019BD10; - -void func_8017B824(void) { - D_8019BD04 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8019BD06 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8019BD08 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8019BD0C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8019BD0E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8019BD10 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8019BD04; -extern s16 D_8019BD06; -extern s16 D_8019BD08; -extern s16 D_8019BD0C; -extern s16 D_8019BD0E; -extern s16 D_8019BD10; - -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_8019BD04; - D_80114F34 = D_8019BD06; - D_80114F38 = D_8019BD08; - D_80114F24 = D_8019BD0C; - D_80114F28 = D_8019BD0E; - D_80114F2C = D_8019BD10; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8019BCEC), src[8..15] -> (*(S8_8017B8E8 *)&D_8019BCE4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8019BCEC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8019BCE4) = ((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_8019BCF4; -extern u16 D_8019BCF6; -extern u16 D_8019BCF8; - -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_8019BC74; -extern short D_8019BCFC; -extern short D_8019BCFE; -extern short D_8019BD00; -extern s16 D_8019BCEC; -extern s16 D_8019BCEE; -extern s16 D_8019BCF0; -extern s16 D_8019BCE4; -extern s16 D_8019BCE6; -extern s16 D_8019BCE8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019BCF4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019BCF6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019BCF8); - (*(s16 *)&D_8019BCFC) = buf[0]; - (*(s16 *)&D_8019BCFE) = buf[1]; - (*(s16 *)&D_8019BD00) = buf[2]; - D_8019BCEC = D_80114F30 + buf[0]; - D_8019BC74 = 0; - D_8019BCEE = D_80114F34 + buf[1]; - D_8019BCF0 = D_80114F38 + buf[2]; - D_8019BCE4 = D_80114F24 + buf[0]; - D_8019BCE6 = D_80114F28 + buf[1]; - D_8019BCE8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8019BC94; -extern SV4 D_8019BC9C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019BC9C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8019BC94 = 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_8019BC9C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019BC9C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8019BC94) = 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_8019BC9C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8019BCBC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8019BCBC; - 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_8019BC74; -extern s16 D_8019BE20; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8019BC74 = D_8019BC74 + 1; - if (D_8019BC74 >= 0x1F) { - D_8019BE20 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8019BC74; -extern s16 D_8019BE20; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8019BC74 = D_8019BC74 + 1; - if (0x18 < D_8019BC74) { - func_8012A4BC(); - D_8019BE20 = 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_8019BC74; -extern void (*D_8019BCB8)(void); -extern short D_8019BCFC; -extern short D_8019BCFE; -extern short D_8019BD00; -extern s16 D_8019BE20; - -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_8019BC74 = D_8019BC74 + 1; - if (D_8019BC74 >= 0x19) { - if (D_8019BCB8 != 0) { - (*D_8019BCB8)(); - } else { - D_80114F30 = D_80114F30 + D_8019BCFC; - D_80114F34 = D_80114F34 + D_8019BCFE; - D_80114F38 = D_80114F38 + D_8019BD00; - D_80114F24 = D_80114F24 + D_8019BCFC; - D_80114F28 = D_80114F28 + D_8019BCFE; - D_80114F2C = D_80114F2C + D_8019BD00; - func_8012A4BC(); - } - D_8019BE20 = 0; - } -} - - - -extern void (*D_80184914[])(void); - -void func_8017BE60(void *a0) { - D_80184914[*(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) */ diff --git a/src/ov_SC03_095/ov_SC03_095_jr_8017AE2C.c b/src/ov_SC03_095/ov_SC03_095_jr_8017AE2C.c new file mode 100644 index 000000000..1a30078e5 --- /dev/null +++ b/src/ov_SC03_095/ov_SC03_095_jr_8017AE2C.c @@ -0,0 +1,3470 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018346C; +extern u8 D_801833DC; +extern u8 D_801833B8; +extern u8 D_80183394; +extern u8 D_80183448; +extern u8 D_80183424; +extern u8 D_80183400; +extern u8 D_80183370; +extern void func_80145934(void); +extern u8 D_801834FC; +extern u8 D_801834D8; +extern u8 D_801834B4; +extern u8 D_80183490; +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_801828F4[]; +extern unsigned char D_80182924[]; +extern unsigned char D_80182974[]; +extern unsigned char D_801829A4[]; +extern unsigned char D_801829D4[]; +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(void); +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_80182A24[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80182AEC[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80182B74[]; +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_80182B7C; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8019AB70; +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_8019AB74; +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_80182BAC; +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 void 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_80182C54[])(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_80182C78[])(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_80182C68; +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_80182C8C[])(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_80182C98[]; +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_80182CA8[])(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_80182CC0[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80182CB0; +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_80182CD4[])(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_80182CF0[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80182CE0; +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_80182D04[])(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_80182D18[])(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_80182D2C; +extern void (*D_80182D54[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80182D34; +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_80182DA0[])(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_80182DA4[])(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(void *a0); +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_80183208[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80183218[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8019ABA8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80183240[])(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_80183220; +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_80183230; +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_80183280[])(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_80183288[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80183254; +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_80183294[])(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_80183264; +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_8019ABB0; +extern s32 D_8019ABBC; +extern s32 D_8019ABC0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801832D0[])(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_801832A4[]; +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_8019ABB8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80183520[])(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_80183340[]; +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_801835C4[])(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_80183718[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80183534; +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_80183720[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80183544; +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_80183564; +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_80183728[])(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(void); +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_80183750[])(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_8018375C[])(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_801835D0[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80183800; +extern void func_8015D380(s32 a0); +extern unsigned char D_801828E4[]; +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_80183814[]; +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_80183850[]; +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_80183898; +extern u16 D_8018389A; +extern u16 D_8018389C; +extern s32 D_801838A0; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_801838A8; +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_801835B4; +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_8018392C[]; +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_801839DC[])(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_80183A0C[]; +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_80183A70; +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_8019ABC8[]; +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_80183A94[])(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_8019AC20[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80183ADC[])(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_80183ACC; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8019A458[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_80183AE4[])(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_80183B38[])(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_80183B00; +extern s16 D_80183B34; +extern s16 D_80183B32; +extern s16 D_80183B30; +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_80183B44[])(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_8019AC80; +extern u8 D_8019AC81; +extern u8 D_8019AC82; +extern u8 D_8019AC83; +extern u8 D_8019AC84; +extern u8 D_8019AC85; +extern u8 D_8019AC86; +extern u8 D_8019AC87; +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_80183B54[])(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_8019ACC0; +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_80183B98[])(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_80183C14[]; +extern s32 D_80183C34[]; +extern u8 D_80183CB0[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80183CD0[]; +extern u8 D_80183CF0[]; +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_80183D8C[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80183E08[])(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_8019A468; +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_80183E14[])(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_80183E1C[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80183EE4[])(void); +extern void func_80166618(void *a0); +extern void (*D_80183EF4[])(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_80183F04[])(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_80183F10[])(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_80183E70[]; +extern u8 D_80183E84[]; +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_80183F28[])(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_80183F30[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80183F38[])(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_80183F40[])(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_80183F48[])(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_80183F50[])(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_80183F58[])(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_8018400C[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80184014[])(void); +extern void func_80169F00(void *a0); +extern char D_80183FC4[]; +extern char D_80183F84[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018404C[])(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_80184058[])(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_801840A0[])(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_8018411C[])(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_8019AFE0; +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_80184110[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80184154[]; +extern unsigned short D_8018415C[]; +extern unsigned short D_80184164[]; +extern unsigned char D_8019AFE8[]; +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_8019AFE0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018416C[])(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_8019B11C; +extern M2C_UNK D_8019B120; +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_8019B0A8; +extern void (*D_8018419C[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8019B124[]; +extern u8 D_8019B12C[]; +extern u8 D_8019B0DC[]; +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_801841A4[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801841C0[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801841C8[])(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_80184230[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801841D4; +extern u8 D_801841E0; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80184264[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018426C[])(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_801842C0[])(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_801842F4[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801842E4[]; +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_80184310; +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); +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_80184388[])(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_80184390[])(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_80184398[])(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_801843A0[])(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_801843A8[])(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_801843B0[])(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_801843BC[])(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_801843C8[])(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_801843D4[])(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_801843E4[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801843F4[])(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_801843FC[])(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_80184404[])(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_8018440C[])(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_80184414[])(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_8018441C[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80184424[])(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_8018442C[])(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_80184434[])(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_8018443C[])(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_80184444[])(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_8018444C[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80184454[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018445C[])(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_80184464[])(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_8018446C[])(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_80184474[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018447C[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80184484[])(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_8018448C[])(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_80184494[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018449C[])(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_801844A4[])(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_801844E8[])(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_801844AC; +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_80184518[])(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_80184554[])(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(s32); +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_801845AC[])(); +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_801845BC[])(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_801845C4[])(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_8018472C[])(); +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_80184738[])(); +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_8019A6B0; +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 int func_801789AC(void); +extern s16 D_8019BE20; +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_8019B860; +extern short D_8019BE94; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8019BC8C; +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_8019BCB4; +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_8019BC70; +extern s32 func_8017A3B0(void); +extern short D_8019BCAC; +extern short D_8019BCA8; +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_8019BDF0; +extern s16 D_8019BDF2; +extern s16 D_8019BDFC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_8019BDF0; + + 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_8019BDFC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_8019BDF0+0xC == &D_8019BDFC; 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_8019BDF0 + 0xC)) < 0x101) { + D_8019BDF0 = 0; + D_8019BDF2 = 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_8019BDFC); + 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_8019BDF0 + 0xC)) < 0x101) { + D_8019BDF0 = 0; + D_8019BDF2 = 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_8019BCEC; + extern s16 D_8019BCEE; + extern s16 D_8019BCF0; + extern s16 D_8019BCE4; + extern s16 D_8019BCE6; + extern s16 D_8019BCE8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019BCEC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019BCEE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019BCF0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019BCE4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019BCE6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019BCE8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8019BC74; +extern u16 D_8019BCF4; +extern u16 D_8019BCF6; +extern u16 D_8019BCF8; +extern s16 D_8019BE20; + +void func_8017B1D8(void) { + func_8012A418(); + D_8019BE20 = 0; + D_8019BC74 = 0; + D_8019BCF4 = D_80126B5E; + D_8019BCF6 = D_80126B62; + D_8019BCF8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80184874[]; + extern s16 D_8019BCEC; + extern s16 D_8019BCE4; + 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_80184874[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80184874[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019BCEC; + s16 *p78C = &D_8019BCE4; + *(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_8019BE20 = 1; + D_8019BC74 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019BC94; + extern SV4_8017B368 D_8019BC9C; + extern s16 D_8019BCEC; + extern s16 D_8019BCE4; + extern u16 D_80184874; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8019BC94; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8019BC9C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80184874)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80184874)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8019BCEC) = loc0; + (*(SV4_8017B368 *)&D_8019BCE4) = loc1; + D_8019BE20 = 1; + D_8019BC74 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80184874[]; + extern s16 D_8019BCEC; + extern s16 D_8019BCEE; + extern s16 D_8019BCF0; + extern s16 D_8019BCE4; + extern s16 D_8019BCE6; + extern s16 D_8019BCE8; + 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_80184874[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80184874[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019BCEC; + s16 *p78C = &D_8019BCE4; + *(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_8019BCEE; + v798 = D_8019BCF0; + v78C = *p78C; + v78E = D_8019BCE6; + v790 = D_8019BCE8; + __asm__ __volatile__(""); + D_8019BE20 = 1; + D_8019BC74 = 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_8019BC74; +extern s16 D_8019BCEC; +extern s16 D_8019BCEE; +extern s16 D_8019BCF0; +extern s16 D_8019BCE4; +extern s16 D_8019BCE6; +extern s16 D_8019BCE8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8019BC74 = 0; + D_8019BCEC = (s16) D_80114F30; + D_8019BCEE = (s16) D_80114F34; + D_8019BCF0 = (s16) D_80114F38; + D_8019BCE4 = (s16) D_80114F24; + D_8019BCE6 = (s16) D_80114F28; + D_8019BCE8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8019BD04; +extern s16 D_8019BD06; +extern s16 D_8019BD08; +extern s16 D_8019BD0C; +extern s16 D_8019BD0E; +extern s16 D_8019BD10; + +void func_8017B824(void) { + D_8019BD04 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8019BD06 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8019BD08 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8019BD0C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8019BD0E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8019BD10 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8019BD04; +extern s16 D_8019BD06; +extern s16 D_8019BD08; +extern s16 D_8019BD0C; +extern s16 D_8019BD0E; +extern s16 D_8019BD10; + +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_8019BD04; + D_80114F34 = D_8019BD06; + D_80114F38 = D_8019BD08; + D_80114F24 = D_8019BD0C; + D_80114F28 = D_8019BD0E; + D_80114F2C = D_8019BD10; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8019BCEC), src[8..15] -> (*(S8_8017B8E8 *)&D_8019BCE4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8019BCEC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8019BCE4) = ((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_8019BCF4; +extern u16 D_8019BCF6; +extern u16 D_8019BCF8; + +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_8019BC74; +extern short D_8019BCFC; +extern short D_8019BCFE; +extern short D_8019BD00; +extern s16 D_8019BCEC; +extern s16 D_8019BCEE; +extern s16 D_8019BCF0; +extern s16 D_8019BCE4; +extern s16 D_8019BCE6; +extern s16 D_8019BCE8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019BCF4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019BCF6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019BCF8); + (*(s16 *)&D_8019BCFC) = buf[0]; + (*(s16 *)&D_8019BCFE) = buf[1]; + (*(s16 *)&D_8019BD00) = buf[2]; + D_8019BCEC = D_80114F30 + buf[0]; + D_8019BC74 = 0; + D_8019BCEE = D_80114F34 + buf[1]; + D_8019BCF0 = D_80114F38 + buf[2]; + D_8019BCE4 = D_80114F24 + buf[0]; + D_8019BCE6 = D_80114F28 + buf[1]; + D_8019BCE8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8019BC94; +extern SV4 D_8019BC9C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019BC9C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8019BC94 = 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_8019BC9C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019BC9C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8019BC94) = 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_8019BC9C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8019BCBC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8019BCBC; + 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_8019BC74; +extern s16 D_8019BE20; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8019BC74 = D_8019BC74 + 1; + if (D_8019BC74 >= 0x1F) { + D_8019BE20 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8019BC74; +extern s16 D_8019BE20; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8019BC74 = D_8019BC74 + 1; + if (0x18 < D_8019BC74) { + func_8012A4BC(); + D_8019BE20 = 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_8019BC74; +extern void (*D_8019BCB8)(void); +extern short D_8019BCFC; +extern short D_8019BCFE; +extern short D_8019BD00; +extern s16 D_8019BE20; + +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_8019BC74 = D_8019BC74 + 1; + if (D_8019BC74 >= 0x19) { + if (D_8019BCB8 != 0) { + (*D_8019BCB8)(); + } else { + D_80114F30 = D_80114F30 + D_8019BCFC; + D_80114F34 = D_80114F34 + D_8019BCFE; + D_80114F38 = D_80114F38 + D_8019BD00; + D_80114F24 = D_80114F24 + D_8019BCFC; + D_80114F28 = D_80114F28 + D_8019BCFE; + D_80114F2C = D_80114F2C + D_8019BD00; + func_8012A4BC(); + } + D_8019BE20 = 0; + } +} + + + +extern void (*D_80184914[])(void); + +void func_8017BE60(void *a0) { + D_80184914[*(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) */ + diff --git a/src/ov_SC03_096/ov_SC03_096_jr_8017A4AC.c b/src/ov_SC03_096/ov_SC03_096_jr_8017A4AC.c index 86a01597a..333764ada 100644 --- a/src/ov_SC03_096/ov_SC03_096_jr_8017A4AC.c +++ b/src/ov_SC03_096/ov_SC03_096_jr_8017A4AC.c @@ -2967,572 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8019A7A4; - extern s16 D_8019A7A6; - extern s16 D_8019A7A8; - extern s16 D_8019A79C; - extern s16 D_8019A79E; - extern s16 D_8019A7A0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019A7A4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019A7A6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019A7A8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019A79C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019A79E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019A7A0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8019A72C; -extern u16 D_8019A7AC; -extern u16 D_8019A7AE; -extern u16 D_8019A7B0; -extern s16 D_8019A8D8; - -void func_8017B1D8(void) { - func_8012A418(); - D_8019A8D8 = 0; - D_8019A72C = 0; - D_8019A7AC = D_80126B5E; - D_8019A7AE = D_80126B62; - D_8019A7B0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_801843F4[]; - extern s16 D_8019A7A4; - extern s16 D_8019A79C; - 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_801843F4[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801843F4[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019A7A4; - s16 *p78C = &D_8019A79C; - *(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_8019A8D8 = 1; - D_8019A72C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019A74C; - extern SV4_8017B368 D_8019A754; - extern s16 D_8019A7A4; - extern s16 D_8019A79C; - extern u16 D_801843F4; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8019A74C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8019A754; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_801843F4)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_801843F4)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8019A7A4) = loc0; - (*(SV4_8017B368 *)&D_8019A79C) = loc1; - D_8019A8D8 = 1; - D_8019A72C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_801843F4[]; - extern s16 D_8019A7A4; - extern s16 D_8019A7A6; - extern s16 D_8019A7A8; - extern s16 D_8019A79C; - extern s16 D_8019A79E; - extern s16 D_8019A7A0; - 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_801843F4[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801843F4[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019A7A4; - s16 *p78C = &D_8019A79C; - *(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_8019A7A6; - v798 = D_8019A7A8; - v78C = *p78C; - v78E = D_8019A79E; - v790 = D_8019A7A0; - __asm__ __volatile__(""); - D_8019A8D8 = 1; - D_8019A72C = 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_8019A72C; -extern s16 D_8019A7A4; -extern s16 D_8019A7A6; -extern s16 D_8019A7A8; -extern s16 D_8019A79C; -extern s16 D_8019A79E; -extern s16 D_8019A7A0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8019A72C = 0; - D_8019A7A4 = (s16) D_80114F30; - D_8019A7A6 = (s16) D_80114F34; - D_8019A7A8 = (s16) D_80114F38; - D_8019A79C = (s16) D_80114F24; - D_8019A79E = (s16) D_80114F28; - D_8019A7A0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8019A7BC; -extern s16 D_8019A7BE; -extern s16 D_8019A7C0; -extern s16 D_8019A7C4; -extern s16 D_8019A7C6; -extern s16 D_8019A7C8; - -void func_8017B824(void) { - D_8019A7BC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8019A7BE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8019A7C0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8019A7C4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8019A7C6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8019A7C8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8019A7BC; -extern s16 D_8019A7BE; -extern s16 D_8019A7C0; -extern s16 D_8019A7C4; -extern s16 D_8019A7C6; -extern s16 D_8019A7C8; - -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_8019A7BC; - D_80114F34 = D_8019A7BE; - D_80114F38 = D_8019A7C0; - D_80114F24 = D_8019A7C4; - D_80114F28 = D_8019A7C6; - D_80114F2C = D_8019A7C8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8019A7A4), src[8..15] -> (*(S8_8017B8E8 *)&D_8019A79C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8019A7A4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8019A79C) = ((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_8019A7AC; -extern u16 D_8019A7AE; -extern u16 D_8019A7B0; - -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_8019A72C; -extern short D_8019A7B4; -extern short D_8019A7B6; -extern short D_8019A7B8; -extern s16 D_8019A7A4; -extern s16 D_8019A7A6; -extern s16 D_8019A7A8; -extern s16 D_8019A79C; -extern s16 D_8019A79E; -extern s16 D_8019A7A0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019A7AC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019A7AE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019A7B0); - (*(s16 *)&D_8019A7B4) = buf[0]; - (*(s16 *)&D_8019A7B6) = buf[1]; - (*(s16 *)&D_8019A7B8) = buf[2]; - D_8019A7A4 = D_80114F30 + buf[0]; - D_8019A72C = 0; - D_8019A7A6 = D_80114F34 + buf[1]; - D_8019A7A8 = D_80114F38 + buf[2]; - D_8019A79C = D_80114F24 + buf[0]; - D_8019A79E = D_80114F28 + buf[1]; - D_8019A7A0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8019A74C; -extern SV4 D_8019A754; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019A754) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8019A74C = 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_8019A754 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019A754)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8019A74C) = 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_8019A754) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8019A774[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8019A774; - 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_8019A72C; -extern s16 D_8019A8D8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8019A72C = D_8019A72C + 1; - if (D_8019A72C >= 0x1F) { - D_8019A8D8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8019A72C; -extern s16 D_8019A8D8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8019A72C = D_8019A72C + 1; - if (0x18 < D_8019A72C) { - func_8012A4BC(); - D_8019A8D8 = 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_8019A72C; -extern void (*D_8019A770)(void); -extern short D_8019A7B4; -extern short D_8019A7B6; -extern short D_8019A7B8; -extern s16 D_8019A8D8; - -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_8019A72C = D_8019A72C + 1; - if (D_8019A72C >= 0x19) { - if (D_8019A770 != 0) { - (*D_8019A770)(); - } else { - D_80114F30 = D_80114F30 + D_8019A7B4; - D_80114F34 = D_80114F34 + D_8019A7B6; - D_80114F38 = D_80114F38 + D_8019A7B8; - D_80114F24 = D_80114F24 + D_8019A7B4; - D_80114F28 = D_80114F28 + D_8019A7B6; - D_80114F2C = D_80114F2C + D_8019A7B8; - func_8012A4BC(); - } - D_8019A8D8 = 0; - } -} - - - -extern void (*D_80184494[])(void); - -void func_8017BE60(void *a0) { - D_80184494[*(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) */ diff --git a/src/ov_SC03_096/ov_SC03_096_jr_8017AE2C.c b/src/ov_SC03_096/ov_SC03_096_jr_8017AE2C.c new file mode 100644 index 000000000..4f06b72f4 --- /dev/null +++ b/src/ov_SC03_096/ov_SC03_096_jr_8017AE2C.c @@ -0,0 +1,3470 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80182FEC; +extern u8 D_80182F5C; +extern u8 D_80182F38; +extern u8 D_80182F14; +extern u8 D_80182FC8; +extern u8 D_80182FA4; +extern u8 D_80182F80; +extern u8 D_80182EF0; +extern void func_80145934(void); +extern u8 D_8018307C; +extern u8 D_80183058; +extern u8 D_80183034; +extern u8 D_80183010; +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_80182474[]; +extern unsigned char D_801824A4[]; +extern unsigned char D_801824F4[]; +extern unsigned char D_80182524[]; +extern unsigned char D_80182554[]; +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(void); +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_801825A4[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018266C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801826F4[]; +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_801826FC; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_80199628; +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_8019962C; +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_8018272C; +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 void 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_801827D4[])(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_801827F8[])(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_801827E8; +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_8018280C[])(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_80182818[]; +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_80182828[])(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_80182840[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80182830; +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_80182854[])(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_80182870[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80182860; +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_80182884[])(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_80182898[])(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_801828AC; +extern void (*D_801828D4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801828B4; +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_80182920[])(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_80182924[])(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(void *a0); +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_80182D88[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80182D98[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_80199660; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80182DC0[])(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_80182DA0; +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_80182DB0; +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_80182E00[])(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_80182E08[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80182DD4; +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_80182E14[])(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_80182DE4; +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_80199668; +extern s32 D_80199674; +extern s32 D_80199678; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80182E50[])(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_80182E24[]; +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_80199670; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801830A0[])(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_80182EC0[]; +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_80183144[])(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_80183298[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801830B4; +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_801832A0[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801830C4; +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_801830E4; +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_801832A8[])(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(void); +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_801832D0[])(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_801832DC[])(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_80183150[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80183380; +extern void func_8015D380(s32 a0); +extern unsigned char D_80182464[]; +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_80183394[]; +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_801833D0[]; +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_80183418; +extern u16 D_8018341A; +extern u16 D_8018341C; +extern s32 D_80183420; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80183428; +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_80183134; +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_801834AC[]; +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_8018355C[])(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_8018358C[]; +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_801835F0; +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_80199680[]; +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_80183614[])(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_801996D8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018365C[])(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_8018364C; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_80198F0C[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_80183664[])(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_801836B8[])(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_80183680; +extern s16 D_801836B4; +extern s16 D_801836B2; +extern s16 D_801836B0; +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_801836C4[])(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_80199738; +extern u8 D_80199739; +extern u8 D_8019973A; +extern u8 D_8019973B; +extern u8 D_8019973C; +extern u8 D_8019973D; +extern u8 D_8019973E; +extern u8 D_8019973F; +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_801836D4[])(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_80199778; +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_80183718[])(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_80183794[]; +extern s32 D_801837B4[]; +extern u8 D_80183830[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80183850[]; +extern u8 D_80183870[]; +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_8018390C[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80183988[])(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_80198F1C; +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_80183994[])(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_8018399C[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80183A64[])(void); +extern void func_80166618(void *a0); +extern void (*D_80183A74[])(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_80183A84[])(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_80183A90[])(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_801839F0[]; +extern u8 D_80183A04[]; +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_80183AA8[])(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_80183AB0[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80183AB8[])(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_80183AC0[])(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_80183AC8[])(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_80183AD0[])(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_80183AD8[])(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_80183B8C[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80183B94[])(void); +extern void func_80169F00(void *a0); +extern char D_80183B44[]; +extern char D_80183B04[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80183BCC[])(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_80183BD8[])(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_80183C20[])(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_80183C9C[])(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_80199A98; +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_80183C90[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80183CD4[]; +extern unsigned short D_80183CDC[]; +extern unsigned short D_80183CE4[]; +extern unsigned char D_80199AA0[]; +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_80199A98; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80183CEC[])(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_80199BD4; +extern M2C_UNK D_80199BD8; +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_80199B60; +extern void (*D_80183D1C[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80199BDC[]; +extern u8 D_80199BE4[]; +extern u8 D_80199B94[]; +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_80183D24[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80183D40[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80183D48[])(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_80183DB0[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80183D54; +extern u8 D_80183D60; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80183DE4[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80183DEC[])(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_80183E40[])(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_80183E74[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80183E64[]; +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_80183E90; +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); +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_80183F08[])(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_80183F10[])(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_80183F18[])(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_80183F20[])(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_80183F28[])(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_80183F30[])(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_80183F3C[])(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_80183F48[])(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_80183F54[])(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_80183F64[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80183F74[])(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_80183F7C[])(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_80183F84[])(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_80183F8C[])(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_80183F94[])(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_80183F9C[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80183FA4[])(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_80183FAC[])(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_80183FB4[])(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_80183FBC[])(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_80183FC4[])(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_80183FCC[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80183FD4[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80183FDC[])(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_80183FE4[])(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_80183FEC[])(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_80183FF4[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80183FFC[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80184004[])(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_8018400C[])(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_80184014[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018401C[])(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_80184024[])(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_80184068[])(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_8018402C; +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_80184098[])(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_801840D4[])(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(s32); +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_8018412C[])(); +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_8018413C[])(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_80184144[])(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_801842AC[])(); +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_801842B8[])(); +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_80199164; +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 int func_801789AC(void); +extern s16 D_8019A8D8; +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_8019A318; +extern short D_8019A94C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8019A744; +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_8019A76C; +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_8019A728; +extern s32 func_8017A3B0(void); +extern short D_8019A764; +extern short D_8019A760; +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_8019A8A8; +extern s16 D_8019A8AA; +extern s16 D_8019A8B4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_8019A8A8; + + 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_8019A8B4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_8019A8A8+0xC == &D_8019A8B4; 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_8019A8A8 + 0xC)) < 0x101) { + D_8019A8A8 = 0; + D_8019A8AA = 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_8019A8B4); + 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_8019A8A8 + 0xC)) < 0x101) { + D_8019A8A8 = 0; + D_8019A8AA = 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_8019A7A4; + extern s16 D_8019A7A6; + extern s16 D_8019A7A8; + extern s16 D_8019A79C; + extern s16 D_8019A79E; + extern s16 D_8019A7A0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019A7A4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019A7A6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019A7A8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019A79C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019A79E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019A7A0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8019A72C; +extern u16 D_8019A7AC; +extern u16 D_8019A7AE; +extern u16 D_8019A7B0; +extern s16 D_8019A8D8; + +void func_8017B1D8(void) { + func_8012A418(); + D_8019A8D8 = 0; + D_8019A72C = 0; + D_8019A7AC = D_80126B5E; + D_8019A7AE = D_80126B62; + D_8019A7B0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_801843F4[]; + extern s16 D_8019A7A4; + extern s16 D_8019A79C; + 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_801843F4[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801843F4[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019A7A4; + s16 *p78C = &D_8019A79C; + *(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_8019A8D8 = 1; + D_8019A72C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019A74C; + extern SV4_8017B368 D_8019A754; + extern s16 D_8019A7A4; + extern s16 D_8019A79C; + extern u16 D_801843F4; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8019A74C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8019A754; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_801843F4)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_801843F4)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8019A7A4) = loc0; + (*(SV4_8017B368 *)&D_8019A79C) = loc1; + D_8019A8D8 = 1; + D_8019A72C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_801843F4[]; + extern s16 D_8019A7A4; + extern s16 D_8019A7A6; + extern s16 D_8019A7A8; + extern s16 D_8019A79C; + extern s16 D_8019A79E; + extern s16 D_8019A7A0; + 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_801843F4[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801843F4[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019A7A4; + s16 *p78C = &D_8019A79C; + *(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_8019A7A6; + v798 = D_8019A7A8; + v78C = *p78C; + v78E = D_8019A79E; + v790 = D_8019A7A0; + __asm__ __volatile__(""); + D_8019A8D8 = 1; + D_8019A72C = 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_8019A72C; +extern s16 D_8019A7A4; +extern s16 D_8019A7A6; +extern s16 D_8019A7A8; +extern s16 D_8019A79C; +extern s16 D_8019A79E; +extern s16 D_8019A7A0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8019A72C = 0; + D_8019A7A4 = (s16) D_80114F30; + D_8019A7A6 = (s16) D_80114F34; + D_8019A7A8 = (s16) D_80114F38; + D_8019A79C = (s16) D_80114F24; + D_8019A79E = (s16) D_80114F28; + D_8019A7A0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8019A7BC; +extern s16 D_8019A7BE; +extern s16 D_8019A7C0; +extern s16 D_8019A7C4; +extern s16 D_8019A7C6; +extern s16 D_8019A7C8; + +void func_8017B824(void) { + D_8019A7BC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8019A7BE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8019A7C0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8019A7C4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8019A7C6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8019A7C8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8019A7BC; +extern s16 D_8019A7BE; +extern s16 D_8019A7C0; +extern s16 D_8019A7C4; +extern s16 D_8019A7C6; +extern s16 D_8019A7C8; + +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_8019A7BC; + D_80114F34 = D_8019A7BE; + D_80114F38 = D_8019A7C0; + D_80114F24 = D_8019A7C4; + D_80114F28 = D_8019A7C6; + D_80114F2C = D_8019A7C8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8019A7A4), src[8..15] -> (*(S8_8017B8E8 *)&D_8019A79C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8019A7A4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8019A79C) = ((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_8019A7AC; +extern u16 D_8019A7AE; +extern u16 D_8019A7B0; + +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_8019A72C; +extern short D_8019A7B4; +extern short D_8019A7B6; +extern short D_8019A7B8; +extern s16 D_8019A7A4; +extern s16 D_8019A7A6; +extern s16 D_8019A7A8; +extern s16 D_8019A79C; +extern s16 D_8019A79E; +extern s16 D_8019A7A0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019A7AC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019A7AE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019A7B0); + (*(s16 *)&D_8019A7B4) = buf[0]; + (*(s16 *)&D_8019A7B6) = buf[1]; + (*(s16 *)&D_8019A7B8) = buf[2]; + D_8019A7A4 = D_80114F30 + buf[0]; + D_8019A72C = 0; + D_8019A7A6 = D_80114F34 + buf[1]; + D_8019A7A8 = D_80114F38 + buf[2]; + D_8019A79C = D_80114F24 + buf[0]; + D_8019A79E = D_80114F28 + buf[1]; + D_8019A7A0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8019A74C; +extern SV4 D_8019A754; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019A754) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8019A74C = 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_8019A754 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019A754)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8019A74C) = 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_8019A754) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8019A774[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8019A774; + 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_8019A72C; +extern s16 D_8019A8D8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8019A72C = D_8019A72C + 1; + if (D_8019A72C >= 0x1F) { + D_8019A8D8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8019A72C; +extern s16 D_8019A8D8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8019A72C = D_8019A72C + 1; + if (0x18 < D_8019A72C) { + func_8012A4BC(); + D_8019A8D8 = 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_8019A72C; +extern void (*D_8019A770)(void); +extern short D_8019A7B4; +extern short D_8019A7B6; +extern short D_8019A7B8; +extern s16 D_8019A8D8; + +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_8019A72C = D_8019A72C + 1; + if (D_8019A72C >= 0x19) { + if (D_8019A770 != 0) { + (*D_8019A770)(); + } else { + D_80114F30 = D_80114F30 + D_8019A7B4; + D_80114F34 = D_80114F34 + D_8019A7B6; + D_80114F38 = D_80114F38 + D_8019A7B8; + D_80114F24 = D_80114F24 + D_8019A7B4; + D_80114F28 = D_80114F28 + D_8019A7B6; + D_80114F2C = D_80114F2C + D_8019A7B8; + func_8012A4BC(); + } + D_8019A8D8 = 0; + } +} + + + +extern void (*D_80184494[])(void); + +void func_8017BE60(void *a0) { + D_80184494[*(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) */ + diff --git a/src/ov_SC03_097/ov_SC03_097_jr_8017A4AC.c b/src/ov_SC03_097/ov_SC03_097_jr_8017A4AC.c index 6871308c0..2143a550d 100644 --- a/src/ov_SC03_097/ov_SC03_097_jr_8017A4AC.c +++ b/src/ov_SC03_097/ov_SC03_097_jr_8017A4AC.c @@ -2967,664 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801AA82C; - extern s16 D_801AA82E; - extern s16 D_801AA830; - extern s16 D_801AA824; - extern s16 D_801AA826; - extern s16 D_801AA828; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801AA82C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801AA82E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801AA830, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801AA824, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801AA826, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801AA828, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801AA7B4; -extern u16 D_801AA834; -extern u16 D_801AA836; -extern u16 D_801AA838; -extern s16 D_801AAE58; - -void func_8017B1D8(void) { - func_8012A418(); - D_801AAE58 = 0; - D_801AA7B4 = 0; - D_801AA834 = D_80126B5E; - D_801AA836 = D_80126B62; - D_801AA838 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_801897D4[]; - extern s16 D_801AA82C; - extern s16 D_801AA824; - 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_801897D4[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801897D4[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801AA82C; - s16 *p78C = &D_801AA824; - *(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_801AAE58 = 1; - D_801AA7B4 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801AA7D4; - extern SV4_8017B368 D_801AA7DC; - extern s16 D_801AA82C; - extern s16 D_801AA824; - extern u16 D_801897D4; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801AA7D4; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801AA7DC; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_801897D4)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_801897D4)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801AA82C) = loc0; - (*(SV4_8017B368 *)&D_801AA824) = loc1; - D_801AAE58 = 1; - D_801AA7B4 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_801897D4[]; - extern s16 D_801AA82C; - extern s16 D_801AA82E; - extern s16 D_801AA830; - extern s16 D_801AA824; - extern s16 D_801AA826; - extern s16 D_801AA828; - 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_801897D4[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801897D4[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801AA82C; - s16 *p78C = &D_801AA824; - *(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_801AA82E; - v798 = D_801AA830; - v78C = *p78C; - v78E = D_801AA826; - v790 = D_801AA828; - __asm__ __volatile__(""); - D_801AAE58 = 1; - D_801AA7B4 = 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_801AA7B4; -extern s16 D_801AA82C; -extern s16 D_801AA82E; -extern s16 D_801AA830; -extern s16 D_801AA824; -extern s16 D_801AA826; -extern s16 D_801AA828; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801AA7B4 = 0; - D_801AA82C = (s16) D_80114F30; - D_801AA82E = (s16) D_80114F34; - D_801AA830 = (s16) D_80114F38; - D_801AA824 = (s16) D_80114F24; - D_801AA826 = (s16) D_80114F28; - D_801AA828 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801AA844; -extern s16 D_801AA846; -extern s16 D_801AA848; -extern s16 D_801AA84C; -extern s16 D_801AA84E; -extern s16 D_801AA850; - -void func_8017B824(void) { - D_801AA844 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801AA846 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801AA848 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801AA84C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801AA84E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801AA850 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801AA844; -extern s16 D_801AA846; -extern s16 D_801AA848; -extern s16 D_801AA84C; -extern s16 D_801AA84E; -extern s16 D_801AA850; - -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_801AA844; - D_80114F34 = D_801AA846; - D_80114F38 = D_801AA848; - D_80114F24 = D_801AA84C; - D_80114F28 = D_801AA84E; - D_80114F2C = D_801AA850; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801AA82C), src[8..15] -> (*(S8_8017B8E8 *)&D_801AA824) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801AA82C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801AA824) = ((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_801AA834; -extern u16 D_801AA836; -extern u16 D_801AA838; - -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_801AA7B4; -extern short D_801AA83C; -extern short D_801AA83E; -extern short D_801AA840; -extern s16 D_801AA82C; -extern s16 D_801AA82E; -extern s16 D_801AA830; -extern s16 D_801AA824; -extern s16 D_801AA826; -extern s16 D_801AA828; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801AA834); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801AA836); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801AA838); - (*(s16 *)&D_801AA83C) = buf[0]; - (*(s16 *)&D_801AA83E) = buf[1]; - (*(s16 *)&D_801AA840) = buf[2]; - D_801AA82C = D_80114F30 + buf[0]; - D_801AA7B4 = 0; - D_801AA82E = D_80114F34 + buf[1]; - D_801AA830 = D_80114F38 + buf[2]; - D_801AA824 = D_80114F24 + buf[0]; - D_801AA826 = D_80114F28 + buf[1]; - D_801AA828 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801AA7D4; -extern SV4 D_801AA7DC; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801AA7DC) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801AA7D4 = 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_801AA7DC = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801AA7DC)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801AA7D4) = 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_801AA7DC) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801AA7FC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801AA7FC; - 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_801AA7B4; -extern s16 D_801AAE58; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801AA7B4 = D_801AA7B4 + 1; - if (D_801AA7B4 >= 0x1F) { - D_801AAE58 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801AA7B4; -extern s16 D_801AAE58; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801AA7B4 = D_801AA7B4 + 1; - if (0x18 < D_801AA7B4) { - func_8012A4BC(); - D_801AAE58 = 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_801AA7B4; -extern void (*D_801AA7F8)(void); -extern short D_801AA83C; -extern short D_801AA83E; -extern short D_801AA840; -extern s16 D_801AAE58; - -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_801AA7B4 = D_801AA7B4 + 1; - if (D_801AA7B4 >= 0x19) { - if (D_801AA7F8 != 0) { - (*D_801AA7F8)(); - } else { - D_80114F30 = D_80114F30 + D_801AA83C; - D_80114F34 = D_80114F34 + D_801AA83E; - D_80114F38 = D_80114F38 + D_801AA840; - D_80114F24 = D_80114F24 + D_801AA83C; - D_80114F28 = D_80114F28 + D_801AA83E; - D_80114F2C = D_80114F2C + D_801AA840; - func_8012A4BC(); - } - D_801AAE58 = 0; - } -} - - - -extern void (*D_80189874[])(void); - -void func_8017BE60(void *a0) { - D_80189874[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017BFEC); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017C378); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017C5F0); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017C738); - - -extern void (*D_80189990[])(void); - -void func_8017C8B8(void *a0) { - D_80189990[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017C8F4); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017C940); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017CA34); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017CAB4); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017CB68); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017CBD4); - -extern void func_8012C218(void); -void func_8017CC60(void) { - func_8012C218(); -} - - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017CC80); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017CCD4); - - -extern void (*D_801899E8[])(void); - -void func_8017CD10(void *a0) { - D_801899E8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017CD4C); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017CD9C); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017CDF8); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017CE7C); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017CFE4); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017D030); - - -extern void (*D_801899FC[])(void); - -void func_8017D33C(void *a0) { - D_801899FC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017D378); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017D3B8); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017D428); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017D4B4); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017D588); - - -extern void (*D_80189A10[])(void); - -void func_8017D5DC(void *a0) { - D_80189A10[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017D618); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017D6CC); - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017A4AC", func_8017D728); diff --git a/src/ov_SC03_097/ov_SC03_097_jr_8017AE2C.c b/src/ov_SC03_097/ov_SC03_097_jr_8017AE2C.c new file mode 100644 index 000000000..288b120de --- /dev/null +++ b/src/ov_SC03_097/ov_SC03_097_jr_8017AE2C.c @@ -0,0 +1,3562 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801883CC; +extern u8 D_8018833C; +extern u8 D_80188318; +extern u8 D_801882F4; +extern u8 D_801883A8; +extern u8 D_80188384; +extern u8 D_80188360; +extern u8 D_801882D0; +extern void func_80145934(void); +extern u8 D_8018845C; +extern u8 D_80188438; +extern u8 D_80188414; +extern u8 D_801883F0; +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_80187854[]; +extern unsigned char D_80187884[]; +extern unsigned char D_801878D4[]; +extern unsigned char D_80187904[]; +extern unsigned char D_80187934[]; +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(void); +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_80187984[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80187A4C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80187AD4[]; +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_80187ADC; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801A96B0; +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_801A96B4; +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_80187B0C; +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 void 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_80187BB4[])(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_80187BD8[])(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_80187BC8; +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_80187BEC[])(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_80187BF8[]; +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_80187C08[])(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_80187C20[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80187C10; +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_80187C34[])(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_80187C50[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80187C40; +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_80187C64[])(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_80187C78[])(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_80187C8C; +extern void (*D_80187CB4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80187C94; +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_80187D00[])(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_80187D04[])(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(void *a0); +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_80188168[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80188178[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801A96E8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801881A0[])(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_80188180; +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_80188190; +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_801881E0[])(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_801881E8[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801881B4; +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_801881F4[])(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_801881C4; +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_801A96F0; +extern s32 D_801A96FC; +extern s32 D_801A9700; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80188230[])(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_80188204[]; +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_801A96F8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80188480[])(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_801882A0[]; +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_80188524[])(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_80188678[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80188494; +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_80188680[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801884A4; +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_801884C4; +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_80188688[])(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(void); +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_801886B0[])(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_801886BC[])(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_80188530[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80188760; +extern void func_8015D380(s32 a0); +extern unsigned char D_80187844[]; +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_80188774[]; +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_801887B0[]; +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_801887F8; +extern u16 D_801887FA; +extern u16 D_801887FC; +extern s32 D_80188800; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80188808; +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_80188514; +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_8018888C[]; +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_8018893C[])(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_8018896C[]; +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_801889D0; +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_801A9708[]; +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_801889F4[])(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_801A9760[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80188A3C[])(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_80188A2C; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801A8F7C[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_80188A44[])(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_80188A98[])(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_80188A60; +extern s16 D_80188A94; +extern s16 D_80188A92; +extern s16 D_80188A90; +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_80188AA4[])(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_801A97C0; +extern u8 D_801A97C1; +extern u8 D_801A97C2; +extern u8 D_801A97C3; +extern u8 D_801A97C4; +extern u8 D_801A97C5; +extern u8 D_801A97C6; +extern u8 D_801A97C7; +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_80188AB4[])(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_801A9800; +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_80188AF8[])(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_80188B74[]; +extern s32 D_80188B94[]; +extern u8 D_80188C10[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80188C30[]; +extern u8 D_80188C50[]; +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_80188CEC[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80188D68[])(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_801A8F8C; +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_80188D74[])(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_80188D7C[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80188E44[])(void); +extern void func_80166618(void *a0); +extern void (*D_80188E54[])(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_80188E64[])(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_80188E70[])(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_80188DD0[]; +extern u8 D_80188DE4[]; +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_80188E88[])(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_80188E90[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80188E98[])(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_80188EA0[])(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_80188EA8[])(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_80188EB0[])(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_80188EB8[])(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_80188F6C[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80188F74[])(void); +extern void func_80169F00(void *a0); +extern char D_80188F24[]; +extern char D_80188EE4[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80188FAC[])(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_80188FB8[])(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_80189000[])(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_8018907C[])(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_801A9B20; +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_80189070[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_801890B4[]; +extern unsigned short D_801890BC[]; +extern unsigned short D_801890C4[]; +extern unsigned char D_801A9B28[]; +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_801A9B20; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801890CC[])(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_801A9C5C; +extern M2C_UNK D_801A9C60; +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_801A9BE8; +extern void (*D_801890FC[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801A9C64[]; +extern u8 D_801A9C6C[]; +extern u8 D_801A9C1C[]; +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_80189104[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80189120[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80189128[])(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_80189190[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80189134; +extern u8 D_80189140; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801891C4[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801891CC[])(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_80189220[])(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_80189254[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80189244[]; +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_80189270; +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); +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_801892E8[])(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_801892F0[])(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_801892F8[])(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_80189300[])(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_80189308[])(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_80189310[])(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_8018931C[])(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_80189328[])(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_80189334[])(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_80189344[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80189354[])(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_8018935C[])(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_80189364[])(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_8018936C[])(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_80189374[])(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_8018937C[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80189384[])(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_8018938C[])(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_80189394[])(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_8018939C[])(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_801893A4[])(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_801893AC[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801893B4[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801893BC[])(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_801893C4[])(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_801893CC[])(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_801893D4[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801893DC[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801893E4[])(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_801893EC[])(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_801893F4[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801893FC[])(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_80189404[])(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_80189448[])(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_8018940C; +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_80189478[])(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_801894B4[])(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(s32); +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_8018950C[])(); +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_8018951C[])(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_80189524[])(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_8018968C[])(); +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_80189698[])(); +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_801A91D4; +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 int func_801789AC(void); +extern s16 D_801AAE58; +extern int func_80178970(void); +extern void 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_801AA3A0; +extern short D_801AAECC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801AA7CC; +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_801AA7F4; +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_801AA7B0; +extern s32 func_8017A3B0(void); +extern short D_801AA7EC; +extern short D_801AA7E8; +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_801AAE28; +extern s16 D_801AAE2A; +extern s16 D_801AAE34; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801AAE28; + + 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_801AAE34); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801AAE28+0xC == &D_801AAE34; 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_801AAE28 + 0xC)) < 0x101) { + D_801AAE28 = 0; + D_801AAE2A = 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_801AAE34); + 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_801AAE28 + 0xC)) < 0x101) { + D_801AAE28 = 0; + D_801AAE2A = 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_801AA82C; + extern s16 D_801AA82E; + extern s16 D_801AA830; + extern s16 D_801AA824; + extern s16 D_801AA826; + extern s16 D_801AA828; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801AA82C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801AA82E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801AA830, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801AA824, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801AA826, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801AA828, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801AA7B4; +extern u16 D_801AA834; +extern u16 D_801AA836; +extern u16 D_801AA838; +extern s16 D_801AAE58; + +void func_8017B1D8(void) { + func_8012A418(); + D_801AAE58 = 0; + D_801AA7B4 = 0; + D_801AA834 = D_80126B5E; + D_801AA836 = D_80126B62; + D_801AA838 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_801897D4[]; + extern s16 D_801AA82C; + extern s16 D_801AA824; + 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_801897D4[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801897D4[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801AA82C; + s16 *p78C = &D_801AA824; + *(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_801AAE58 = 1; + D_801AA7B4 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801AA7D4; + extern SV4_8017B368 D_801AA7DC; + extern s16 D_801AA82C; + extern s16 D_801AA824; + extern u16 D_801897D4; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801AA7D4; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801AA7DC; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_801897D4)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_801897D4)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801AA82C) = loc0; + (*(SV4_8017B368 *)&D_801AA824) = loc1; + D_801AAE58 = 1; + D_801AA7B4 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_801897D4[]; + extern s16 D_801AA82C; + extern s16 D_801AA82E; + extern s16 D_801AA830; + extern s16 D_801AA824; + extern s16 D_801AA826; + extern s16 D_801AA828; + 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_801897D4[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801897D4[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801AA82C; + s16 *p78C = &D_801AA824; + *(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_801AA82E; + v798 = D_801AA830; + v78C = *p78C; + v78E = D_801AA826; + v790 = D_801AA828; + __asm__ __volatile__(""); + D_801AAE58 = 1; + D_801AA7B4 = 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_801AA7B4; +extern s16 D_801AA82C; +extern s16 D_801AA82E; +extern s16 D_801AA830; +extern s16 D_801AA824; +extern s16 D_801AA826; +extern s16 D_801AA828; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801AA7B4 = 0; + D_801AA82C = (s16) D_80114F30; + D_801AA82E = (s16) D_80114F34; + D_801AA830 = (s16) D_80114F38; + D_801AA824 = (s16) D_80114F24; + D_801AA826 = (s16) D_80114F28; + D_801AA828 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801AA844; +extern s16 D_801AA846; +extern s16 D_801AA848; +extern s16 D_801AA84C; +extern s16 D_801AA84E; +extern s16 D_801AA850; + +void func_8017B824(void) { + D_801AA844 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801AA846 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801AA848 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801AA84C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801AA84E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801AA850 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801AA844; +extern s16 D_801AA846; +extern s16 D_801AA848; +extern s16 D_801AA84C; +extern s16 D_801AA84E; +extern s16 D_801AA850; + +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_801AA844; + D_80114F34 = D_801AA846; + D_80114F38 = D_801AA848; + D_80114F24 = D_801AA84C; + D_80114F28 = D_801AA84E; + D_80114F2C = D_801AA850; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801AA82C), src[8..15] -> (*(S8_8017B8E8 *)&D_801AA824) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801AA82C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801AA824) = ((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_801AA834; +extern u16 D_801AA836; +extern u16 D_801AA838; + +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_801AA7B4; +extern short D_801AA83C; +extern short D_801AA83E; +extern short D_801AA840; +extern s16 D_801AA82C; +extern s16 D_801AA82E; +extern s16 D_801AA830; +extern s16 D_801AA824; +extern s16 D_801AA826; +extern s16 D_801AA828; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801AA834); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801AA836); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801AA838); + (*(s16 *)&D_801AA83C) = buf[0]; + (*(s16 *)&D_801AA83E) = buf[1]; + (*(s16 *)&D_801AA840) = buf[2]; + D_801AA82C = D_80114F30 + buf[0]; + D_801AA7B4 = 0; + D_801AA82E = D_80114F34 + buf[1]; + D_801AA830 = D_80114F38 + buf[2]; + D_801AA824 = D_80114F24 + buf[0]; + D_801AA826 = D_80114F28 + buf[1]; + D_801AA828 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801AA7D4; +extern SV4 D_801AA7DC; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801AA7DC) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801AA7D4 = 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_801AA7DC = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801AA7DC)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801AA7D4) = 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_801AA7DC) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801AA7FC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801AA7FC; + 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_801AA7B4; +extern s16 D_801AAE58; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801AA7B4 = D_801AA7B4 + 1; + if (D_801AA7B4 >= 0x1F) { + D_801AAE58 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801AA7B4; +extern s16 D_801AAE58; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801AA7B4 = D_801AA7B4 + 1; + if (0x18 < D_801AA7B4) { + func_8012A4BC(); + D_801AAE58 = 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_801AA7B4; +extern void (*D_801AA7F8)(void); +extern short D_801AA83C; +extern short D_801AA83E; +extern short D_801AA840; +extern s16 D_801AAE58; + +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_801AA7B4 = D_801AA7B4 + 1; + if (D_801AA7B4 >= 0x19) { + if (D_801AA7F8 != 0) { + (*D_801AA7F8)(); + } else { + D_80114F30 = D_80114F30 + D_801AA83C; + D_80114F34 = D_80114F34 + D_801AA83E; + D_80114F38 = D_80114F38 + D_801AA840; + D_80114F24 = D_80114F24 + D_801AA83C; + D_80114F28 = D_80114F28 + D_801AA83E; + D_80114F2C = D_80114F2C + D_801AA840; + func_8012A4BC(); + } + D_801AAE58 = 0; + } +} + + + +extern void (*D_80189874[])(void); + +void func_8017BE60(void *a0) { + D_80189874[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017BFEC); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017C378); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017C5F0); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017C738); + + +extern void (*D_80189990[])(void); + +void func_8017C8B8(void *a0) { + D_80189990[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017C8F4); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017C940); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017CA34); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017CAB4); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017CB68); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017CBD4); + +extern void func_8012C218(void); +void func_8017CC60(void) { + func_8012C218(); +} + + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017CC80); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017CCD4); + + +extern void (*D_801899E8[])(void); + +void func_8017CD10(void *a0) { + D_801899E8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017CD4C); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017CD9C); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017CDF8); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017CE7C); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017CFE4); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017D030); + + +extern void (*D_801899FC[])(void); + +void func_8017D33C(void *a0) { + D_801899FC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017D378); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017D3B8); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017D428); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017D4B4); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017D588); + + +extern void (*D_80189A10[])(void); + +void func_8017D5DC(void *a0) { + D_80189A10[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017D618); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017D6CC); + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017AE2C", func_8017D728); + diff --git a/src/ov_SC03_098/ov_SC03_098_jr_8017A4AC.c b/src/ov_SC03_098/ov_SC03_098_jr_8017A4AC.c index cad9c954f..5d8428508 100644 --- a/src/ov_SC03_098/ov_SC03_098_jr_8017A4AC.c +++ b/src/ov_SC03_098/ov_SC03_098_jr_8017A4AC.c @@ -2967,664 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801C549C; - extern s16 D_801C549E; - extern s16 D_801C54A0; - extern s16 D_801C5494; - extern s16 D_801C5496; - extern s16 D_801C5498; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C549C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C549E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C54A0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C5494, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C5496, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C5498, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801C5424; -extern u16 D_801C54A4; -extern u16 D_801C54A6; -extern u16 D_801C54A8; -extern s16 D_801C5840; - -void func_8017B1D8(void) { - func_8012A418(); - D_801C5840 = 0; - D_801C5424 = 0; - D_801C54A4 = D_80126B5E; - D_801C54A6 = D_80126B62; - D_801C54A8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80188C60[]; - extern s16 D_801C549C; - extern s16 D_801C5494; - 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_80188C60[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80188C60[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C549C; - s16 *p78C = &D_801C5494; - *(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_801C5840 = 1; - D_801C5424 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C5444; - extern SV4_8017B368 D_801C544C; - extern s16 D_801C549C; - extern s16 D_801C5494; - extern u16 D_80188C60; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801C5444; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801C544C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80188C60)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80188C60)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801C549C) = loc0; - (*(SV4_8017B368 *)&D_801C5494) = loc1; - D_801C5840 = 1; - D_801C5424 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80188C60[]; - extern s16 D_801C549C; - extern s16 D_801C549E; - extern s16 D_801C54A0; - extern s16 D_801C5494; - extern s16 D_801C5496; - extern s16 D_801C5498; - 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_80188C60[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80188C60[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C549C; - s16 *p78C = &D_801C5494; - *(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_801C549E; - v798 = D_801C54A0; - v78C = *p78C; - v78E = D_801C5496; - v790 = D_801C5498; - __asm__ __volatile__(""); - D_801C5840 = 1; - D_801C5424 = 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_801C5424; -extern s16 D_801C549C; -extern s16 D_801C549E; -extern s16 D_801C54A0; -extern s16 D_801C5494; -extern s16 D_801C5496; -extern s16 D_801C5498; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801C5424 = 0; - D_801C549C = (s16) D_80114F30; - D_801C549E = (s16) D_80114F34; - D_801C54A0 = (s16) D_80114F38; - D_801C5494 = (s16) D_80114F24; - D_801C5496 = (s16) D_80114F28; - D_801C5498 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801C54B4; -extern s16 D_801C54B6; -extern s16 D_801C54B8; -extern s16 D_801C54BC; -extern s16 D_801C54BE; -extern s16 D_801C54C0; - -void func_8017B824(void) { - D_801C54B4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801C54B6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801C54B8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801C54BC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801C54BE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801C54C0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801C54B4; -extern s16 D_801C54B6; -extern s16 D_801C54B8; -extern s16 D_801C54BC; -extern s16 D_801C54BE; -extern s16 D_801C54C0; - -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_801C54B4; - D_80114F34 = D_801C54B6; - D_80114F38 = D_801C54B8; - D_80114F24 = D_801C54BC; - D_80114F28 = D_801C54BE; - D_80114F2C = D_801C54C0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801C549C), src[8..15] -> (*(S8_8017B8E8 *)&D_801C5494) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801C549C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801C5494) = ((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_801C54A4; -extern u16 D_801C54A6; -extern u16 D_801C54A8; - -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_801C5424; -extern short D_801C54AC; -extern short D_801C54AE; -extern short D_801C54B0; -extern s16 D_801C549C; -extern s16 D_801C549E; -extern s16 D_801C54A0; -extern s16 D_801C5494; -extern s16 D_801C5496; -extern s16 D_801C5498; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C54A4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C54A6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C54A8); - (*(s16 *)&D_801C54AC) = buf[0]; - (*(s16 *)&D_801C54AE) = buf[1]; - (*(s16 *)&D_801C54B0) = buf[2]; - D_801C549C = D_80114F30 + buf[0]; - D_801C5424 = 0; - D_801C549E = D_80114F34 + buf[1]; - D_801C54A0 = D_80114F38 + buf[2]; - D_801C5494 = D_80114F24 + buf[0]; - D_801C5496 = D_80114F28 + buf[1]; - D_801C5498 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801C5444; -extern SV4 D_801C544C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C544C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801C5444 = 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_801C544C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C544C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801C5444) = 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_801C544C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801C546C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801C546C; - 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_801C5424; -extern s16 D_801C5840; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801C5424 = D_801C5424 + 1; - if (D_801C5424 >= 0x1F) { - D_801C5840 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801C5424; -extern s16 D_801C5840; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801C5424 = D_801C5424 + 1; - if (0x18 < D_801C5424) { - func_8012A4BC(); - D_801C5840 = 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_801C5424; -extern void (*D_801C5468)(void); -extern short D_801C54AC; -extern short D_801C54AE; -extern short D_801C54B0; -extern s16 D_801C5840; - -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_801C5424 = D_801C5424 + 1; - if (D_801C5424 >= 0x19) { - if (D_801C5468 != 0) { - (*D_801C5468)(); - } else { - D_80114F30 = D_80114F30 + D_801C54AC; - D_80114F34 = D_80114F34 + D_801C54AE; - D_80114F38 = D_80114F38 + D_801C54B0; - D_80114F24 = D_80114F24 + D_801C54AC; - D_80114F28 = D_80114F28 + D_801C54AE; - D_80114F2C = D_80114F2C + D_801C54B0; - func_8012A4BC(); - } - D_801C5840 = 0; - } -} - - - -extern void (*D_80188D00[])(void); - -void func_8017BE60(void *a0) { - D_80188D00[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017BFEC); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017C378); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017C5F0); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017C738); - - -extern void (*D_80188E1C[])(void); - -void func_8017C8B8(void *a0) { - D_80188E1C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017C8F4); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017C940); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017CA34); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017CAB4); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017CB68); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017CBD4); - -extern void func_8012C218(void); -void func_8017CC60(void) { - func_8012C218(); -} - - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017CC80); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017CCD4); - - -extern void (*D_80188E74[])(void); - -void func_8017CD10(void *a0) { - D_80188E74[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017CD4C); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017CD9C); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017CDF8); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017CE7C); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017CFE4); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017D030); - - -extern void (*D_80188E88[])(void); - -void func_8017D33C(void *a0) { - D_80188E88[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017D378); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017D3B8); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017D428); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017D4B4); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017D588); - - -extern void (*D_80188E9C[])(void); - -void func_8017D5DC(void *a0) { - D_80188E9C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017D618); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017D6CC); - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017A4AC", func_8017D728); diff --git a/src/ov_SC03_098/ov_SC03_098_jr_8017AE2C.c b/src/ov_SC03_098/ov_SC03_098_jr_8017AE2C.c new file mode 100644 index 000000000..7e6770142 --- /dev/null +++ b/src/ov_SC03_098/ov_SC03_098_jr_8017AE2C.c @@ -0,0 +1,3562 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80187858; +extern u8 D_801877C8; +extern u8 D_801877A4; +extern u8 D_80187780; +extern u8 D_80187834; +extern u8 D_80187810; +extern u8 D_801877EC; +extern u8 D_8018775C; +extern void func_80145934(void); +extern u8 D_801878E8; +extern u8 D_801878C4; +extern u8 D_801878A0; +extern u8 D_8018787C; +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_80186CE0[]; +extern unsigned char D_80186D10[]; +extern unsigned char D_80186D60[]; +extern unsigned char D_80186D90[]; +extern unsigned char D_80186DC0[]; +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(void); +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_80186E10[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80186ED8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80186F60[]; +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_80186F68; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801C4320; +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_801C4324; +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_80186F98; +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 void 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_80187040[])(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_80187064[])(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_80187054; +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_80187078[])(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_80187084[]; +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_80187094[])(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_801870AC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018709C; +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_801870C0[])(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_801870DC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801870CC; +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_801870F0[])(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_80187104[])(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_80187118; +extern void (*D_80187140[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80187120; +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_8018718C[])(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_80187190[])(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(void *a0); +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_801875F4[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80187604[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801C4358; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018762C[])(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_8018760C; +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_8018761C; +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_8018766C[])(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_80187674[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80187640; +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_80187680[])(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_80187650; +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_801C4360; +extern s32 D_801C436C; +extern s32 D_801C4370; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801876BC[])(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_80187690[]; +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_801C4368; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018790C[])(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_8018772C[]; +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_801879B0[])(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_80187B04[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80187920; +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_80187B0C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80187930; +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_80187950; +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_80187B14[])(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(void); +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_80187B3C[])(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_80187B48[])(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_801879BC[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80187BEC; +extern void func_8015D380(s32 a0); +extern unsigned char D_80186CD0[]; +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_80187C00[]; +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_80187C3C[]; +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_80187C84; +extern u16 D_80187C86; +extern u16 D_80187C88; +extern s32 D_80187C8C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80187C94; +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_801879A0; +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_80187D18[]; +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_80187DC8[])(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_80187DF8[]; +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_80187E5C; +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_801C4378[]; +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_80187E80[])(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_801C43D0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80187EC8[])(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_80187EB8; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801C3C00[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_80187ED0[])(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_80187F24[])(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_80187EEC; +extern s16 D_80187F20; +extern s16 D_80187F1E; +extern s16 D_80187F1C; +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_80187F30[])(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_801C4430; +extern u8 D_801C4431; +extern u8 D_801C4432; +extern u8 D_801C4433; +extern u8 D_801C4434; +extern u8 D_801C4435; +extern u8 D_801C4436; +extern u8 D_801C4437; +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_80187F40[])(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_801C4470; +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_80187F84[])(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_80188000[]; +extern s32 D_80188020[]; +extern u8 D_8018809C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801880BC[]; +extern u8 D_801880DC[]; +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_80188178[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801881F4[])(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_801C3C10; +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_80188200[])(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_80188208[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801882D0[])(void); +extern void func_80166618(void *a0); +extern void (*D_801882E0[])(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_801882F0[])(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_801882FC[])(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_8018825C[]; +extern u8 D_80188270[]; +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_80188314[])(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_8018831C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80188324[])(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_8018832C[])(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_80188334[])(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_8018833C[])(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_80188344[])(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_801883F8[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80188400[])(void); +extern void func_80169F00(void *a0); +extern char D_801883B0[]; +extern char D_80188370[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80188438[])(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_80188444[])(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_8018848C[])(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_80188508[])(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_801C4790; +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_801884FC[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80188540[]; +extern unsigned short D_80188548[]; +extern unsigned short D_80188550[]; +extern unsigned char D_801C4798[]; +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_801C4790; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80188558[])(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_801C48CC; +extern M2C_UNK D_801C48D0; +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_801C4858; +extern void (*D_80188588[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801C48D4[]; +extern u8 D_801C48DC[]; +extern u8 D_801C488C[]; +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_80188590[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801885AC[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801885B4[])(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_8018861C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801885C0; +extern u8 D_801885CC; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80188650[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80188658[])(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_801886AC[])(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_801886E0[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801886D0[]; +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_801886FC; +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); +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_80188774[])(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_8018877C[])(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_80188784[])(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_8018878C[])(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_80188794[])(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_8018879C[])(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_801887A8[])(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_801887B4[])(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_801887C0[])(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_801887D0[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801887E0[])(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_801887E8[])(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_801887F0[])(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_801887F8[])(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_80188800[])(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_80188808[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80188810[])(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_80188818[])(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_80188820[])(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_80188828[])(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_80188830[])(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_80188838[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80188840[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80188848[])(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_80188850[])(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_80188858[])(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_80188860[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80188868[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80188870[])(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_80188878[])(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_80188880[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80188888[])(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_80188890[])(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_801888D4[])(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_80188898; +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_80188904[])(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_80188940[])(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(s32); +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_80188998[])(); +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_801889A8[])(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_801889B0[])(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_80188B18[])(); +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_80188B24[])(); +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_801C3E58; +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 int func_801789AC(void); +extern s16 D_801C5840; +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_801C5010; +extern short D_801C58B4; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801C543C; +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_801C5464; +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_801C5420; +extern s32 func_8017A3B0(void); +extern short D_801C545C; +extern short D_801C5458; +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_801C5810; +extern s16 D_801C5812; +extern s16 D_801C581C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801C5810; + + 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_801C581C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801C5810+0xC == &D_801C581C; 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_801C5810 + 0xC)) < 0x101) { + D_801C5810 = 0; + D_801C5812 = 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_801C581C); + 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_801C5810 + 0xC)) < 0x101) { + D_801C5810 = 0; + D_801C5812 = 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_801C549C; + extern s16 D_801C549E; + extern s16 D_801C54A0; + extern s16 D_801C5494; + extern s16 D_801C5496; + extern s16 D_801C5498; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C549C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C549E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C54A0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C5494, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C5496, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C5498, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801C5424; +extern u16 D_801C54A4; +extern u16 D_801C54A6; +extern u16 D_801C54A8; +extern s16 D_801C5840; + +void func_8017B1D8(void) { + func_8012A418(); + D_801C5840 = 0; + D_801C5424 = 0; + D_801C54A4 = D_80126B5E; + D_801C54A6 = D_80126B62; + D_801C54A8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80188C60[]; + extern s16 D_801C549C; + extern s16 D_801C5494; + 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_80188C60[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80188C60[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C549C; + s16 *p78C = &D_801C5494; + *(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_801C5840 = 1; + D_801C5424 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C5444; + extern SV4_8017B368 D_801C544C; + extern s16 D_801C549C; + extern s16 D_801C5494; + extern u16 D_80188C60; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801C5444; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801C544C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80188C60)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80188C60)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801C549C) = loc0; + (*(SV4_8017B368 *)&D_801C5494) = loc1; + D_801C5840 = 1; + D_801C5424 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80188C60[]; + extern s16 D_801C549C; + extern s16 D_801C549E; + extern s16 D_801C54A0; + extern s16 D_801C5494; + extern s16 D_801C5496; + extern s16 D_801C5498; + 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_80188C60[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80188C60[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C549C; + s16 *p78C = &D_801C5494; + *(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_801C549E; + v798 = D_801C54A0; + v78C = *p78C; + v78E = D_801C5496; + v790 = D_801C5498; + __asm__ __volatile__(""); + D_801C5840 = 1; + D_801C5424 = 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_801C5424; +extern s16 D_801C549C; +extern s16 D_801C549E; +extern s16 D_801C54A0; +extern s16 D_801C5494; +extern s16 D_801C5496; +extern s16 D_801C5498; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801C5424 = 0; + D_801C549C = (s16) D_80114F30; + D_801C549E = (s16) D_80114F34; + D_801C54A0 = (s16) D_80114F38; + D_801C5494 = (s16) D_80114F24; + D_801C5496 = (s16) D_80114F28; + D_801C5498 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801C54B4; +extern s16 D_801C54B6; +extern s16 D_801C54B8; +extern s16 D_801C54BC; +extern s16 D_801C54BE; +extern s16 D_801C54C0; + +void func_8017B824(void) { + D_801C54B4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801C54B6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801C54B8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801C54BC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801C54BE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801C54C0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801C54B4; +extern s16 D_801C54B6; +extern s16 D_801C54B8; +extern s16 D_801C54BC; +extern s16 D_801C54BE; +extern s16 D_801C54C0; + +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_801C54B4; + D_80114F34 = D_801C54B6; + D_80114F38 = D_801C54B8; + D_80114F24 = D_801C54BC; + D_80114F28 = D_801C54BE; + D_80114F2C = D_801C54C0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801C549C), src[8..15] -> (*(S8_8017B8E8 *)&D_801C5494) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801C549C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801C5494) = ((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_801C54A4; +extern u16 D_801C54A6; +extern u16 D_801C54A8; + +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_801C5424; +extern short D_801C54AC; +extern short D_801C54AE; +extern short D_801C54B0; +extern s16 D_801C549C; +extern s16 D_801C549E; +extern s16 D_801C54A0; +extern s16 D_801C5494; +extern s16 D_801C5496; +extern s16 D_801C5498; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C54A4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C54A6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C54A8); + (*(s16 *)&D_801C54AC) = buf[0]; + (*(s16 *)&D_801C54AE) = buf[1]; + (*(s16 *)&D_801C54B0) = buf[2]; + D_801C549C = D_80114F30 + buf[0]; + D_801C5424 = 0; + D_801C549E = D_80114F34 + buf[1]; + D_801C54A0 = D_80114F38 + buf[2]; + D_801C5494 = D_80114F24 + buf[0]; + D_801C5496 = D_80114F28 + buf[1]; + D_801C5498 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801C5444; +extern SV4 D_801C544C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C544C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801C5444 = 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_801C544C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C544C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801C5444) = 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_801C544C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801C546C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801C546C; + 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_801C5424; +extern s16 D_801C5840; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801C5424 = D_801C5424 + 1; + if (D_801C5424 >= 0x1F) { + D_801C5840 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801C5424; +extern s16 D_801C5840; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801C5424 = D_801C5424 + 1; + if (0x18 < D_801C5424) { + func_8012A4BC(); + D_801C5840 = 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_801C5424; +extern void (*D_801C5468)(void); +extern short D_801C54AC; +extern short D_801C54AE; +extern short D_801C54B0; +extern s16 D_801C5840; + +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_801C5424 = D_801C5424 + 1; + if (D_801C5424 >= 0x19) { + if (D_801C5468 != 0) { + (*D_801C5468)(); + } else { + D_80114F30 = D_80114F30 + D_801C54AC; + D_80114F34 = D_80114F34 + D_801C54AE; + D_80114F38 = D_80114F38 + D_801C54B0; + D_80114F24 = D_80114F24 + D_801C54AC; + D_80114F28 = D_80114F28 + D_801C54AE; + D_80114F2C = D_80114F2C + D_801C54B0; + func_8012A4BC(); + } + D_801C5840 = 0; + } +} + + + +extern void (*D_80188D00[])(void); + +void func_8017BE60(void *a0) { + D_80188D00[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017BFEC); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017C378); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017C5F0); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017C738); + + +extern void (*D_80188E1C[])(void); + +void func_8017C8B8(void *a0) { + D_80188E1C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017C8F4); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017C940); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017CA34); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017CAB4); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017CB68); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017CBD4); + +extern void func_8012C218(void); +void func_8017CC60(void) { + func_8012C218(); +} + + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017CC80); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017CCD4); + + +extern void (*D_80188E74[])(void); + +void func_8017CD10(void *a0) { + D_80188E74[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017CD4C); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017CD9C); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017CDF8); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017CE7C); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017CFE4); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017D030); + + +extern void (*D_80188E88[])(void); + +void func_8017D33C(void *a0) { + D_80188E88[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017D378); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017D3B8); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017D428); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017D4B4); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017D588); + + +extern void (*D_80188E9C[])(void); + +void func_8017D5DC(void *a0) { + D_80188E9C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017D618); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017D6CC); + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017AE2C", func_8017D728); + diff --git a/src/ov_SC03_099/ov_SC03_099_jr_8017A4AC.c b/src/ov_SC03_099/ov_SC03_099_jr_8017A4AC.c index 3bfb2cb61..6c4b6dd18 100644 --- a/src/ov_SC03_099/ov_SC03_099_jr_8017A4AC.c +++ b/src/ov_SC03_099/ov_SC03_099_jr_8017A4AC.c @@ -2967,572 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801BF16C; - extern s16 D_801BF16E; - extern s16 D_801BF170; - extern s16 D_801BF164; - extern s16 D_801BF166; - extern s16 D_801BF168; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801BF16C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801BF16E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801BF170, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801BF164, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801BF166, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801BF168, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801BF0F4; -extern u16 D_801BF174; -extern u16 D_801BF176; -extern u16 D_801BF178; -extern s16 D_801BF3E8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801BF3E8 = 0; - D_801BF0F4 = 0; - D_801BF174 = D_80126B5E; - D_801BF176 = D_80126B62; - D_801BF178 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80186D60[]; - extern s16 D_801BF16C; - extern s16 D_801BF164; - 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_80186D60[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80186D60[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801BF16C; - s16 *p78C = &D_801BF164; - *(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_801BF3E8 = 1; - D_801BF0F4 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801BF114; - extern SV4_8017B368 D_801BF11C; - extern s16 D_801BF16C; - extern s16 D_801BF164; - extern u16 D_80186D60; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801BF114; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801BF11C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80186D60)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80186D60)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801BF16C) = loc0; - (*(SV4_8017B368 *)&D_801BF164) = loc1; - D_801BF3E8 = 1; - D_801BF0F4 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80186D60[]; - extern s16 D_801BF16C; - extern s16 D_801BF16E; - extern s16 D_801BF170; - extern s16 D_801BF164; - extern s16 D_801BF166; - extern s16 D_801BF168; - 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_80186D60[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80186D60[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801BF16C; - s16 *p78C = &D_801BF164; - *(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_801BF16E; - v798 = D_801BF170; - v78C = *p78C; - v78E = D_801BF166; - v790 = D_801BF168; - __asm__ __volatile__(""); - D_801BF3E8 = 1; - D_801BF0F4 = 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_801BF0F4; -extern s16 D_801BF16C; -extern s16 D_801BF16E; -extern s16 D_801BF170; -extern s16 D_801BF164; -extern s16 D_801BF166; -extern s16 D_801BF168; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801BF0F4 = 0; - D_801BF16C = (s16) D_80114F30; - D_801BF16E = (s16) D_80114F34; - D_801BF170 = (s16) D_80114F38; - D_801BF164 = (s16) D_80114F24; - D_801BF166 = (s16) D_80114F28; - D_801BF168 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801BF184; -extern s16 D_801BF186; -extern s16 D_801BF188; -extern s16 D_801BF18C; -extern s16 D_801BF18E; -extern s16 D_801BF190; - -void func_8017B824(void) { - D_801BF184 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801BF186 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801BF188 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801BF18C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801BF18E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801BF190 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801BF184; -extern s16 D_801BF186; -extern s16 D_801BF188; -extern s16 D_801BF18C; -extern s16 D_801BF18E; -extern s16 D_801BF190; - -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_801BF184; - D_80114F34 = D_801BF186; - D_80114F38 = D_801BF188; - D_80114F24 = D_801BF18C; - D_80114F28 = D_801BF18E; - D_80114F2C = D_801BF190; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801BF16C), src[8..15] -> (*(S8_8017B8E8 *)&D_801BF164) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801BF16C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801BF164) = ((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_801BF174; -extern u16 D_801BF176; -extern u16 D_801BF178; - -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_801BF0F4; -extern short D_801BF17C; -extern short D_801BF17E; -extern short D_801BF180; -extern s16 D_801BF16C; -extern s16 D_801BF16E; -extern s16 D_801BF170; -extern s16 D_801BF164; -extern s16 D_801BF166; -extern s16 D_801BF168; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801BF174); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801BF176); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801BF178); - (*(s16 *)&D_801BF17C) = buf[0]; - (*(s16 *)&D_801BF17E) = buf[1]; - (*(s16 *)&D_801BF180) = buf[2]; - D_801BF16C = D_80114F30 + buf[0]; - D_801BF0F4 = 0; - D_801BF16E = D_80114F34 + buf[1]; - D_801BF170 = D_80114F38 + buf[2]; - D_801BF164 = D_80114F24 + buf[0]; - D_801BF166 = D_80114F28 + buf[1]; - D_801BF168 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801BF114; -extern SV4 D_801BF11C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801BF11C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801BF114 = 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_801BF11C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801BF11C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801BF114) = 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_801BF11C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801BF13C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801BF13C; - 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_801BF0F4; -extern s16 D_801BF3E8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801BF0F4 = D_801BF0F4 + 1; - if (D_801BF0F4 >= 0x1F) { - D_801BF3E8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801BF0F4; -extern s16 D_801BF3E8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801BF0F4 = D_801BF0F4 + 1; - if (0x18 < D_801BF0F4) { - func_8012A4BC(); - D_801BF3E8 = 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_801BF0F4; -extern void (*D_801BF138)(void); -extern short D_801BF17C; -extern short D_801BF17E; -extern short D_801BF180; -extern s16 D_801BF3E8; - -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_801BF0F4 = D_801BF0F4 + 1; - if (D_801BF0F4 >= 0x19) { - if (D_801BF138 != 0) { - (*D_801BF138)(); - } else { - D_80114F30 = D_80114F30 + D_801BF17C; - D_80114F34 = D_80114F34 + D_801BF17E; - D_80114F38 = D_80114F38 + D_801BF180; - D_80114F24 = D_80114F24 + D_801BF17C; - D_80114F28 = D_80114F28 + D_801BF17E; - D_80114F2C = D_80114F2C + D_801BF180; - func_8012A4BC(); - } - D_801BF3E8 = 0; - } -} - - - -extern void (*D_80186E00[])(void); - -void func_8017BE60(void *a0) { - D_80186E00[*(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) */ diff --git a/src/ov_SC03_099/ov_SC03_099_jr_8017AE2C.c b/src/ov_SC03_099/ov_SC03_099_jr_8017AE2C.c new file mode 100644 index 000000000..1b01d621c --- /dev/null +++ b/src/ov_SC03_099/ov_SC03_099_jr_8017AE2C.c @@ -0,0 +1,3470 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80185958; +extern u8 D_801858C8; +extern u8 D_801858A4; +extern u8 D_80185880; +extern u8 D_80185934; +extern u8 D_80185910; +extern u8 D_801858EC; +extern u8 D_8018585C; +extern void func_80145934(void); +extern u8 D_801859E8; +extern u8 D_801859C4; +extern u8 D_801859A0; +extern u8 D_8018597C; +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_80184DE0[]; +extern unsigned char D_80184E10[]; +extern unsigned char D_80184E60[]; +extern unsigned char D_80184E90[]; +extern unsigned char D_80184EC0[]; +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(void); +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_80184F10[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80184FD8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80185060[]; +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_80185068; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801BDFF0; +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_801BDFF4; +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_80185098; +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 void 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_80185140[])(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_80185164[])(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_80185154; +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_80185178[])(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_80185184[]; +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_80185194[])(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_801851AC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018519C; +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_801851C0[])(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_801851DC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801851CC; +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_801851F0[])(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_80185204[])(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_80185218; +extern void (*D_80185240[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80185220; +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_8018528C[])(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_80185290[])(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(void *a0); +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_801856F4[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80185704[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801BE028; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018572C[])(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_8018570C; +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_8018571C; +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_8018576C[])(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_80185774[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80185740; +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_80185780[])(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_80185750; +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_801BE030; +extern s32 D_801BE03C; +extern s32 D_801BE040; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801857BC[])(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_80185790[]; +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_801BE038; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80185A0C[])(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_8018582C[]; +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_80185AB0[])(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_80185C04[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80185A20; +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_80185C0C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80185A30; +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_80185A50; +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_80185C14[])(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(void); +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_80185C3C[])(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_80185C48[])(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_80185ABC[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80185CEC; +extern void func_8015D380(s32 a0); +extern unsigned char D_80184DD0[]; +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_80185D00[]; +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_80185D3C[]; +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_80185D84; +extern u16 D_80185D86; +extern u16 D_80185D88; +extern s32 D_80185D8C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80185D94; +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_80185AA0; +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_80185E18[]; +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_80185EC8[])(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_80185EF8[]; +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_80185F5C; +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_801BE048[]; +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_80185F80[])(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_801BE0A0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80185FC8[])(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_80185FB8; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801BD8D4[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_80185FD0[])(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_80186024[])(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_80185FEC; +extern s16 D_80186020; +extern s16 D_8018601E; +extern s16 D_8018601C; +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_80186030[])(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_801BE100; +extern u8 D_801BE101; +extern u8 D_801BE102; +extern u8 D_801BE103; +extern u8 D_801BE104; +extern u8 D_801BE105; +extern u8 D_801BE106; +extern u8 D_801BE107; +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_80186040[])(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_801BE140; +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_80186084[])(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_80186100[]; +extern s32 D_80186120[]; +extern u8 D_8018619C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801861BC[]; +extern u8 D_801861DC[]; +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_80186278[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801862F4[])(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_801BD8E4; +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_80186300[])(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_80186308[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801863D0[])(void); +extern void func_80166618(void *a0); +extern void (*D_801863E0[])(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_801863F0[])(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_801863FC[])(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_8018635C[]; +extern u8 D_80186370[]; +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_80186414[])(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_8018641C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80186424[])(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_8018642C[])(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_80186434[])(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_8018643C[])(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_80186444[])(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_801864F8[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80186500[])(void); +extern void func_80169F00(void *a0); +extern char D_801864B0[]; +extern char D_80186470[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80186538[])(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_80186544[])(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_8018658C[])(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_80186608[])(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_801BE460; +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_801865FC[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80186640[]; +extern unsigned short D_80186648[]; +extern unsigned short D_80186650[]; +extern unsigned char D_801BE468[]; +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_801BE460; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80186658[])(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_801BE59C; +extern M2C_UNK D_801BE5A0; +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_801BE528; +extern void (*D_80186688[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801BE5A4[]; +extern u8 D_801BE5AC[]; +extern u8 D_801BE55C[]; +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_80186690[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801866AC[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801866B4[])(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_8018671C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801866C0; +extern u8 D_801866CC; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80186750[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80186758[])(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_801867AC[])(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_801867E0[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801867D0[]; +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_801867FC; +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); +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_80186874[])(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_8018687C[])(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_80186884[])(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_8018688C[])(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_80186894[])(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_8018689C[])(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_801868A8[])(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_801868B4[])(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_801868C0[])(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_801868D0[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801868E0[])(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_801868E8[])(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_801868F0[])(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_801868F8[])(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_80186900[])(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_80186908[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80186910[])(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_80186918[])(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_80186920[])(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_80186928[])(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_80186930[])(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_80186938[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80186940[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80186948[])(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_80186950[])(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_80186958[])(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_80186960[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80186968[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80186970[])(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_80186978[])(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_80186980[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80186988[])(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_80186990[])(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_801869D4[])(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_80186998; +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_80186A04[])(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_80186A40[])(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(s32); +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_80186A98[])(); +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_80186AA8[])(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_80186AB0[])(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_80186C18[])(); +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_80186C24[])(); +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_801BDB2C; +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 int func_801789AC(void); +extern s16 D_801BF3E8; +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_801BECE0; +extern short D_801BF45C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801BF10C; +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_801BF134; +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_801BF0F0; +extern s32 func_8017A3B0(void); +extern short D_801BF12C; +extern short D_801BF128; +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_801BF3B8; +extern s16 D_801BF3BA; +extern s16 D_801BF3C4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801BF3B8; + + 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_801BF3C4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801BF3B8+0xC == &D_801BF3C4; 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_801BF3B8 + 0xC)) < 0x101) { + D_801BF3B8 = 0; + D_801BF3BA = 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_801BF3C4); + 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_801BF3B8 + 0xC)) < 0x101) { + D_801BF3B8 = 0; + D_801BF3BA = 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_801BF16C; + extern s16 D_801BF16E; + extern s16 D_801BF170; + extern s16 D_801BF164; + extern s16 D_801BF166; + extern s16 D_801BF168; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801BF16C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801BF16E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801BF170, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801BF164, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801BF166, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801BF168, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801BF0F4; +extern u16 D_801BF174; +extern u16 D_801BF176; +extern u16 D_801BF178; +extern s16 D_801BF3E8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801BF3E8 = 0; + D_801BF0F4 = 0; + D_801BF174 = D_80126B5E; + D_801BF176 = D_80126B62; + D_801BF178 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80186D60[]; + extern s16 D_801BF16C; + extern s16 D_801BF164; + 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_80186D60[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80186D60[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801BF16C; + s16 *p78C = &D_801BF164; + *(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_801BF3E8 = 1; + D_801BF0F4 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801BF114; + extern SV4_8017B368 D_801BF11C; + extern s16 D_801BF16C; + extern s16 D_801BF164; + extern u16 D_80186D60; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801BF114; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801BF11C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80186D60)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80186D60)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801BF16C) = loc0; + (*(SV4_8017B368 *)&D_801BF164) = loc1; + D_801BF3E8 = 1; + D_801BF0F4 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80186D60[]; + extern s16 D_801BF16C; + extern s16 D_801BF16E; + extern s16 D_801BF170; + extern s16 D_801BF164; + extern s16 D_801BF166; + extern s16 D_801BF168; + 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_80186D60[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80186D60[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801BF16C; + s16 *p78C = &D_801BF164; + *(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_801BF16E; + v798 = D_801BF170; + v78C = *p78C; + v78E = D_801BF166; + v790 = D_801BF168; + __asm__ __volatile__(""); + D_801BF3E8 = 1; + D_801BF0F4 = 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_801BF0F4; +extern s16 D_801BF16C; +extern s16 D_801BF16E; +extern s16 D_801BF170; +extern s16 D_801BF164; +extern s16 D_801BF166; +extern s16 D_801BF168; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801BF0F4 = 0; + D_801BF16C = (s16) D_80114F30; + D_801BF16E = (s16) D_80114F34; + D_801BF170 = (s16) D_80114F38; + D_801BF164 = (s16) D_80114F24; + D_801BF166 = (s16) D_80114F28; + D_801BF168 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801BF184; +extern s16 D_801BF186; +extern s16 D_801BF188; +extern s16 D_801BF18C; +extern s16 D_801BF18E; +extern s16 D_801BF190; + +void func_8017B824(void) { + D_801BF184 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801BF186 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801BF188 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801BF18C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801BF18E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801BF190 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801BF184; +extern s16 D_801BF186; +extern s16 D_801BF188; +extern s16 D_801BF18C; +extern s16 D_801BF18E; +extern s16 D_801BF190; + +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_801BF184; + D_80114F34 = D_801BF186; + D_80114F38 = D_801BF188; + D_80114F24 = D_801BF18C; + D_80114F28 = D_801BF18E; + D_80114F2C = D_801BF190; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801BF16C), src[8..15] -> (*(S8_8017B8E8 *)&D_801BF164) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801BF16C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801BF164) = ((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_801BF174; +extern u16 D_801BF176; +extern u16 D_801BF178; + +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_801BF0F4; +extern short D_801BF17C; +extern short D_801BF17E; +extern short D_801BF180; +extern s16 D_801BF16C; +extern s16 D_801BF16E; +extern s16 D_801BF170; +extern s16 D_801BF164; +extern s16 D_801BF166; +extern s16 D_801BF168; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801BF174); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801BF176); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801BF178); + (*(s16 *)&D_801BF17C) = buf[0]; + (*(s16 *)&D_801BF17E) = buf[1]; + (*(s16 *)&D_801BF180) = buf[2]; + D_801BF16C = D_80114F30 + buf[0]; + D_801BF0F4 = 0; + D_801BF16E = D_80114F34 + buf[1]; + D_801BF170 = D_80114F38 + buf[2]; + D_801BF164 = D_80114F24 + buf[0]; + D_801BF166 = D_80114F28 + buf[1]; + D_801BF168 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801BF114; +extern SV4 D_801BF11C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801BF11C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801BF114 = 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_801BF11C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801BF11C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801BF114) = 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_801BF11C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801BF13C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801BF13C; + 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_801BF0F4; +extern s16 D_801BF3E8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801BF0F4 = D_801BF0F4 + 1; + if (D_801BF0F4 >= 0x1F) { + D_801BF3E8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801BF0F4; +extern s16 D_801BF3E8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801BF0F4 = D_801BF0F4 + 1; + if (0x18 < D_801BF0F4) { + func_8012A4BC(); + D_801BF3E8 = 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_801BF0F4; +extern void (*D_801BF138)(void); +extern short D_801BF17C; +extern short D_801BF17E; +extern short D_801BF180; +extern s16 D_801BF3E8; + +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_801BF0F4 = D_801BF0F4 + 1; + if (D_801BF0F4 >= 0x19) { + if (D_801BF138 != 0) { + (*D_801BF138)(); + } else { + D_80114F30 = D_80114F30 + D_801BF17C; + D_80114F34 = D_80114F34 + D_801BF17E; + D_80114F38 = D_80114F38 + D_801BF180; + D_80114F24 = D_80114F24 + D_801BF17C; + D_80114F28 = D_80114F28 + D_801BF17E; + D_80114F2C = D_80114F2C + D_801BF180; + func_8012A4BC(); + } + D_801BF3E8 = 0; + } +} + + + +extern void (*D_80186E00[])(void); + +void func_8017BE60(void *a0) { + D_80186E00[*(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) */ + diff --git a/src/ov_SC03_100/ov_SC03_100_jr_8017A4AC.c b/src/ov_SC03_100/ov_SC03_100_jr_8017A4AC.c index 62684034d..443b88ed2 100644 --- a/src/ov_SC03_100/ov_SC03_100_jr_8017A4AC.c +++ b/src/ov_SC03_100/ov_SC03_100_jr_8017A4AC.c @@ -2967,664 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801C83F4; - extern s16 D_801C83F6; - extern s16 D_801C83F8; - extern s16 D_801C83EC; - extern s16 D_801C83EE; - extern s16 D_801C83F0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C83F4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C83F6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C83F8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C83EC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C83EE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C83F0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801C837C; -extern u16 D_801C83FC; -extern u16 D_801C83FE; -extern u16 D_801C8400; -extern s16 D_801C88F0; - -void func_8017B1D8(void) { - func_8012A418(); - D_801C88F0 = 0; - D_801C837C = 0; - D_801C83FC = D_80126B5E; - D_801C83FE = D_80126B62; - D_801C8400 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018822C[]; - extern s16 D_801C83F4; - extern s16 D_801C83EC; - 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_8018822C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018822C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C83F4; - s16 *p78C = &D_801C83EC; - *(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_801C88F0 = 1; - D_801C837C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C839C; - extern SV4_8017B368 D_801C83A4; - extern s16 D_801C83F4; - extern s16 D_801C83EC; - extern u16 D_8018822C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801C839C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801C83A4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018822C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018822C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801C83F4) = loc0; - (*(SV4_8017B368 *)&D_801C83EC) = loc1; - D_801C88F0 = 1; - D_801C837C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018822C[]; - extern s16 D_801C83F4; - extern s16 D_801C83F6; - extern s16 D_801C83F8; - extern s16 D_801C83EC; - extern s16 D_801C83EE; - extern s16 D_801C83F0; - 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_8018822C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018822C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C83F4; - s16 *p78C = &D_801C83EC; - *(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_801C83F6; - v798 = D_801C83F8; - v78C = *p78C; - v78E = D_801C83EE; - v790 = D_801C83F0; - __asm__ __volatile__(""); - D_801C88F0 = 1; - D_801C837C = 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_801C837C; -extern s16 D_801C83F4; -extern s16 D_801C83F6; -extern s16 D_801C83F8; -extern s16 D_801C83EC; -extern s16 D_801C83EE; -extern s16 D_801C83F0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801C837C = 0; - D_801C83F4 = (s16) D_80114F30; - D_801C83F6 = (s16) D_80114F34; - D_801C83F8 = (s16) D_80114F38; - D_801C83EC = (s16) D_80114F24; - D_801C83EE = (s16) D_80114F28; - D_801C83F0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801C840C; -extern s16 D_801C840E; -extern s16 D_801C8410; -extern s16 D_801C8414; -extern s16 D_801C8416; -extern s16 D_801C8418; - -void func_8017B824(void) { - D_801C840C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801C840E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801C8410 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801C8414 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801C8416 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801C8418 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801C840C; -extern s16 D_801C840E; -extern s16 D_801C8410; -extern s16 D_801C8414; -extern s16 D_801C8416; -extern s16 D_801C8418; - -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_801C840C; - D_80114F34 = D_801C840E; - D_80114F38 = D_801C8410; - D_80114F24 = D_801C8414; - D_80114F28 = D_801C8416; - D_80114F2C = D_801C8418; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801C83F4), src[8..15] -> (*(S8_8017B8E8 *)&D_801C83EC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801C83F4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801C83EC) = ((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_801C83FC; -extern u16 D_801C83FE; -extern u16 D_801C8400; - -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_801C837C; -extern short D_801C8404; -extern short D_801C8406; -extern short D_801C8408; -extern s16 D_801C83F4; -extern s16 D_801C83F6; -extern s16 D_801C83F8; -extern s16 D_801C83EC; -extern s16 D_801C83EE; -extern s16 D_801C83F0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C83FC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C83FE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C8400); - (*(s16 *)&D_801C8404) = buf[0]; - (*(s16 *)&D_801C8406) = buf[1]; - (*(s16 *)&D_801C8408) = buf[2]; - D_801C83F4 = D_80114F30 + buf[0]; - D_801C837C = 0; - D_801C83F6 = D_80114F34 + buf[1]; - D_801C83F8 = D_80114F38 + buf[2]; - D_801C83EC = D_80114F24 + buf[0]; - D_801C83EE = D_80114F28 + buf[1]; - D_801C83F0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801C839C; -extern SV4 D_801C83A4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C83A4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801C839C = 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_801C83A4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C83A4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801C839C) = 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_801C83A4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801C83C4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801C83C4; - 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_801C837C; -extern s16 D_801C88F0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801C837C = D_801C837C + 1; - if (D_801C837C >= 0x1F) { - D_801C88F0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801C837C; -extern s16 D_801C88F0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801C837C = D_801C837C + 1; - if (0x18 < D_801C837C) { - func_8012A4BC(); - D_801C88F0 = 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_801C837C; -extern void (*D_801C83C0)(void); -extern short D_801C8404; -extern short D_801C8406; -extern short D_801C8408; -extern s16 D_801C88F0; - -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_801C837C = D_801C837C + 1; - if (D_801C837C >= 0x19) { - if (D_801C83C0 != 0) { - (*D_801C83C0)(); - } else { - D_80114F30 = D_80114F30 + D_801C8404; - D_80114F34 = D_80114F34 + D_801C8406; - D_80114F38 = D_80114F38 + D_801C8408; - D_80114F24 = D_80114F24 + D_801C8404; - D_80114F28 = D_80114F28 + D_801C8406; - D_80114F2C = D_80114F2C + D_801C8408; - func_8012A4BC(); - } - D_801C88F0 = 0; - } -} - - - -extern void (*D_801882CC[])(void); - -void func_8017BE60(void *a0) { - D_801882CC[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017BFEC); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017C378); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017C5F0); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017C738); - - -extern void (*D_801883E8[])(void); - -void func_8017C8B8(void *a0) { - D_801883E8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017C8F4); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017C940); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017CA34); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017CAB4); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017CB68); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017CBD4); - -extern void func_8012C218(void); -void func_8017CC60(void) { - func_8012C218(); -} - - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017CC80); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017CCD4); - - -extern void (*D_80188440[])(void); - -void func_8017CD10(void *a0) { - D_80188440[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017CD4C); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017CD9C); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017CDF8); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017CE7C); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017CFE4); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017D030); - - -extern void (*D_80188454[])(void); - -void func_8017D33C(void *a0) { - D_80188454[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017D378); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017D3B8); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017D428); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017D4B4); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017D588); - - -extern void (*D_80188468[])(void); - -void func_8017D5DC(void *a0) { - D_80188468[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017D618); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017D6CC); - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017A4AC", func_8017D728); diff --git a/src/ov_SC03_100/ov_SC03_100_jr_8017AE2C.c b/src/ov_SC03_100/ov_SC03_100_jr_8017AE2C.c new file mode 100644 index 000000000..83f558166 --- /dev/null +++ b/src/ov_SC03_100/ov_SC03_100_jr_8017AE2C.c @@ -0,0 +1,3562 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80186E24; +extern u8 D_80186D94; +extern u8 D_80186D70; +extern u8 D_80186D4C; +extern u8 D_80186E00; +extern u8 D_80186DDC; +extern u8 D_80186DB8; +extern u8 D_80186D28; +extern void func_80145934(void); +extern u8 D_80186EB4; +extern u8 D_80186E90; +extern u8 D_80186E6C; +extern u8 D_80186E48; +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_801862AC[]; +extern unsigned char D_801862DC[]; +extern unsigned char D_8018632C[]; +extern unsigned char D_8018635C[]; +extern unsigned char D_8018638C[]; +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(void); +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_801863DC[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_801864A4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018652C[]; +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_80186534; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801C7278; +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_801C727C; +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_80186564; +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 void 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_8018660C[])(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_80186630[])(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_80186620; +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_80186644[])(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_80186650[]; +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_80186660[])(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_80186678[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80186668; +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_8018668C[])(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_801866A8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80186698; +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_801866BC[])(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_801866D0[])(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_801866E4; +extern void (*D_8018670C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801866EC; +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_80186758[])(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_8018675C[])(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(void *a0); +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_80186BC0[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80186BD0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801C72B0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80186BF8[])(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_80186BD8; +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_80186BE8; +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_80186C38[])(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_80186C40[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80186C0C; +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_80186C4C[])(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_80186C1C; +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_801C72B8; +extern s32 D_801C72C4; +extern s32 D_801C72C8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80186C88[])(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_80186C5C[]; +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_801C72C0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80186ED8[])(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_80186CF8[]; +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_80186F7C[])(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_801870D0[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80186EEC; +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_801870D8[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80186EFC; +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_80186F1C; +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_801870E0[])(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(void); +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_80187108[])(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_80187114[])(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_80186F88[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801871B8; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018629C[]; +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_801871CC[]; +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_80187208[]; +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_80187250; +extern u16 D_80187252; +extern u16 D_80187254; +extern s32 D_80187258; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80187260; +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_80186F6C; +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_801872E4[]; +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_80187394[])(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_801873C4[]; +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_80187428; +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_801C72D0[]; +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_8018744C[])(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_801C7328[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80187494[])(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_80187484; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801C6B58[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_8018749C[])(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_801874F0[])(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_801874B8; +extern s16 D_801874EC; +extern s16 D_801874EA; +extern s16 D_801874E8; +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_801874FC[])(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_801C7388; +extern u8 D_801C7389; +extern u8 D_801C738A; +extern u8 D_801C738B; +extern u8 D_801C738C; +extern u8 D_801C738D; +extern u8 D_801C738E; +extern u8 D_801C738F; +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_8018750C[])(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_801C73C8; +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_80187550[])(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_801875CC[]; +extern s32 D_801875EC[]; +extern u8 D_80187668[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80187688[]; +extern u8 D_801876A8[]; +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_80187744[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801877C0[])(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_801C6B68; +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_801877CC[])(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_801877D4[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018789C[])(void); +extern void func_80166618(void *a0); +extern void (*D_801878AC[])(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_801878BC[])(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_801878C8[])(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_80187828[]; +extern u8 D_8018783C[]; +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_801878E0[])(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_801878E8[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_801878F0[])(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_801878F8[])(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_80187900[])(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_80187908[])(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_80187910[])(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_801879C4[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801879CC[])(void); +extern void func_80169F00(void *a0); +extern char D_8018797C[]; +extern char D_8018793C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80187A04[])(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_80187A10[])(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_80187A58[])(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_80187AD4[])(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_801C76E8; +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_80187AC8[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80187B0C[]; +extern unsigned short D_80187B14[]; +extern unsigned short D_80187B1C[]; +extern unsigned char D_801C76F0[]; +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_801C76E8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80187B24[])(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_801C7824; +extern M2C_UNK D_801C7828; +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_801C77B0; +extern void (*D_80187B54[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801C782C[]; +extern u8 D_801C7834[]; +extern u8 D_801C77E4[]; +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_80187B5C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80187B78[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80187B80[])(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_80187BE8[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80187B8C; +extern u8 D_80187B98; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80187C1C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80187C24[])(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_80187C78[])(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_80187CAC[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80187C9C[]; +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_80187CC8; +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); +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_80187D40[])(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_80187D48[])(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_80187D50[])(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_80187D58[])(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_80187D60[])(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_80187D68[])(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_80187D74[])(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_80187D80[])(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_80187D8C[])(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_80187D9C[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80187DAC[])(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_80187DB4[])(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_80187DBC[])(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_80187DC4[])(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_80187DCC[])(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_80187DD4[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80187DDC[])(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_80187DE4[])(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_80187DEC[])(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_80187DF4[])(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_80187DFC[])(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_80187E04[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80187E0C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80187E14[])(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_80187E1C[])(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_80187E24[])(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_80187E2C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80187E34[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80187E3C[])(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_80187E44[])(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_80187E4C[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80187E54[])(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_80187E5C[])(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_80187EA0[])(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_80187E64; +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_80187ED0[])(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_80187F0C[])(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(s32); +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_80187F64[])(); +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_80187F74[])(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_80187F7C[])(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_801880E4[])(); +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_801880F0[])(); +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_801C6DB0; +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 int func_801789AC(void); +extern s16 D_801C88F0; +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_801C7F68; +extern short D_801C8964; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801C8394; +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_801C83BC; +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_801C8378; +extern s32 func_8017A3B0(void); +extern short D_801C83B4; +extern short D_801C83B0; +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_801C88C0; +extern s16 D_801C88C2; +extern s16 D_801C88CC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801C88C0; + + 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_801C88CC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801C88C0+0xC == &D_801C88CC; 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_801C88C0 + 0xC)) < 0x101) { + D_801C88C0 = 0; + D_801C88C2 = 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_801C88CC); + 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_801C88C0 + 0xC)) < 0x101) { + D_801C88C0 = 0; + D_801C88C2 = 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_801C83F4; + extern s16 D_801C83F6; + extern s16 D_801C83F8; + extern s16 D_801C83EC; + extern s16 D_801C83EE; + extern s16 D_801C83F0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C83F4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C83F6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C83F8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C83EC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C83EE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C83F0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801C837C; +extern u16 D_801C83FC; +extern u16 D_801C83FE; +extern u16 D_801C8400; +extern s16 D_801C88F0; + +void func_8017B1D8(void) { + func_8012A418(); + D_801C88F0 = 0; + D_801C837C = 0; + D_801C83FC = D_80126B5E; + D_801C83FE = D_80126B62; + D_801C8400 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018822C[]; + extern s16 D_801C83F4; + extern s16 D_801C83EC; + 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_8018822C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018822C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C83F4; + s16 *p78C = &D_801C83EC; + *(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_801C88F0 = 1; + D_801C837C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C839C; + extern SV4_8017B368 D_801C83A4; + extern s16 D_801C83F4; + extern s16 D_801C83EC; + extern u16 D_8018822C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801C839C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801C83A4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018822C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018822C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801C83F4) = loc0; + (*(SV4_8017B368 *)&D_801C83EC) = loc1; + D_801C88F0 = 1; + D_801C837C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018822C[]; + extern s16 D_801C83F4; + extern s16 D_801C83F6; + extern s16 D_801C83F8; + extern s16 D_801C83EC; + extern s16 D_801C83EE; + extern s16 D_801C83F0; + 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_8018822C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018822C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C83F4; + s16 *p78C = &D_801C83EC; + *(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_801C83F6; + v798 = D_801C83F8; + v78C = *p78C; + v78E = D_801C83EE; + v790 = D_801C83F0; + __asm__ __volatile__(""); + D_801C88F0 = 1; + D_801C837C = 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_801C837C; +extern s16 D_801C83F4; +extern s16 D_801C83F6; +extern s16 D_801C83F8; +extern s16 D_801C83EC; +extern s16 D_801C83EE; +extern s16 D_801C83F0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801C837C = 0; + D_801C83F4 = (s16) D_80114F30; + D_801C83F6 = (s16) D_80114F34; + D_801C83F8 = (s16) D_80114F38; + D_801C83EC = (s16) D_80114F24; + D_801C83EE = (s16) D_80114F28; + D_801C83F0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801C840C; +extern s16 D_801C840E; +extern s16 D_801C8410; +extern s16 D_801C8414; +extern s16 D_801C8416; +extern s16 D_801C8418; + +void func_8017B824(void) { + D_801C840C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801C840E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801C8410 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801C8414 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801C8416 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801C8418 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801C840C; +extern s16 D_801C840E; +extern s16 D_801C8410; +extern s16 D_801C8414; +extern s16 D_801C8416; +extern s16 D_801C8418; + +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_801C840C; + D_80114F34 = D_801C840E; + D_80114F38 = D_801C8410; + D_80114F24 = D_801C8414; + D_80114F28 = D_801C8416; + D_80114F2C = D_801C8418; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801C83F4), src[8..15] -> (*(S8_8017B8E8 *)&D_801C83EC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801C83F4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801C83EC) = ((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_801C83FC; +extern u16 D_801C83FE; +extern u16 D_801C8400; + +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_801C837C; +extern short D_801C8404; +extern short D_801C8406; +extern short D_801C8408; +extern s16 D_801C83F4; +extern s16 D_801C83F6; +extern s16 D_801C83F8; +extern s16 D_801C83EC; +extern s16 D_801C83EE; +extern s16 D_801C83F0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C83FC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C83FE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C8400); + (*(s16 *)&D_801C8404) = buf[0]; + (*(s16 *)&D_801C8406) = buf[1]; + (*(s16 *)&D_801C8408) = buf[2]; + D_801C83F4 = D_80114F30 + buf[0]; + D_801C837C = 0; + D_801C83F6 = D_80114F34 + buf[1]; + D_801C83F8 = D_80114F38 + buf[2]; + D_801C83EC = D_80114F24 + buf[0]; + D_801C83EE = D_80114F28 + buf[1]; + D_801C83F0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801C839C; +extern SV4 D_801C83A4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C83A4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801C839C = 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_801C83A4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C83A4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801C839C) = 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_801C83A4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801C83C4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801C83C4; + 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_801C837C; +extern s16 D_801C88F0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801C837C = D_801C837C + 1; + if (D_801C837C >= 0x1F) { + D_801C88F0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801C837C; +extern s16 D_801C88F0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801C837C = D_801C837C + 1; + if (0x18 < D_801C837C) { + func_8012A4BC(); + D_801C88F0 = 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_801C837C; +extern void (*D_801C83C0)(void); +extern short D_801C8404; +extern short D_801C8406; +extern short D_801C8408; +extern s16 D_801C88F0; + +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_801C837C = D_801C837C + 1; + if (D_801C837C >= 0x19) { + if (D_801C83C0 != 0) { + (*D_801C83C0)(); + } else { + D_80114F30 = D_80114F30 + D_801C8404; + D_80114F34 = D_80114F34 + D_801C8406; + D_80114F38 = D_80114F38 + D_801C8408; + D_80114F24 = D_80114F24 + D_801C8404; + D_80114F28 = D_80114F28 + D_801C8406; + D_80114F2C = D_80114F2C + D_801C8408; + func_8012A4BC(); + } + D_801C88F0 = 0; + } +} + + + +extern void (*D_801882CC[])(void); + +void func_8017BE60(void *a0) { + D_801882CC[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017BFEC); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017C378); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017C5F0); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017C738); + + +extern void (*D_801883E8[])(void); + +void func_8017C8B8(void *a0) { + D_801883E8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017C8F4); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017C940); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017CA34); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017CAB4); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017CB68); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017CBD4); + +extern void func_8012C218(void); +void func_8017CC60(void) { + func_8012C218(); +} + + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017CC80); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017CCD4); + + +extern void (*D_80188440[])(void); + +void func_8017CD10(void *a0) { + D_80188440[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017CD4C); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017CD9C); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017CDF8); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017CE7C); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017CFE4); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017D030); + + +extern void (*D_80188454[])(void); + +void func_8017D33C(void *a0) { + D_80188454[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017D378); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017D3B8); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017D428); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017D4B4); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017D588); + + +extern void (*D_80188468[])(void); + +void func_8017D5DC(void *a0) { + D_80188468[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017D618); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017D6CC); + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017AE2C", func_8017D728); + diff --git a/src/ov_SC03_101/ov_SC03_101_jr_8017A4AC.c b/src/ov_SC03_101/ov_SC03_101_jr_8017A4AC.c index 2a12aeff2..97f9bbcfc 100644 --- a/src/ov_SC03_101/ov_SC03_101_jr_8017A4AC.c +++ b/src/ov_SC03_101/ov_SC03_101_jr_8017A4AC.c @@ -2967,626 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8019DCBC; - extern s16 D_8019DCBE; - extern s16 D_8019DCC0; - extern s16 D_8019DCB4; - extern s16 D_8019DCB6; - extern s16 D_8019DCB8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019DCBC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019DCBE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019DCC0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019DCB4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019DCB6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019DCB8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8019DC44; -extern u16 D_8019DCC4; -extern u16 D_8019DCC6; -extern u16 D_8019DCC8; -extern s16 D_8019E1B0; - -void func_8017B1D8(void) { - func_8012A418(); - D_8019E1B0 = 0; - D_8019DC44 = 0; - D_8019DCC4 = D_80126B5E; - D_8019DCC6 = D_80126B62; - D_8019DCC8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80187208[]; - extern s16 D_8019DCBC; - extern s16 D_8019DCB4; - 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_80187208[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80187208[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019DCBC; - s16 *p78C = &D_8019DCB4; - *(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_8019E1B0 = 1; - D_8019DC44 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019DC64; - extern SV4_8017B368 D_8019DC6C; - extern s16 D_8019DCBC; - extern s16 D_8019DCB4; - extern u16 D_80187208; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8019DC64; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8019DC6C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80187208)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80187208)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8019DCBC) = loc0; - (*(SV4_8017B368 *)&D_8019DCB4) = loc1; - D_8019E1B0 = 1; - D_8019DC44 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80187208[]; - extern s16 D_8019DCBC; - extern s16 D_8019DCBE; - extern s16 D_8019DCC0; - extern s16 D_8019DCB4; - extern s16 D_8019DCB6; - extern s16 D_8019DCB8; - 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_80187208[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80187208[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019DCBC; - s16 *p78C = &D_8019DCB4; - *(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_8019DCBE; - v798 = D_8019DCC0; - v78C = *p78C; - v78E = D_8019DCB6; - v790 = D_8019DCB8; - __asm__ __volatile__(""); - D_8019E1B0 = 1; - D_8019DC44 = 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_8019DC44; -extern s16 D_8019DCBC; -extern s16 D_8019DCBE; -extern s16 D_8019DCC0; -extern s16 D_8019DCB4; -extern s16 D_8019DCB6; -extern s16 D_8019DCB8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8019DC44 = 0; - D_8019DCBC = (s16) D_80114F30; - D_8019DCBE = (s16) D_80114F34; - D_8019DCC0 = (s16) D_80114F38; - D_8019DCB4 = (s16) D_80114F24; - D_8019DCB6 = (s16) D_80114F28; - D_8019DCB8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8019DCD4; -extern s16 D_8019DCD6; -extern s16 D_8019DCD8; -extern s16 D_8019DCDC; -extern s16 D_8019DCDE; -extern s16 D_8019DCE0; - -void func_8017B824(void) { - D_8019DCD4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8019DCD6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8019DCD8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8019DCDC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8019DCDE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8019DCE0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8019DCD4; -extern s16 D_8019DCD6; -extern s16 D_8019DCD8; -extern s16 D_8019DCDC; -extern s16 D_8019DCDE; -extern s16 D_8019DCE0; - -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_8019DCD4; - D_80114F34 = D_8019DCD6; - D_80114F38 = D_8019DCD8; - D_80114F24 = D_8019DCDC; - D_80114F28 = D_8019DCDE; - D_80114F2C = D_8019DCE0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8019DCBC), src[8..15] -> (*(S8_8017B8E8 *)&D_8019DCB4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8019DCBC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8019DCB4) = ((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_8019DCC4; -extern u16 D_8019DCC6; -extern u16 D_8019DCC8; - -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_8019DC44; -extern short D_8019DCCC; -extern short D_8019DCCE; -extern short D_8019DCD0; -extern s16 D_8019DCBC; -extern s16 D_8019DCBE; -extern s16 D_8019DCC0; -extern s16 D_8019DCB4; -extern s16 D_8019DCB6; -extern s16 D_8019DCB8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019DCC4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019DCC6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019DCC8); - (*(s16 *)&D_8019DCCC) = buf[0]; - (*(s16 *)&D_8019DCCE) = buf[1]; - (*(s16 *)&D_8019DCD0) = buf[2]; - D_8019DCBC = D_80114F30 + buf[0]; - D_8019DC44 = 0; - D_8019DCBE = D_80114F34 + buf[1]; - D_8019DCC0 = D_80114F38 + buf[2]; - D_8019DCB4 = D_80114F24 + buf[0]; - D_8019DCB6 = D_80114F28 + buf[1]; - D_8019DCB8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8019DC64; -extern SV4 D_8019DC6C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019DC6C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8019DC64 = 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_8019DC6C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019DC6C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8019DC64) = 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_8019DC6C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8019DC8C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8019DC8C; - 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_8019DC44; -extern s16 D_8019E1B0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8019DC44 = D_8019DC44 + 1; - if (D_8019DC44 >= 0x1F) { - D_8019E1B0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8019DC44; -extern s16 D_8019E1B0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8019DC44 = D_8019DC44 + 1; - if (0x18 < D_8019DC44) { - func_8012A4BC(); - D_8019E1B0 = 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_8019DC44; -extern void (*D_8019DC88)(void); -extern short D_8019DCCC; -extern short D_8019DCCE; -extern short D_8019DCD0; -extern s16 D_8019E1B0; - -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_8019DC44 = D_8019DC44 + 1; - if (D_8019DC44 >= 0x19) { - if (D_8019DC88 != 0) { - (*D_8019DC88)(); - } else { - D_80114F30 = D_80114F30 + D_8019DCCC; - D_80114F34 = D_80114F34 + D_8019DCCE; - D_80114F38 = D_80114F38 + D_8019DCD0; - D_80114F24 = D_80114F24 + D_8019DCCC; - D_80114F28 = D_80114F28 + D_8019DCCE; - D_80114F2C = D_80114F2C + D_8019DCD0; - func_8012A4BC(); - } - D_8019E1B0 = 0; - } -} - - - -extern void (*D_801872A8[])(void); - -void func_8017BE60(void *a0) { - D_801872A8[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017A4AC", func_8017BEBC); - - -extern void (*D_801872E0[])(void); - -void func_8017BEF8(void *a0) { - D_801872E0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017A4AC", func_8017BF34); - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017A4AC", func_8017BF84); - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017A4AC", func_8017BFE0); - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017A4AC", func_8017C064); - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017A4AC", func_8017C1CC); - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017A4AC", func_8017C218); - - -extern void (*D_801872F4[])(void); - -void func_8017C524(void *a0) { - D_801872F4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017A4AC", func_8017C560); - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017A4AC", func_8017C5A0); - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017A4AC", func_8017C610); - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017A4AC", func_8017C69C); - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017A4AC", func_8017C770); - - -extern void (*D_80187308[])(void); - -void func_8017C7C4(void *a0) { - D_80187308[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017A4AC", func_8017C800); - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017A4AC", func_8017C8B4); - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017A4AC", func_8017C910); diff --git a/src/ov_SC03_101/ov_SC03_101_jr_8017AE2C.c b/src/ov_SC03_101/ov_SC03_101_jr_8017AE2C.c new file mode 100644 index 000000000..a1a963b35 --- /dev/null +++ b/src/ov_SC03_101/ov_SC03_101_jr_8017AE2C.c @@ -0,0 +1,3524 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80185E00; +extern u8 D_80185D70; +extern u8 D_80185D4C; +extern u8 D_80185D28; +extern u8 D_80185DDC; +extern u8 D_80185DB8; +extern u8 D_80185D94; +extern u8 D_80185D04; +extern void func_80145934(void); +extern u8 D_80185E90; +extern u8 D_80185E6C; +extern u8 D_80185E48; +extern u8 D_80185E24; +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_80185288[]; +extern unsigned char D_801852B8[]; +extern unsigned char D_80185308[]; +extern unsigned char D_80185338[]; +extern unsigned char D_80185368[]; +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(void); +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_801853B8[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80185480[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80185508[]; +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_80185510; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8019CB40; +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_8019CB44; +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_80185540; +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 void 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_801855E8[])(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_8018560C[])(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_801855FC; +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_80185620[])(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_8018562C[]; +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_8018563C[])(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_80185654[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80185644; +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_80185668[])(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_80185684[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80185674; +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_80185698[])(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_801856AC[])(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_801856C0; +extern void (*D_801856E8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801856C8; +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_80185734[])(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_80185738[])(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(void *a0); +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_80185B9C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80185BAC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8019CB78; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80185BD4[])(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_80185BB4; +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_80185BC4; +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_80185C14[])(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_80185C1C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80185BE8; +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_80185C28[])(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_80185BF8; +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_8019CB80; +extern s32 D_8019CB8C; +extern s32 D_8019CB90; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80185C64[])(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_80185C38[]; +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_8019CB88; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80185EB4[])(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_80185CD4[]; +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_80185F58[])(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_801860AC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80185EC8; +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_801860B4[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80185ED8; +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_80185EF8; +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_801860BC[])(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(void); +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_801860E4[])(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_801860F0[])(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_80185F64[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80186194; +extern void func_8015D380(s32 a0); +extern unsigned char D_80185278[]; +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_801861A8[]; +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_801861E4[]; +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_8018622C; +extern u16 D_8018622E; +extern u16 D_80186230; +extern s32 D_80186234; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018623C; +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_80185F48; +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_801862C0[]; +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_80186370[])(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_801863A0[]; +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_80186404; +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_8019CB98[]; +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_80186428[])(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_8019CBF0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80186470[])(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_80186460; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8019C420[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_80186478[])(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_801864CC[])(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_80186494; +extern s16 D_801864C8; +extern s16 D_801864C6; +extern s16 D_801864C4; +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_801864D8[])(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_8019CC50; +extern u8 D_8019CC51; +extern u8 D_8019CC52; +extern u8 D_8019CC53; +extern u8 D_8019CC54; +extern u8 D_8019CC55; +extern u8 D_8019CC56; +extern u8 D_8019CC57; +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_801864E8[])(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_8019CC90; +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_8018652C[])(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_801865A8[]; +extern s32 D_801865C8[]; +extern u8 D_80186644[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80186664[]; +extern u8 D_80186684[]; +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_80186720[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018679C[])(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_8019C430; +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_801867A8[])(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_801867B0[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80186878[])(void); +extern void func_80166618(void *a0); +extern void (*D_80186888[])(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_80186898[])(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_801868A4[])(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_80186804[]; +extern u8 D_80186818[]; +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_801868BC[])(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_801868C4[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_801868CC[])(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_801868D4[])(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_801868DC[])(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_801868E4[])(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_801868EC[])(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_801869A0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801869A8[])(void); +extern void func_80169F00(void *a0); +extern char D_80186958[]; +extern char D_80186918[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_801869E0[])(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_801869EC[])(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_80186A34[])(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_80186AB0[])(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_8019CFB0; +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_80186AA4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80186AE8[]; +extern unsigned short D_80186AF0[]; +extern unsigned short D_80186AF8[]; +extern unsigned char D_8019CFB8[]; +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_8019CFB0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80186B00[])(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_8019D0EC; +extern M2C_UNK D_8019D0F0; +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_8019D078; +extern void (*D_80186B30[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8019D0F4[]; +extern u8 D_8019D0FC[]; +extern u8 D_8019D0AC[]; +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_80186B38[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80186B54[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80186B5C[])(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_80186BC4[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80186B68; +extern u8 D_80186B74; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80186BF8[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80186C00[])(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_80186C54[])(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_80186C88[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80186C78[]; +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_80186CA4; +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); +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_80186D1C[])(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_80186D24[])(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_80186D2C[])(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_80186D34[])(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_80186D3C[])(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_80186D44[])(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_80186D50[])(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_80186D5C[])(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_80186D68[])(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_80186D78[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80186D88[])(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_80186D90[])(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_80186D98[])(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_80186DA0[])(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_80186DA8[])(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_80186DB0[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80186DB8[])(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_80186DC0[])(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_80186DC8[])(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_80186DD0[])(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_80186DD8[])(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_80186DE0[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80186DE8[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80186DF0[])(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_80186DF8[])(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_80186E00[])(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_80186E08[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80186E10[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80186E18[])(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_80186E20[])(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_80186E28[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80186E30[])(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_80186E38[])(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_80186E7C[])(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_80186E40; +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_80186EAC[])(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_80186EE8[])(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(s32); +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_80186F40[])(); +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_80186F50[])(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_80186F58[])(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_801870C0[])(); +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_801870CC[])(); +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_8019C678; +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 int func_801789AC(void); +extern s16 D_8019E1B0; +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_8019D830; +extern short D_8019E224; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8019DC5C; +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_8019DC84; +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_8019DC40; +extern s32 func_8017A3B0(void); +extern short D_8019DC7C; +extern short D_8019DC78; +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_8019E180; +extern s16 D_8019E182; +extern s16 D_8019E18C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_8019E180; + + 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_8019E18C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_8019E180+0xC == &D_8019E18C; 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_8019E180 + 0xC)) < 0x101) { + D_8019E180 = 0; + D_8019E182 = 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_8019E18C); + 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_8019E180 + 0xC)) < 0x101) { + D_8019E180 = 0; + D_8019E182 = 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_8019DCBC; + extern s16 D_8019DCBE; + extern s16 D_8019DCC0; + extern s16 D_8019DCB4; + extern s16 D_8019DCB6; + extern s16 D_8019DCB8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019DCBC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019DCBE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019DCC0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019DCB4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019DCB6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019DCB8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8019DC44; +extern u16 D_8019DCC4; +extern u16 D_8019DCC6; +extern u16 D_8019DCC8; +extern s16 D_8019E1B0; + +void func_8017B1D8(void) { + func_8012A418(); + D_8019E1B0 = 0; + D_8019DC44 = 0; + D_8019DCC4 = D_80126B5E; + D_8019DCC6 = D_80126B62; + D_8019DCC8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80187208[]; + extern s16 D_8019DCBC; + extern s16 D_8019DCB4; + 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_80187208[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80187208[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019DCBC; + s16 *p78C = &D_8019DCB4; + *(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_8019E1B0 = 1; + D_8019DC44 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019DC64; + extern SV4_8017B368 D_8019DC6C; + extern s16 D_8019DCBC; + extern s16 D_8019DCB4; + extern u16 D_80187208; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8019DC64; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8019DC6C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80187208)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80187208)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8019DCBC) = loc0; + (*(SV4_8017B368 *)&D_8019DCB4) = loc1; + D_8019E1B0 = 1; + D_8019DC44 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80187208[]; + extern s16 D_8019DCBC; + extern s16 D_8019DCBE; + extern s16 D_8019DCC0; + extern s16 D_8019DCB4; + extern s16 D_8019DCB6; + extern s16 D_8019DCB8; + 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_80187208[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80187208[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019DCBC; + s16 *p78C = &D_8019DCB4; + *(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_8019DCBE; + v798 = D_8019DCC0; + v78C = *p78C; + v78E = D_8019DCB6; + v790 = D_8019DCB8; + __asm__ __volatile__(""); + D_8019E1B0 = 1; + D_8019DC44 = 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_8019DC44; +extern s16 D_8019DCBC; +extern s16 D_8019DCBE; +extern s16 D_8019DCC0; +extern s16 D_8019DCB4; +extern s16 D_8019DCB6; +extern s16 D_8019DCB8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8019DC44 = 0; + D_8019DCBC = (s16) D_80114F30; + D_8019DCBE = (s16) D_80114F34; + D_8019DCC0 = (s16) D_80114F38; + D_8019DCB4 = (s16) D_80114F24; + D_8019DCB6 = (s16) D_80114F28; + D_8019DCB8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8019DCD4; +extern s16 D_8019DCD6; +extern s16 D_8019DCD8; +extern s16 D_8019DCDC; +extern s16 D_8019DCDE; +extern s16 D_8019DCE0; + +void func_8017B824(void) { + D_8019DCD4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8019DCD6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8019DCD8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8019DCDC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8019DCDE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8019DCE0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8019DCD4; +extern s16 D_8019DCD6; +extern s16 D_8019DCD8; +extern s16 D_8019DCDC; +extern s16 D_8019DCDE; +extern s16 D_8019DCE0; + +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_8019DCD4; + D_80114F34 = D_8019DCD6; + D_80114F38 = D_8019DCD8; + D_80114F24 = D_8019DCDC; + D_80114F28 = D_8019DCDE; + D_80114F2C = D_8019DCE0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8019DCBC), src[8..15] -> (*(S8_8017B8E8 *)&D_8019DCB4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8019DCBC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8019DCB4) = ((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_8019DCC4; +extern u16 D_8019DCC6; +extern u16 D_8019DCC8; + +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_8019DC44; +extern short D_8019DCCC; +extern short D_8019DCCE; +extern short D_8019DCD0; +extern s16 D_8019DCBC; +extern s16 D_8019DCBE; +extern s16 D_8019DCC0; +extern s16 D_8019DCB4; +extern s16 D_8019DCB6; +extern s16 D_8019DCB8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019DCC4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019DCC6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019DCC8); + (*(s16 *)&D_8019DCCC) = buf[0]; + (*(s16 *)&D_8019DCCE) = buf[1]; + (*(s16 *)&D_8019DCD0) = buf[2]; + D_8019DCBC = D_80114F30 + buf[0]; + D_8019DC44 = 0; + D_8019DCBE = D_80114F34 + buf[1]; + D_8019DCC0 = D_80114F38 + buf[2]; + D_8019DCB4 = D_80114F24 + buf[0]; + D_8019DCB6 = D_80114F28 + buf[1]; + D_8019DCB8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8019DC64; +extern SV4 D_8019DC6C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019DC6C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8019DC64 = 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_8019DC6C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019DC6C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8019DC64) = 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_8019DC6C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8019DC8C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8019DC8C; + 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_8019DC44; +extern s16 D_8019E1B0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8019DC44 = D_8019DC44 + 1; + if (D_8019DC44 >= 0x1F) { + D_8019E1B0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8019DC44; +extern s16 D_8019E1B0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8019DC44 = D_8019DC44 + 1; + if (0x18 < D_8019DC44) { + func_8012A4BC(); + D_8019E1B0 = 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_8019DC44; +extern void (*D_8019DC88)(void); +extern short D_8019DCCC; +extern short D_8019DCCE; +extern short D_8019DCD0; +extern s16 D_8019E1B0; + +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_8019DC44 = D_8019DC44 + 1; + if (D_8019DC44 >= 0x19) { + if (D_8019DC88 != 0) { + (*D_8019DC88)(); + } else { + D_80114F30 = D_80114F30 + D_8019DCCC; + D_80114F34 = D_80114F34 + D_8019DCCE; + D_80114F38 = D_80114F38 + D_8019DCD0; + D_80114F24 = D_80114F24 + D_8019DCCC; + D_80114F28 = D_80114F28 + D_8019DCCE; + D_80114F2C = D_80114F2C + D_8019DCD0; + func_8012A4BC(); + } + D_8019E1B0 = 0; + } +} + + + +extern void (*D_801872A8[])(void); + +void func_8017BE60(void *a0) { + D_801872A8[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017AE2C", func_8017BEBC); + + +extern void (*D_801872E0[])(void); + +void func_8017BEF8(void *a0) { + D_801872E0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017AE2C", func_8017BF34); + +INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017AE2C", func_8017BF84); + +INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017AE2C", func_8017BFE0); + +INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017AE2C", func_8017C064); + +INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017AE2C", func_8017C1CC); + +INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017AE2C", func_8017C218); + + +extern void (*D_801872F4[])(void); + +void func_8017C524(void *a0) { + D_801872F4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017AE2C", func_8017C560); + +INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017AE2C", func_8017C5A0); + +INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017AE2C", func_8017C610); + +INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017AE2C", func_8017C69C); + +INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017AE2C", func_8017C770); + + +extern void (*D_80187308[])(void); + +void func_8017C7C4(void *a0) { + D_80187308[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017AE2C", func_8017C800); + +INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017AE2C", func_8017C8B4); + +INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017AE2C", func_8017C910); + diff --git a/src/ov_SC03_102/ov_SC03_102_jr_8017A4AC.c b/src/ov_SC03_102/ov_SC03_102_jr_8017A4AC.c index aed564de2..24c0df23c 100644 --- a/src/ov_SC03_102/ov_SC03_102_jr_8017A4AC.c +++ b/src/ov_SC03_102/ov_SC03_102_jr_8017A4AC.c @@ -2967,572 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801B9934; - extern s16 D_801B9936; - extern s16 D_801B9938; - extern s16 D_801B992C; - extern s16 D_801B992E; - extern s16 D_801B9930; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B9934, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B9936, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B9938, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B992C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B992E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B9930, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801B98BC; -extern u16 D_801B993C; -extern u16 D_801B993E; -extern u16 D_801B9940; -extern s16 D_801B9BB0; - -void func_8017B1D8(void) { - func_8012A418(); - D_801B9BB0 = 0; - D_801B98BC = 0; - D_801B993C = D_80126B5E; - D_801B993E = D_80126B62; - D_801B9940 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80189AC0[]; - extern s16 D_801B9934; - extern s16 D_801B992C; - 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_80189AC0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80189AC0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B9934; - s16 *p78C = &D_801B992C; - *(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_801B9BB0 = 1; - D_801B98BC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B98DC; - extern SV4_8017B368 D_801B98E4; - extern s16 D_801B9934; - extern s16 D_801B992C; - extern u16 D_80189AC0; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801B98DC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801B98E4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80189AC0)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80189AC0)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801B9934) = loc0; - (*(SV4_8017B368 *)&D_801B992C) = loc1; - D_801B9BB0 = 1; - D_801B98BC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80189AC0[]; - extern s16 D_801B9934; - extern s16 D_801B9936; - extern s16 D_801B9938; - extern s16 D_801B992C; - extern s16 D_801B992E; - extern s16 D_801B9930; - 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_80189AC0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80189AC0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B9934; - s16 *p78C = &D_801B992C; - *(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_801B9936; - v798 = D_801B9938; - v78C = *p78C; - v78E = D_801B992E; - v790 = D_801B9930; - __asm__ __volatile__(""); - D_801B9BB0 = 1; - D_801B98BC = 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_801B98BC; -extern s16 D_801B9934; -extern s16 D_801B9936; -extern s16 D_801B9938; -extern s16 D_801B992C; -extern s16 D_801B992E; -extern s16 D_801B9930; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801B98BC = 0; - D_801B9934 = (s16) D_80114F30; - D_801B9936 = (s16) D_80114F34; - D_801B9938 = (s16) D_80114F38; - D_801B992C = (s16) D_80114F24; - D_801B992E = (s16) D_80114F28; - D_801B9930 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801B994C; -extern s16 D_801B994E; -extern s16 D_801B9950; -extern s16 D_801B9954; -extern s16 D_801B9956; -extern s16 D_801B9958; - -void func_8017B824(void) { - D_801B994C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801B994E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801B9950 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801B9954 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801B9956 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801B9958 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801B994C; -extern s16 D_801B994E; -extern s16 D_801B9950; -extern s16 D_801B9954; -extern s16 D_801B9956; -extern s16 D_801B9958; - -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_801B994C; - D_80114F34 = D_801B994E; - D_80114F38 = D_801B9950; - D_80114F24 = D_801B9954; - D_80114F28 = D_801B9956; - D_80114F2C = D_801B9958; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801B9934), src[8..15] -> (*(S8_8017B8E8 *)&D_801B992C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801B9934) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801B992C) = ((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_801B993C; -extern u16 D_801B993E; -extern u16 D_801B9940; - -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_801B98BC; -extern short D_801B9944; -extern short D_801B9946; -extern short D_801B9948; -extern s16 D_801B9934; -extern s16 D_801B9936; -extern s16 D_801B9938; -extern s16 D_801B992C; -extern s16 D_801B992E; -extern s16 D_801B9930; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B993C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B993E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B9940); - (*(s16 *)&D_801B9944) = buf[0]; - (*(s16 *)&D_801B9946) = buf[1]; - (*(s16 *)&D_801B9948) = buf[2]; - D_801B9934 = D_80114F30 + buf[0]; - D_801B98BC = 0; - D_801B9936 = D_80114F34 + buf[1]; - D_801B9938 = D_80114F38 + buf[2]; - D_801B992C = D_80114F24 + buf[0]; - D_801B992E = D_80114F28 + buf[1]; - D_801B9930 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801B98DC; -extern SV4 D_801B98E4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B98E4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801B98DC = 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_801B98E4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B98E4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801B98DC) = 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_801B98E4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801B9904[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801B9904; - 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_801B98BC; -extern s16 D_801B9BB0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801B98BC = D_801B98BC + 1; - if (D_801B98BC >= 0x1F) { - D_801B9BB0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801B98BC; -extern s16 D_801B9BB0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801B98BC = D_801B98BC + 1; - if (0x18 < D_801B98BC) { - func_8012A4BC(); - D_801B9BB0 = 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_801B98BC; -extern void (*D_801B9900)(void); -extern short D_801B9944; -extern short D_801B9946; -extern short D_801B9948; -extern s16 D_801B9BB0; - -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_801B98BC = D_801B98BC + 1; - if (D_801B98BC >= 0x19) { - if (D_801B9900 != 0) { - (*D_801B9900)(); - } else { - D_80114F30 = D_80114F30 + D_801B9944; - D_80114F34 = D_80114F34 + D_801B9946; - D_80114F38 = D_80114F38 + D_801B9948; - D_80114F24 = D_80114F24 + D_801B9944; - D_80114F28 = D_80114F28 + D_801B9946; - D_80114F2C = D_80114F2C + D_801B9948; - func_8012A4BC(); - } - D_801B9BB0 = 0; - } -} - - - -extern void (*D_80189B60[])(void); - -void func_8017BE60(void *a0) { - D_80189B60[*(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) */ diff --git a/src/ov_SC03_102/ov_SC03_102_jr_8017AE2C.c b/src/ov_SC03_102/ov_SC03_102_jr_8017AE2C.c new file mode 100644 index 000000000..59bd52334 --- /dev/null +++ b/src/ov_SC03_102/ov_SC03_102_jr_8017AE2C.c @@ -0,0 +1,3470 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801886B8; +extern u8 D_80188628; +extern u8 D_80188604; +extern u8 D_801885E0; +extern u8 D_80188694; +extern u8 D_80188670; +extern u8 D_8018864C; +extern u8 D_801885BC; +extern void func_80145934(void); +extern u8 D_80188748; +extern u8 D_80188724; +extern u8 D_80188700; +extern u8 D_801886DC; +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_80187B40[]; +extern unsigned char D_80187B70[]; +extern unsigned char D_80187BC0[]; +extern unsigned char D_80187BF0[]; +extern unsigned char D_80187C20[]; +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(void); +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_80187C70[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80187D38[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80187DC0[]; +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_80187DC8; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801B87B8; +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_801B87BC; +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_80187DF8; +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 void 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_80187EA0[])(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_80187EC4[])(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_80187EB4; +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_80187ED8[])(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_80187EE4[]; +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_80187EF4[])(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_80187F0C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80187EFC; +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_80187F20[])(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_80187F3C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80187F2C; +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_80187F50[])(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_80187F64[])(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_80187F78; +extern void (*D_80187FA0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80187F80; +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_80187FEC[])(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_80187FF0[])(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(void *a0); +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_80188454[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80188464[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801B87F0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018848C[])(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_8018846C; +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_8018847C; +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_801884CC[])(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_801884D4[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801884A0; +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_801884E0[])(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_801884B0; +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_801B87F8; +extern s32 D_801B8804; +extern s32 D_801B8808; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018851C[])(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_801884F0[]; +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_801B8800; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018876C[])(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_8018858C[]; +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_80188810[])(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_80188964[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80188780; +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_8018896C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80188790; +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_801887B0; +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_80188974[])(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(void); +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_8018899C[])(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_801889A8[])(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_8018881C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80188A4C; +extern void func_8015D380(s32 a0); +extern unsigned char D_80187B30[]; +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_80188A60[]; +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_80188A9C[]; +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_80188AE4; +extern u16 D_80188AE6; +extern u16 D_80188AE8; +extern s32 D_80188AEC; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80188AF4; +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_80188800; +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_80188B78[]; +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_80188C28[])(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_80188C58[]; +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_80188CBC; +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_801B8810[]; +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_80188CE0[])(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_801B8868[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80188D28[])(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_80188D18; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801B809C[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_80188D30[])(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_80188D84[])(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_80188D4C; +extern s16 D_80188D80; +extern s16 D_80188D7E; +extern s16 D_80188D7C; +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_80188D90[])(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_801B88C8; +extern u8 D_801B88C9; +extern u8 D_801B88CA; +extern u8 D_801B88CB; +extern u8 D_801B88CC; +extern u8 D_801B88CD; +extern u8 D_801B88CE; +extern u8 D_801B88CF; +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_80188DA0[])(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_801B8908; +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_80188DE4[])(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_80188E60[]; +extern s32 D_80188E80[]; +extern u8 D_80188EFC[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80188F1C[]; +extern u8 D_80188F3C[]; +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_80188FD8[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80189054[])(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_801B80AC; +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_80189060[])(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_80189068[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80189130[])(void); +extern void func_80166618(void *a0); +extern void (*D_80189140[])(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_80189150[])(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_8018915C[])(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_801890BC[]; +extern u8 D_801890D0[]; +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_80189174[])(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_8018917C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80189184[])(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_8018918C[])(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_80189194[])(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_8018919C[])(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_801891A4[])(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_80189258[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80189260[])(void); +extern void func_80169F00(void *a0); +extern char D_80189210[]; +extern char D_801891D0[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80189298[])(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_801892A4[])(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_801892EC[])(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_80189368[])(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_801B8C28; +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_8018935C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_801893A0[]; +extern unsigned short D_801893A8[]; +extern unsigned short D_801893B0[]; +extern unsigned char D_801B8C30[]; +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_801B8C28; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801893B8[])(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_801B8D64; +extern M2C_UNK D_801B8D68; +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_801B8CF0; +extern void (*D_801893E8[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801B8D6C[]; +extern u8 D_801B8D74[]; +extern u8 D_801B8D24[]; +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_801893F0[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018940C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80189414[])(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_8018947C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80189420; +extern u8 D_8018942C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801894B0[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801894B8[])(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_8018950C[])(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_80189540[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80189530[]; +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_8018955C; +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); +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_801895D4[])(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_801895DC[])(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_801895E4[])(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_801895EC[])(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_801895F4[])(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_801895FC[])(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_80189608[])(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_80189614[])(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_80189620[])(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_80189630[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80189640[])(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_80189648[])(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_80189650[])(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_80189658[])(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_80189660[])(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_80189668[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80189670[])(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_80189678[])(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_80189680[])(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_80189688[])(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_80189690[])(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_80189698[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801896A0[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801896A8[])(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_801896B0[])(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_801896B8[])(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_801896C0[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801896C8[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801896D0[])(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_801896D8[])(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_801896E0[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801896E8[])(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_801896F0[])(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_80189734[])(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_801896F8; +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_80189764[])(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_801897A0[])(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(s32); +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_801897F8[])(); +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_80189808[])(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_80189810[])(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_80189978[])(); +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_80189984[])(); +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_801B82F4; +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 int func_801789AC(void); +extern s16 D_801B9BB0; +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_801B94A8; +extern short D_801B9C24; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801B98D4; +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_801B98FC; +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_801B98B8; +extern s32 func_8017A3B0(void); +extern short D_801B98F4; +extern short D_801B98F0; +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_801B9B80; +extern s16 D_801B9B82; +extern s16 D_801B9B8C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801B9B80; + + 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_801B9B8C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801B9B80+0xC == &D_801B9B8C; 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_801B9B80 + 0xC)) < 0x101) { + D_801B9B80 = 0; + D_801B9B82 = 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_801B9B8C); + 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_801B9B80 + 0xC)) < 0x101) { + D_801B9B80 = 0; + D_801B9B82 = 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_801B9934; + extern s16 D_801B9936; + extern s16 D_801B9938; + extern s16 D_801B992C; + extern s16 D_801B992E; + extern s16 D_801B9930; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B9934, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B9936, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B9938, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B992C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B992E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B9930, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801B98BC; +extern u16 D_801B993C; +extern u16 D_801B993E; +extern u16 D_801B9940; +extern s16 D_801B9BB0; + +void func_8017B1D8(void) { + func_8012A418(); + D_801B9BB0 = 0; + D_801B98BC = 0; + D_801B993C = D_80126B5E; + D_801B993E = D_80126B62; + D_801B9940 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80189AC0[]; + extern s16 D_801B9934; + extern s16 D_801B992C; + 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_80189AC0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80189AC0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B9934; + s16 *p78C = &D_801B992C; + *(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_801B9BB0 = 1; + D_801B98BC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B98DC; + extern SV4_8017B368 D_801B98E4; + extern s16 D_801B9934; + extern s16 D_801B992C; + extern u16 D_80189AC0; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801B98DC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801B98E4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80189AC0)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80189AC0)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801B9934) = loc0; + (*(SV4_8017B368 *)&D_801B992C) = loc1; + D_801B9BB0 = 1; + D_801B98BC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80189AC0[]; + extern s16 D_801B9934; + extern s16 D_801B9936; + extern s16 D_801B9938; + extern s16 D_801B992C; + extern s16 D_801B992E; + extern s16 D_801B9930; + 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_80189AC0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80189AC0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B9934; + s16 *p78C = &D_801B992C; + *(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_801B9936; + v798 = D_801B9938; + v78C = *p78C; + v78E = D_801B992E; + v790 = D_801B9930; + __asm__ __volatile__(""); + D_801B9BB0 = 1; + D_801B98BC = 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_801B98BC; +extern s16 D_801B9934; +extern s16 D_801B9936; +extern s16 D_801B9938; +extern s16 D_801B992C; +extern s16 D_801B992E; +extern s16 D_801B9930; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801B98BC = 0; + D_801B9934 = (s16) D_80114F30; + D_801B9936 = (s16) D_80114F34; + D_801B9938 = (s16) D_80114F38; + D_801B992C = (s16) D_80114F24; + D_801B992E = (s16) D_80114F28; + D_801B9930 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801B994C; +extern s16 D_801B994E; +extern s16 D_801B9950; +extern s16 D_801B9954; +extern s16 D_801B9956; +extern s16 D_801B9958; + +void func_8017B824(void) { + D_801B994C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801B994E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801B9950 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801B9954 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801B9956 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801B9958 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801B994C; +extern s16 D_801B994E; +extern s16 D_801B9950; +extern s16 D_801B9954; +extern s16 D_801B9956; +extern s16 D_801B9958; + +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_801B994C; + D_80114F34 = D_801B994E; + D_80114F38 = D_801B9950; + D_80114F24 = D_801B9954; + D_80114F28 = D_801B9956; + D_80114F2C = D_801B9958; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801B9934), src[8..15] -> (*(S8_8017B8E8 *)&D_801B992C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801B9934) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801B992C) = ((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_801B993C; +extern u16 D_801B993E; +extern u16 D_801B9940; + +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_801B98BC; +extern short D_801B9944; +extern short D_801B9946; +extern short D_801B9948; +extern s16 D_801B9934; +extern s16 D_801B9936; +extern s16 D_801B9938; +extern s16 D_801B992C; +extern s16 D_801B992E; +extern s16 D_801B9930; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B993C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B993E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B9940); + (*(s16 *)&D_801B9944) = buf[0]; + (*(s16 *)&D_801B9946) = buf[1]; + (*(s16 *)&D_801B9948) = buf[2]; + D_801B9934 = D_80114F30 + buf[0]; + D_801B98BC = 0; + D_801B9936 = D_80114F34 + buf[1]; + D_801B9938 = D_80114F38 + buf[2]; + D_801B992C = D_80114F24 + buf[0]; + D_801B992E = D_80114F28 + buf[1]; + D_801B9930 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801B98DC; +extern SV4 D_801B98E4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B98E4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801B98DC = 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_801B98E4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B98E4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801B98DC) = 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_801B98E4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801B9904[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801B9904; + 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_801B98BC; +extern s16 D_801B9BB0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801B98BC = D_801B98BC + 1; + if (D_801B98BC >= 0x1F) { + D_801B9BB0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801B98BC; +extern s16 D_801B9BB0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801B98BC = D_801B98BC + 1; + if (0x18 < D_801B98BC) { + func_8012A4BC(); + D_801B9BB0 = 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_801B98BC; +extern void (*D_801B9900)(void); +extern short D_801B9944; +extern short D_801B9946; +extern short D_801B9948; +extern s16 D_801B9BB0; + +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_801B98BC = D_801B98BC + 1; + if (D_801B98BC >= 0x19) { + if (D_801B9900 != 0) { + (*D_801B9900)(); + } else { + D_80114F30 = D_80114F30 + D_801B9944; + D_80114F34 = D_80114F34 + D_801B9946; + D_80114F38 = D_80114F38 + D_801B9948; + D_80114F24 = D_80114F24 + D_801B9944; + D_80114F28 = D_80114F28 + D_801B9946; + D_80114F2C = D_80114F2C + D_801B9948; + func_8012A4BC(); + } + D_801B9BB0 = 0; + } +} + + + +extern void (*D_80189B60[])(void); + +void func_8017BE60(void *a0) { + D_80189B60[*(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) */ + diff --git a/src/ov_SC03_103/ov_SC03_103_jr_8017A4AC.c b/src/ov_SC03_103/ov_SC03_103_jr_8017A4AC.c index 22063ebc6..6b4062102 100644 --- a/src/ov_SC03_103/ov_SC03_103_jr_8017A4AC.c +++ b/src/ov_SC03_103/ov_SC03_103_jr_8017A4AC.c @@ -2967,625 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_103/nonmatchings/ov_SC03_103_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801C4AEC; - extern s16 D_801C4AEE; - extern s16 D_801C4AF0; - extern s16 D_801C4AE4; - extern s16 D_801C4AE6; - extern s16 D_801C4AE8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C4AEC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C4AEE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C4AF0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C4AE4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C4AE6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C4AE8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801C4A74; -extern u16 D_801C4AF4; -extern u16 D_801C4AF6; -extern u16 D_801C4AF8; -extern s16 D_801C4D60; - -void func_8017B1D8(void) { - func_8012A418(); - D_801C4D60 = 0; - D_801C4A74 = 0; - D_801C4AF4 = D_80126B5E; - D_801C4AF6 = D_80126B62; - D_801C4AF8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80187A70[]; - extern s16 D_801C4AEC; - extern s16 D_801C4AE4; - 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_80187A70[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80187A70[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C4AEC; - s16 *p78C = &D_801C4AE4; - *(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_801C4D60 = 1; - D_801C4A74 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C4A94; - extern SV4_8017B368 D_801C4A9C; - extern s16 D_801C4AEC; - extern s16 D_801C4AE4; - extern u16 D_80187A70; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801C4A94; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801C4A9C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80187A70)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80187A70)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801C4AEC) = loc0; - (*(SV4_8017B368 *)&D_801C4AE4) = loc1; - D_801C4D60 = 1; - D_801C4A74 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_103/nonmatchings/ov_SC03_103_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80187A70[]; - extern s16 D_801C4AEC; - extern s16 D_801C4AEE; - extern s16 D_801C4AF0; - extern s16 D_801C4AE4; - extern s16 D_801C4AE6; - extern s16 D_801C4AE8; - 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_80187A70[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80187A70[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C4AEC; - s16 *p78C = &D_801C4AE4; - *(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_801C4AEE; - v798 = D_801C4AF0; - v78C = *p78C; - v78E = D_801C4AE6; - v790 = D_801C4AE8; - __asm__ __volatile__(""); - D_801C4D60 = 1; - D_801C4A74 = 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_801C4A74; -extern s16 D_801C4AEC; -extern s16 D_801C4AEE; -extern s16 D_801C4AF0; -extern s16 D_801C4AE4; -extern s16 D_801C4AE6; -extern s16 D_801C4AE8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801C4A74 = 0; - D_801C4AEC = (s16) D_80114F30; - D_801C4AEE = (s16) D_80114F34; - D_801C4AF0 = (s16) D_80114F38; - D_801C4AE4 = (s16) D_80114F24; - D_801C4AE6 = (s16) D_80114F28; - D_801C4AE8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801C4B04; -extern s16 D_801C4B06; -extern s16 D_801C4B08; -extern s16 D_801C4B0C; -extern s16 D_801C4B0E; -extern s16 D_801C4B10; - -void func_8017B824(void) { - D_801C4B04 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801C4B06 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801C4B08 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801C4B0C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801C4B0E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801C4B10 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801C4B04; -extern s16 D_801C4B06; -extern s16 D_801C4B08; -extern s16 D_801C4B0C; -extern s16 D_801C4B0E; -extern s16 D_801C4B10; - -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_801C4B04; - D_80114F34 = D_801C4B06; - D_80114F38 = D_801C4B08; - D_80114F24 = D_801C4B0C; - D_80114F28 = D_801C4B0E; - D_80114F2C = D_801C4B10; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801C4AEC), src[8..15] -> (*(S8_8017B8E8 *)&D_801C4AE4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801C4AEC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801C4AE4) = ((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_801C4AF4; -extern u16 D_801C4AF6; -extern u16 D_801C4AF8; - -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_801C4A74; -extern short D_801C4AFC; -extern short D_801C4AFE; -extern short D_801C4B00; -extern s16 D_801C4AEC; -extern s16 D_801C4AEE; -extern s16 D_801C4AF0; -extern s16 D_801C4AE4; -extern s16 D_801C4AE6; -extern s16 D_801C4AE8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C4AF4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C4AF6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C4AF8); - (*(s16 *)&D_801C4AFC) = buf[0]; - (*(s16 *)&D_801C4AFE) = buf[1]; - (*(s16 *)&D_801C4B00) = buf[2]; - D_801C4AEC = D_80114F30 + buf[0]; - D_801C4A74 = 0; - D_801C4AEE = D_80114F34 + buf[1]; - D_801C4AF0 = D_80114F38 + buf[2]; - D_801C4AE4 = D_80114F24 + buf[0]; - D_801C4AE6 = D_80114F28 + buf[1]; - D_801C4AE8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801C4A94; -extern SV4 D_801C4A9C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C4A9C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801C4A94 = 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_801C4A9C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C4A9C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801C4A94) = 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_801C4A9C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801C4ABC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801C4ABC; - 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_801C4A74; -extern s16 D_801C4D60; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801C4A74 = D_801C4A74 + 1; - if (D_801C4A74 >= 0x1F) { - D_801C4D60 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801C4A74; -extern s16 D_801C4D60; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801C4A74 = D_801C4A74 + 1; - if (0x18 < D_801C4A74) { - func_8012A4BC(); - D_801C4D60 = 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_801C4A74; -extern void (*D_801C4AB8)(void); -extern short D_801C4AFC; -extern short D_801C4AFE; -extern short D_801C4B00; -extern s16 D_801C4D60; - -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_801C4A74 = D_801C4A74 + 1; - if (D_801C4A74 >= 0x19) { - if (D_801C4AB8 != 0) { - (*D_801C4AB8)(); - } else { - D_80114F30 = D_80114F30 + D_801C4AFC; - D_80114F34 = D_80114F34 + D_801C4AFE; - D_80114F38 = D_80114F38 + D_801C4B00; - D_80114F24 = D_80114F24 + D_801C4AFC; - D_80114F28 = D_80114F28 + D_801C4AFE; - D_80114F2C = D_80114F2C + D_801C4B00; - func_8012A4BC(); - } - D_801C4D60 = 0; - } -} - - - -extern void (*D_80187B10[])(void); - -void func_8017BE60(void *a0) { - D_80187B10[*(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 (*D_80187B34[])(void); - -void func_8017BEBC(void *a0) { - D_80187B34[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_103/nonmatchings/ov_SC03_103_jr_8017A4AC", func_8017BEF8); - -DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ - - -extern void (*D_80187B3C[])(void); - -void func_8017C150(void *a0) { - D_80187B3C[*(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_80187B28; - -void func_8017C18C(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_80187B28, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ diff --git a/src/ov_SC03_103/ov_SC03_103_jr_8017AE2C.c b/src/ov_SC03_103/ov_SC03_103_jr_8017AE2C.c new file mode 100644 index 000000000..a3ed5d2b1 --- /dev/null +++ b/src/ov_SC03_103/ov_SC03_103_jr_8017AE2C.c @@ -0,0 +1,3523 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80186668; +extern u8 D_801865D8; +extern u8 D_801865B4; +extern u8 D_80186590; +extern u8 D_80186644; +extern u8 D_80186620; +extern u8 D_801865FC; +extern u8 D_8018656C; +extern void func_80145934(void); +extern u8 D_801866F8; +extern u8 D_801866D4; +extern u8 D_801866B0; +extern u8 D_8018668C; +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_80185AF0[]; +extern unsigned char D_80185B20[]; +extern unsigned char D_80185B70[]; +extern unsigned char D_80185BA0[]; +extern unsigned char D_80185BD0[]; +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(void); +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_80185C20[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80185CE8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80185D70[]; +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_80185D78; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801C3970; +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_801C3974; +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_80185DA8; +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 void 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_80185E50[])(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_80185E74[])(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_80185E64; +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_80185E88[])(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_80185E94[]; +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_80185EA4[])(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_80185EBC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80185EAC; +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_80185ED0[])(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_80185EEC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80185EDC; +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_80185F00[])(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_80185F14[])(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_80185F28; +extern void (*D_80185F50[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80185F30; +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_80185F9C[])(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_80185FA0[])(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(void *a0); +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_80186404[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80186414[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801C39A8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018643C[])(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_8018641C; +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_8018642C; +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_8018647C[])(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_80186484[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80186450; +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_80186490[])(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_80186460; +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_801C39B0; +extern s32 D_801C39BC; +extern s32 D_801C39C0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801864CC[])(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_801864A0[]; +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_801C39B8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018671C[])(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_8018653C[]; +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_801867C0[])(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_80186914[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80186730; +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_8018691C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80186740; +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_80186760; +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_80186924[])(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(void); +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_8018694C[])(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_80186958[])(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_801867CC[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801869FC; +extern void func_8015D380(s32 a0); +extern unsigned char D_80185AE0[]; +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_80186A10[]; +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_80186A4C[]; +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_80186A94; +extern u16 D_80186A96; +extern u16 D_80186A98; +extern s32 D_80186A9C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80186AA4; +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_801867B0; +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_80186B28[]; +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_80186BD8[])(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_80186C08[]; +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_80186C6C; +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_801C39C8[]; +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_80186C90[])(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_801C3A20[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80186CD8[])(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_80186CC8; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801C3250[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_80186CE0[])(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_80186D34[])(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_80186CFC; +extern s16 D_80186D30; +extern s16 D_80186D2E; +extern s16 D_80186D2C; +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_80186D40[])(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_801C3A80; +extern u8 D_801C3A81; +extern u8 D_801C3A82; +extern u8 D_801C3A83; +extern u8 D_801C3A84; +extern u8 D_801C3A85; +extern u8 D_801C3A86; +extern u8 D_801C3A87; +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_80186D50[])(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_801C3AC0; +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_80186D94[])(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_80186E10[]; +extern s32 D_80186E30[]; +extern u8 D_80186EAC[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80186ECC[]; +extern u8 D_80186EEC[]; +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_80186F88[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80187004[])(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_801C3260; +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_80187010[])(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_80187018[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801870E0[])(void); +extern void func_80166618(void *a0); +extern void (*D_801870F0[])(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_80187100[])(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_8018710C[])(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_8018706C[]; +extern u8 D_80187080[]; +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_80187124[])(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_8018712C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80187134[])(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_8018713C[])(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_80187144[])(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_8018714C[])(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_80187154[])(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_80187208[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80187210[])(void); +extern void func_80169F00(void *a0); +extern char D_801871C0[]; +extern char D_80187180[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80187248[])(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_80187254[])(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_8018729C[])(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_80187318[])(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_801C3DE0; +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_8018730C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80187350[]; +extern unsigned short D_80187358[]; +extern unsigned short D_80187360[]; +extern unsigned char D_801C3DE8[]; +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_801C3DE0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80187368[])(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_801C3F1C; +extern M2C_UNK D_801C3F20; +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_801C3EA8; +extern void (*D_80187398[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801C3F24[]; +extern u8 D_801C3F2C[]; +extern u8 D_801C3EDC[]; +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_801873A0[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801873BC[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801873C4[])(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_8018742C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801873D0; +extern u8 D_801873DC; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80187460[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80187468[])(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_801874BC[])(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_801874F0[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801874E0[]; +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_8018750C; +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); +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_80187584[])(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_8018758C[])(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_80187594[])(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_8018759C[])(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_801875A4[])(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_801875AC[])(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_801875B8[])(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_801875C4[])(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_801875D0[])(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_801875E0[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801875F0[])(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_801875F8[])(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_80187600[])(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_80187608[])(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_80187610[])(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_80187618[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80187620[])(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_80187628[])(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_80187630[])(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_80187638[])(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_80187640[])(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_80187648[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80187650[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80187658[])(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_80187660[])(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_80187668[])(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_80187670[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80187678[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80187680[])(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_80187688[])(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_80187690[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80187698[])(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_801876A0[])(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_801876E4[])(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_801876A8; +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_80187714[])(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_80187750[])(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(s32); +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_801877A8[])(); +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_801877B8[])(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_801877C0[])(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_80187928[])(); +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_80187934[])(); +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_801C34A8; +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 int func_801789AC(void); +extern s16 D_801C4D60; +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_801C4660; +extern short D_801C4DD4; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801C4A8C; +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_801C4AB4; +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_801C4A70; +extern s32 func_8017A3B0(void); +extern short D_801C4AAC; +extern short D_801C4AA8; +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_801C4D30; +extern s16 D_801C4D32; +extern s16 D_801C4D3C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801C4D30; + + 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_801C4D3C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801C4D30+0xC == &D_801C4D3C; 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_801C4D30 + 0xC)) < 0x101) { + D_801C4D30 = 0; + D_801C4D32 = 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_801C4D3C); + 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_801C4D30 + 0xC)) < 0x101) { + D_801C4D30 = 0; + D_801C4D32 = 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_801C4AEC; + extern s16 D_801C4AEE; + extern s16 D_801C4AF0; + extern s16 D_801C4AE4; + extern s16 D_801C4AE6; + extern s16 D_801C4AE8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C4AEC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C4AEE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C4AF0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C4AE4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C4AE6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C4AE8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801C4A74; +extern u16 D_801C4AF4; +extern u16 D_801C4AF6; +extern u16 D_801C4AF8; +extern s16 D_801C4D60; + +void func_8017B1D8(void) { + func_8012A418(); + D_801C4D60 = 0; + D_801C4A74 = 0; + D_801C4AF4 = D_80126B5E; + D_801C4AF6 = D_80126B62; + D_801C4AF8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80187A70[]; + extern s16 D_801C4AEC; + extern s16 D_801C4AE4; + 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_80187A70[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80187A70[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C4AEC; + s16 *p78C = &D_801C4AE4; + *(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_801C4D60 = 1; + D_801C4A74 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C4A94; + extern SV4_8017B368 D_801C4A9C; + extern s16 D_801C4AEC; + extern s16 D_801C4AE4; + extern u16 D_80187A70; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801C4A94; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801C4A9C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80187A70)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80187A70)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801C4AEC) = loc0; + (*(SV4_8017B368 *)&D_801C4AE4) = loc1; + D_801C4D60 = 1; + D_801C4A74 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_103/nonmatchings/ov_SC03_103_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80187A70[]; + extern s16 D_801C4AEC; + extern s16 D_801C4AEE; + extern s16 D_801C4AF0; + extern s16 D_801C4AE4; + extern s16 D_801C4AE6; + extern s16 D_801C4AE8; + 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_80187A70[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80187A70[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C4AEC; + s16 *p78C = &D_801C4AE4; + *(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_801C4AEE; + v798 = D_801C4AF0; + v78C = *p78C; + v78E = D_801C4AE6; + v790 = D_801C4AE8; + __asm__ __volatile__(""); + D_801C4D60 = 1; + D_801C4A74 = 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_801C4A74; +extern s16 D_801C4AEC; +extern s16 D_801C4AEE; +extern s16 D_801C4AF0; +extern s16 D_801C4AE4; +extern s16 D_801C4AE6; +extern s16 D_801C4AE8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801C4A74 = 0; + D_801C4AEC = (s16) D_80114F30; + D_801C4AEE = (s16) D_80114F34; + D_801C4AF0 = (s16) D_80114F38; + D_801C4AE4 = (s16) D_80114F24; + D_801C4AE6 = (s16) D_80114F28; + D_801C4AE8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801C4B04; +extern s16 D_801C4B06; +extern s16 D_801C4B08; +extern s16 D_801C4B0C; +extern s16 D_801C4B0E; +extern s16 D_801C4B10; + +void func_8017B824(void) { + D_801C4B04 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801C4B06 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801C4B08 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801C4B0C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801C4B0E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801C4B10 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801C4B04; +extern s16 D_801C4B06; +extern s16 D_801C4B08; +extern s16 D_801C4B0C; +extern s16 D_801C4B0E; +extern s16 D_801C4B10; + +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_801C4B04; + D_80114F34 = D_801C4B06; + D_80114F38 = D_801C4B08; + D_80114F24 = D_801C4B0C; + D_80114F28 = D_801C4B0E; + D_80114F2C = D_801C4B10; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801C4AEC), src[8..15] -> (*(S8_8017B8E8 *)&D_801C4AE4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801C4AEC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801C4AE4) = ((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_801C4AF4; +extern u16 D_801C4AF6; +extern u16 D_801C4AF8; + +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_801C4A74; +extern short D_801C4AFC; +extern short D_801C4AFE; +extern short D_801C4B00; +extern s16 D_801C4AEC; +extern s16 D_801C4AEE; +extern s16 D_801C4AF0; +extern s16 D_801C4AE4; +extern s16 D_801C4AE6; +extern s16 D_801C4AE8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C4AF4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C4AF6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C4AF8); + (*(s16 *)&D_801C4AFC) = buf[0]; + (*(s16 *)&D_801C4AFE) = buf[1]; + (*(s16 *)&D_801C4B00) = buf[2]; + D_801C4AEC = D_80114F30 + buf[0]; + D_801C4A74 = 0; + D_801C4AEE = D_80114F34 + buf[1]; + D_801C4AF0 = D_80114F38 + buf[2]; + D_801C4AE4 = D_80114F24 + buf[0]; + D_801C4AE6 = D_80114F28 + buf[1]; + D_801C4AE8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801C4A94; +extern SV4 D_801C4A9C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C4A9C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801C4A94 = 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_801C4A9C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C4A9C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801C4A94) = 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_801C4A9C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801C4ABC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801C4ABC; + 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_801C4A74; +extern s16 D_801C4D60; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801C4A74 = D_801C4A74 + 1; + if (D_801C4A74 >= 0x1F) { + D_801C4D60 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801C4A74; +extern s16 D_801C4D60; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801C4A74 = D_801C4A74 + 1; + if (0x18 < D_801C4A74) { + func_8012A4BC(); + D_801C4D60 = 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_801C4A74; +extern void (*D_801C4AB8)(void); +extern short D_801C4AFC; +extern short D_801C4AFE; +extern short D_801C4B00; +extern s16 D_801C4D60; + +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_801C4A74 = D_801C4A74 + 1; + if (D_801C4A74 >= 0x19) { + if (D_801C4AB8 != 0) { + (*D_801C4AB8)(); + } else { + D_80114F30 = D_80114F30 + D_801C4AFC; + D_80114F34 = D_80114F34 + D_801C4AFE; + D_80114F38 = D_80114F38 + D_801C4B00; + D_80114F24 = D_80114F24 + D_801C4AFC; + D_80114F28 = D_80114F28 + D_801C4AFE; + D_80114F2C = D_80114F2C + D_801C4B00; + func_8012A4BC(); + } + D_801C4D60 = 0; + } +} + + + +extern void (*D_80187B10[])(void); + +void func_8017BE60(void *a0) { + D_80187B10[*(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 (*D_80187B34[])(void); + +void func_8017BEBC(void *a0) { + D_80187B34[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_103/nonmatchings/ov_SC03_103_jr_8017AE2C", func_8017BEF8); + +DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ + + +extern void (*D_80187B3C[])(void); + +void func_8017C150(void *a0) { + D_80187B3C[*(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_80187B28; + +void func_8017C18C(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_80187B28, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ + diff --git a/src/ov_SC03_104/ov_SC03_104_jr_8017A4AC.c b/src/ov_SC03_104/ov_SC03_104_jr_8017A4AC.c index f690a354c..98f394949 100644 --- a/src/ov_SC03_104/ov_SC03_104_jr_8017A4AC.c +++ b/src/ov_SC03_104/ov_SC03_104_jr_8017A4AC.c @@ -2967,626 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801C0084; - extern s16 D_801C0086; - extern s16 D_801C0088; - extern s16 D_801C007C; - extern s16 D_801C007E; - extern s16 D_801C0080; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C0084, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C0086, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C0088, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C007C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C007E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C0080, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801C000C; -extern u16 D_801C008C; -extern u16 D_801C008E; -extern u16 D_801C0090; -extern s16 D_801C0420; - -void func_8017B1D8(void) { - func_8012A418(); - D_801C0420 = 0; - D_801C000C = 0; - D_801C008C = D_80126B5E; - D_801C008E = D_80126B62; - D_801C0090 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018E600[]; - extern s16 D_801C0084; - extern s16 D_801C007C; - 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_8018E600[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018E600[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C0084; - s16 *p78C = &D_801C007C; - *(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_801C0420 = 1; - D_801C000C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C002C; - extern SV4_8017B368 D_801C0034; - extern s16 D_801C0084; - extern s16 D_801C007C; - extern u16 D_8018E600; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801C002C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801C0034; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018E600)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018E600)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801C0084) = loc0; - (*(SV4_8017B368 *)&D_801C007C) = loc1; - D_801C0420 = 1; - D_801C000C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018E600[]; - extern s16 D_801C0084; - extern s16 D_801C0086; - extern s16 D_801C0088; - extern s16 D_801C007C; - extern s16 D_801C007E; - extern s16 D_801C0080; - 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_8018E600[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018E600[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C0084; - s16 *p78C = &D_801C007C; - *(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_801C0086; - v798 = D_801C0088; - v78C = *p78C; - v78E = D_801C007E; - v790 = D_801C0080; - __asm__ __volatile__(""); - D_801C0420 = 1; - D_801C000C = 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_801C000C; -extern s16 D_801C0084; -extern s16 D_801C0086; -extern s16 D_801C0088; -extern s16 D_801C007C; -extern s16 D_801C007E; -extern s16 D_801C0080; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801C000C = 0; - D_801C0084 = (s16) D_80114F30; - D_801C0086 = (s16) D_80114F34; - D_801C0088 = (s16) D_80114F38; - D_801C007C = (s16) D_80114F24; - D_801C007E = (s16) D_80114F28; - D_801C0080 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801C009C; -extern s16 D_801C009E; -extern s16 D_801C00A0; -extern s16 D_801C00A4; -extern s16 D_801C00A6; -extern s16 D_801C00A8; - -void func_8017B824(void) { - D_801C009C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801C009E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801C00A0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801C00A4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801C00A6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801C00A8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801C009C; -extern s16 D_801C009E; -extern s16 D_801C00A0; -extern s16 D_801C00A4; -extern s16 D_801C00A6; -extern s16 D_801C00A8; - -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_801C009C; - D_80114F34 = D_801C009E; - D_80114F38 = D_801C00A0; - D_80114F24 = D_801C00A4; - D_80114F28 = D_801C00A6; - D_80114F2C = D_801C00A8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801C0084), src[8..15] -> (*(S8_8017B8E8 *)&D_801C007C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801C0084) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801C007C) = ((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_801C008C; -extern u16 D_801C008E; -extern u16 D_801C0090; - -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_801C000C; -extern short D_801C0094; -extern short D_801C0096; -extern short D_801C0098; -extern s16 D_801C0084; -extern s16 D_801C0086; -extern s16 D_801C0088; -extern s16 D_801C007C; -extern s16 D_801C007E; -extern s16 D_801C0080; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C008C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C008E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C0090); - (*(s16 *)&D_801C0094) = buf[0]; - (*(s16 *)&D_801C0096) = buf[1]; - (*(s16 *)&D_801C0098) = buf[2]; - D_801C0084 = D_80114F30 + buf[0]; - D_801C000C = 0; - D_801C0086 = D_80114F34 + buf[1]; - D_801C0088 = D_80114F38 + buf[2]; - D_801C007C = D_80114F24 + buf[0]; - D_801C007E = D_80114F28 + buf[1]; - D_801C0080 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801C002C; -extern SV4 D_801C0034; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C0034) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801C002C = 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_801C0034 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C0034)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801C002C) = 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_801C0034) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801C0054[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801C0054; - 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_801C000C; -extern s16 D_801C0420; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801C000C = D_801C000C + 1; - if (D_801C000C >= 0x1F) { - D_801C0420 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801C000C; -extern s16 D_801C0420; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801C000C = D_801C000C + 1; - if (0x18 < D_801C000C) { - func_8012A4BC(); - D_801C0420 = 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_801C000C; -extern void (*D_801C0050)(void); -extern short D_801C0094; -extern short D_801C0096; -extern short D_801C0098; -extern s16 D_801C0420; - -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_801C000C = D_801C000C + 1; - if (D_801C000C >= 0x19) { - if (D_801C0050 != 0) { - (*D_801C0050)(); - } else { - D_80114F30 = D_80114F30 + D_801C0094; - D_80114F34 = D_80114F34 + D_801C0096; - D_80114F38 = D_80114F38 + D_801C0098; - D_80114F24 = D_80114F24 + D_801C0094; - D_80114F28 = D_80114F28 + D_801C0096; - D_80114F2C = D_80114F2C + D_801C0098; - func_8012A4BC(); - } - D_801C0420 = 0; - } -} - - - -extern void (*D_8018E6A0[])(void); - -void func_8017BE60(void *a0) { - D_8018E6A0[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017A4AC", func_8017BEBC); - - -extern void (*D_8018E6D8[])(void); - -void func_8017BEF8(void *a0) { - D_8018E6D8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017A4AC", func_8017BF34); - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017A4AC", func_8017BF84); - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017A4AC", func_8017BFE0); - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017A4AC", func_8017C064); - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017A4AC", func_8017C1CC); - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017A4AC", func_8017C218); - - -extern void (*D_8018E6EC[])(void); - -void func_8017C524(void *a0) { - D_8018E6EC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017A4AC", func_8017C560); - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017A4AC", func_8017C5A0); - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017A4AC", func_8017C610); - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017A4AC", func_8017C69C); - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017A4AC", func_8017C770); - - -extern void (*D_8018E700[])(void); - -void func_8017C7C4(void *a0) { - D_8018E700[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017A4AC", func_8017C800); - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017A4AC", func_8017C8B4); - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017A4AC", func_8017C910); diff --git a/src/ov_SC03_104/ov_SC03_104_jr_8017AE2C.c b/src/ov_SC03_104/ov_SC03_104_jr_8017AE2C.c new file mode 100644 index 000000000..7940a72c4 --- /dev/null +++ b/src/ov_SC03_104/ov_SC03_104_jr_8017AE2C.c @@ -0,0 +1,3524 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018D1F8; +extern u8 D_8018D168; +extern u8 D_8018D144; +extern u8 D_8018D120; +extern u8 D_8018D1D4; +extern u8 D_8018D1B0; +extern u8 D_8018D18C; +extern u8 D_8018D0FC; +extern void func_80145934(void); +extern u8 D_8018D288; +extern u8 D_8018D264; +extern u8 D_8018D240; +extern u8 D_8018D21C; +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_8018C680[]; +extern unsigned char D_8018C6B0[]; +extern unsigned char D_8018C700[]; +extern unsigned char D_8018C730[]; +extern unsigned char D_8018C760[]; +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(void); +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_8018C7B0[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018C878[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018C900[]; +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_8018C908; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801BEF08; +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_801BEF0C; +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_8018C938; +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 void 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_8018C9E0[])(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_8018CA04[])(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_8018C9F4; +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_8018CA18[])(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_8018CA24[]; +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_8018CA34[])(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_8018CA4C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018CA3C; +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_8018CA60[])(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_8018CA7C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018CA6C; +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_8018CA90[])(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_8018CAA4[])(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_8018CAB8; +extern void (*D_8018CAE0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018CAC0; +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_8018CB2C[])(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_8018CB30[])(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(void *a0); +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_8018CF94[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018CFA4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801BEF40; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018CFCC[])(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_8018CFAC; +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_8018CFBC; +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_8018D00C[])(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_8018D014[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018CFE0; +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_8018D020[])(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_8018CFF0; +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_801BEF48; +extern s32 D_801BEF54; +extern s32 D_801BEF58; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018D05C[])(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_8018D030[]; +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_801BEF50; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018D2AC[])(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_8018D0CC[]; +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_8018D350[])(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_8018D4A4[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018D2C0; +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_8018D4AC[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018D2D0; +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_8018D2F0; +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_8018D4B4[])(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(void); +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_8018D4DC[])(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_8018D4E8[])(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_8018D35C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018D58C; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018C670[]; +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_8018D5A0[]; +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_8018D5DC[]; +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_8018D624; +extern u16 D_8018D626; +extern u16 D_8018D628; +extern s32 D_8018D62C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018D634; +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_8018D340; +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_8018D6B8[]; +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_8018D768[])(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_8018D798[]; +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_8018D7FC; +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_801BEF60[]; +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_8018D820[])(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_801BEFB8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018D868[])(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_8018D858; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801BE7B0[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_8018D870[])(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_8018D8C4[])(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_8018D88C; +extern s16 D_8018D8C0; +extern s16 D_8018D8BE; +extern s16 D_8018D8BC; +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_8018D8D0[])(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_801BF018; +extern u8 D_801BF019; +extern u8 D_801BF01A; +extern u8 D_801BF01B; +extern u8 D_801BF01C; +extern u8 D_801BF01D; +extern u8 D_801BF01E; +extern u8 D_801BF01F; +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_8018D8E0[])(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_801BF058; +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_8018D924[])(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_8018D9A0[]; +extern s32 D_8018D9C0[]; +extern u8 D_8018DA3C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018DA5C[]; +extern u8 D_8018DA7C[]; +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_8018DB18[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018DB94[])(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_801BE7C0; +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_8018DBA0[])(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_8018DBA8[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018DC70[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018DC80[])(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_8018DC90[])(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_8018DC9C[])(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_8018DBFC[]; +extern u8 D_8018DC10[]; +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_8018DCB4[])(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_8018DCBC[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018DCC4[])(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_8018DCCC[])(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_8018DCD4[])(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_8018DCDC[])(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_8018DCE4[])(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_8018DD98[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018DDA0[])(void); +extern void func_80169F00(void *a0); +extern char D_8018DD50[]; +extern char D_8018DD10[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018DDD8[])(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_8018DDE4[])(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_8018DE2C[])(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_8018DEA8[])(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_801BF378; +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_8018DE9C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018DEE0[]; +extern unsigned short D_8018DEE8[]; +extern unsigned short D_8018DEF0[]; +extern unsigned char D_801BF380[]; +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_801BF378; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018DEF8[])(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_801BF4B4; +extern M2C_UNK D_801BF4B8; +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_801BF440; +extern void (*D_8018DF28[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801BF4BC[]; +extern u8 D_801BF4C4[]; +extern u8 D_801BF474[]; +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_8018DF30[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018DF4C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018DF54[])(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_8018DFBC[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018DF60; +extern u8 D_8018DF6C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018DFF0[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018DFF8[])(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_8018E04C[])(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_8018E080[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018E070[]; +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_8018E09C; +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); +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_8018E114[])(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_8018E11C[])(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_8018E124[])(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_8018E12C[])(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_8018E134[])(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_8018E13C[])(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_8018E148[])(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_8018E154[])(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_8018E160[])(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_8018E170[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018E180[])(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_8018E188[])(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_8018E190[])(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_8018E198[])(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_8018E1A0[])(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_8018E1A8[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018E1B0[])(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_8018E1B8[])(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_8018E1C0[])(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_8018E1C8[])(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_8018E1D0[])(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_8018E1D8[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018E1E0[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018E1E8[])(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_8018E1F0[])(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_8018E1F8[])(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_8018E200[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018E208[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018E210[])(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_8018E218[])(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_8018E220[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018E228[])(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_8018E230[])(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_8018E274[])(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_8018E238; +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_8018E2A4[])(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_8018E2E0[])(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(s32); +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_8018E338[])(); +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_8018E348[])(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_8018E350[])(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_8018E4B8[])(); +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_8018E4C4[])(); +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_801BEA08; +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 int func_801789AC(void); +extern s16 D_801C0420; +extern int func_80178970(void); +extern void 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_801BFBF8; +extern short D_801C0494; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801C0024; +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_801C004C; +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_801C0008; +extern s32 func_8017A3B0(void); +extern short D_801C0044; +extern short D_801C0040; +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_801C03F0; +extern s16 D_801C03F2; +extern s16 D_801C03FC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801C03F0; + + 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_801C03FC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801C03F0+0xC == &D_801C03FC; 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_801C03F0 + 0xC)) < 0x101) { + D_801C03F0 = 0; + D_801C03F2 = 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_801C03FC); + 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_801C03F0 + 0xC)) < 0x101) { + D_801C03F0 = 0; + D_801C03F2 = 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_801C0084; + extern s16 D_801C0086; + extern s16 D_801C0088; + extern s16 D_801C007C; + extern s16 D_801C007E; + extern s16 D_801C0080; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C0084, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C0086, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C0088, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C007C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C007E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C0080, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801C000C; +extern u16 D_801C008C; +extern u16 D_801C008E; +extern u16 D_801C0090; +extern s16 D_801C0420; + +void func_8017B1D8(void) { + func_8012A418(); + D_801C0420 = 0; + D_801C000C = 0; + D_801C008C = D_80126B5E; + D_801C008E = D_80126B62; + D_801C0090 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018E600[]; + extern s16 D_801C0084; + extern s16 D_801C007C; + 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_8018E600[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018E600[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C0084; + s16 *p78C = &D_801C007C; + *(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_801C0420 = 1; + D_801C000C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C002C; + extern SV4_8017B368 D_801C0034; + extern s16 D_801C0084; + extern s16 D_801C007C; + extern u16 D_8018E600; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801C002C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801C0034; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018E600)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018E600)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801C0084) = loc0; + (*(SV4_8017B368 *)&D_801C007C) = loc1; + D_801C0420 = 1; + D_801C000C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018E600[]; + extern s16 D_801C0084; + extern s16 D_801C0086; + extern s16 D_801C0088; + extern s16 D_801C007C; + extern s16 D_801C007E; + extern s16 D_801C0080; + 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_8018E600[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018E600[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C0084; + s16 *p78C = &D_801C007C; + *(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_801C0086; + v798 = D_801C0088; + v78C = *p78C; + v78E = D_801C007E; + v790 = D_801C0080; + __asm__ __volatile__(""); + D_801C0420 = 1; + D_801C000C = 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_801C000C; +extern s16 D_801C0084; +extern s16 D_801C0086; +extern s16 D_801C0088; +extern s16 D_801C007C; +extern s16 D_801C007E; +extern s16 D_801C0080; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801C000C = 0; + D_801C0084 = (s16) D_80114F30; + D_801C0086 = (s16) D_80114F34; + D_801C0088 = (s16) D_80114F38; + D_801C007C = (s16) D_80114F24; + D_801C007E = (s16) D_80114F28; + D_801C0080 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801C009C; +extern s16 D_801C009E; +extern s16 D_801C00A0; +extern s16 D_801C00A4; +extern s16 D_801C00A6; +extern s16 D_801C00A8; + +void func_8017B824(void) { + D_801C009C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801C009E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801C00A0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801C00A4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801C00A6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801C00A8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801C009C; +extern s16 D_801C009E; +extern s16 D_801C00A0; +extern s16 D_801C00A4; +extern s16 D_801C00A6; +extern s16 D_801C00A8; + +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_801C009C; + D_80114F34 = D_801C009E; + D_80114F38 = D_801C00A0; + D_80114F24 = D_801C00A4; + D_80114F28 = D_801C00A6; + D_80114F2C = D_801C00A8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801C0084), src[8..15] -> (*(S8_8017B8E8 *)&D_801C007C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801C0084) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801C007C) = ((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_801C008C; +extern u16 D_801C008E; +extern u16 D_801C0090; + +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_801C000C; +extern short D_801C0094; +extern short D_801C0096; +extern short D_801C0098; +extern s16 D_801C0084; +extern s16 D_801C0086; +extern s16 D_801C0088; +extern s16 D_801C007C; +extern s16 D_801C007E; +extern s16 D_801C0080; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C008C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C008E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C0090); + (*(s16 *)&D_801C0094) = buf[0]; + (*(s16 *)&D_801C0096) = buf[1]; + (*(s16 *)&D_801C0098) = buf[2]; + D_801C0084 = D_80114F30 + buf[0]; + D_801C000C = 0; + D_801C0086 = D_80114F34 + buf[1]; + D_801C0088 = D_80114F38 + buf[2]; + D_801C007C = D_80114F24 + buf[0]; + D_801C007E = D_80114F28 + buf[1]; + D_801C0080 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801C002C; +extern SV4 D_801C0034; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C0034) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801C002C = 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_801C0034 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C0034)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801C002C) = 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_801C0034) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801C0054[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801C0054; + 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_801C000C; +extern s16 D_801C0420; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801C000C = D_801C000C + 1; + if (D_801C000C >= 0x1F) { + D_801C0420 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801C000C; +extern s16 D_801C0420; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801C000C = D_801C000C + 1; + if (0x18 < D_801C000C) { + func_8012A4BC(); + D_801C0420 = 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_801C000C; +extern void (*D_801C0050)(void); +extern short D_801C0094; +extern short D_801C0096; +extern short D_801C0098; +extern s16 D_801C0420; + +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_801C000C = D_801C000C + 1; + if (D_801C000C >= 0x19) { + if (D_801C0050 != 0) { + (*D_801C0050)(); + } else { + D_80114F30 = D_80114F30 + D_801C0094; + D_80114F34 = D_80114F34 + D_801C0096; + D_80114F38 = D_80114F38 + D_801C0098; + D_80114F24 = D_80114F24 + D_801C0094; + D_80114F28 = D_80114F28 + D_801C0096; + D_80114F2C = D_80114F2C + D_801C0098; + func_8012A4BC(); + } + D_801C0420 = 0; + } +} + + + +extern void (*D_8018E6A0[])(void); + +void func_8017BE60(void *a0) { + D_8018E6A0[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017AE2C", func_8017BEBC); + + +extern void (*D_8018E6D8[])(void); + +void func_8017BEF8(void *a0) { + D_8018E6D8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017AE2C", func_8017BF34); + +INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017AE2C", func_8017BF84); + +INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017AE2C", func_8017BFE0); + +INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017AE2C", func_8017C064); + +INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017AE2C", func_8017C1CC); + +INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017AE2C", func_8017C218); + + +extern void (*D_8018E6EC[])(void); + +void func_8017C524(void *a0) { + D_8018E6EC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017AE2C", func_8017C560); + +INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017AE2C", func_8017C5A0); + +INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017AE2C", func_8017C610); + +INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017AE2C", func_8017C69C); + +INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017AE2C", func_8017C770); + + +extern void (*D_8018E700[])(void); + +void func_8017C7C4(void *a0) { + D_8018E700[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017AE2C", func_8017C800); + +INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017AE2C", func_8017C8B4); + +INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017AE2C", func_8017C910); + diff --git a/src/ov_SC03_105/ov_SC03_105_jr_8017A4AC.c b/src/ov_SC03_105/ov_SC03_105_jr_8017A4AC.c index 987b09646..4c494058a 100644 --- a/src/ov_SC03_105/ov_SC03_105_jr_8017A4AC.c +++ b/src/ov_SC03_105/ov_SC03_105_jr_8017A4AC.c @@ -2967,604 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801B9614; - extern s16 D_801B9616; - extern s16 D_801B9618; - extern s16 D_801B960C; - extern s16 D_801B960E; - extern s16 D_801B9610; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B9614, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B9616, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B9618, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B960C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B960E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B9610, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801B959C; -extern u16 D_801B961C; -extern u16 D_801B961E; -extern u16 D_801B9620; -extern s16 D_801BCCA8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801BCCA8 = 0; - D_801B959C = 0; - D_801B961C = D_80126B5E; - D_801B961E = D_80126B62; - D_801B9620 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018DC88[]; - extern s16 D_801B9614; - extern s16 D_801B960C; - 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_8018DC88[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018DC88[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B9614; - s16 *p78C = &D_801B960C; - *(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_801BCCA8 = 1; - D_801B959C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B95BC; - extern SV4_8017B368 D_801B95C4; - extern s16 D_801B9614; - extern s16 D_801B960C; - extern u16 D_8018DC88; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801B95BC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801B95C4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018DC88)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018DC88)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801B9614) = loc0; - (*(SV4_8017B368 *)&D_801B960C) = loc1; - D_801BCCA8 = 1; - D_801B959C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018DC88[]; - extern s16 D_801B9614; - extern s16 D_801B9616; - extern s16 D_801B9618; - extern s16 D_801B960C; - extern s16 D_801B960E; - extern s16 D_801B9610; - 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_8018DC88[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018DC88[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B9614; - s16 *p78C = &D_801B960C; - *(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_801B9616; - v798 = D_801B9618; - v78C = *p78C; - v78E = D_801B960E; - v790 = D_801B9610; - __asm__ __volatile__(""); - D_801BCCA8 = 1; - D_801B959C = 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_801B959C; -extern s16 D_801B9614; -extern s16 D_801B9616; -extern s16 D_801B9618; -extern s16 D_801B960C; -extern s16 D_801B960E; -extern s16 D_801B9610; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801B959C = 0; - D_801B9614 = (s16) D_80114F30; - D_801B9616 = (s16) D_80114F34; - D_801B9618 = (s16) D_80114F38; - D_801B960C = (s16) D_80114F24; - D_801B960E = (s16) D_80114F28; - D_801B9610 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801B962C; -extern s16 D_801B962E; -extern s16 D_801B9630; -extern s16 D_801B9634; -extern s16 D_801B9636; -extern s16 D_801B9638; - -void func_8017B824(void) { - D_801B962C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801B962E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801B9630 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801B9634 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801B9636 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801B9638 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801B962C; -extern s16 D_801B962E; -extern s16 D_801B9630; -extern s16 D_801B9634; -extern s16 D_801B9636; -extern s16 D_801B9638; - -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_801B962C; - D_80114F34 = D_801B962E; - D_80114F38 = D_801B9630; - D_80114F24 = D_801B9634; - D_80114F28 = D_801B9636; - D_80114F2C = D_801B9638; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801B9614), src[8..15] -> (*(S8_8017B8E8 *)&D_801B960C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801B9614) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801B960C) = ((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_801B961C; -extern u16 D_801B961E; -extern u16 D_801B9620; - -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_801B959C; -extern short D_801B9624; -extern short D_801B9626; -extern short D_801B9628; -extern s16 D_801B9614; -extern s16 D_801B9616; -extern s16 D_801B9618; -extern s16 D_801B960C; -extern s16 D_801B960E; -extern s16 D_801B9610; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B961C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B961E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B9620); - (*(s16 *)&D_801B9624) = buf[0]; - (*(s16 *)&D_801B9626) = buf[1]; - (*(s16 *)&D_801B9628) = buf[2]; - D_801B9614 = D_80114F30 + buf[0]; - D_801B959C = 0; - D_801B9616 = D_80114F34 + buf[1]; - D_801B9618 = D_80114F38 + buf[2]; - D_801B960C = D_80114F24 + buf[0]; - D_801B960E = D_80114F28 + buf[1]; - D_801B9610 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801B95BC; -extern SV4 D_801B95C4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B95C4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801B95BC = 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_801B95C4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B95C4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801B95BC) = 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_801B95C4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801B95E4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801B95E4; - 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_801B959C; -extern s16 D_801BCCA8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801B959C = D_801B959C + 1; - if (D_801B959C >= 0x1F) { - D_801BCCA8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801B959C; -extern s16 D_801BCCA8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801B959C = D_801B959C + 1; - if (0x18 < D_801B959C) { - func_8012A4BC(); - D_801BCCA8 = 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_801B959C; -extern void (*D_801B95E0)(void); -extern short D_801B9624; -extern short D_801B9626; -extern short D_801B9628; -extern s16 D_801BCCA8; - -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_801B959C = D_801B959C + 1; - if (D_801B959C >= 0x19) { - if (D_801B95E0 != 0) { - (*D_801B95E0)(); - } else { - D_80114F30 = D_80114F30 + D_801B9624; - D_80114F34 = D_80114F34 + D_801B9626; - D_80114F38 = D_80114F38 + D_801B9628; - D_80114F24 = D_80114F24 + D_801B9624; - D_80114F28 = D_80114F28 + D_801B9626; - D_80114F2C = D_80114F2C + D_801B9628; - func_8012A4BC(); - } - D_801BCCA8 = 0; - } -} - - - -extern void (*D_8018DD28[])(void); - -void func_8017BE60(void *a0) { - D_8018DD28[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017A4AC", func_8017BEE0); - - - -extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); - void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3) { - ((void (*)(void *, void *, s32, s32))func_8017BF34)(a0, a1, (s16)a2, (s16)a3); - } - - -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017A4AC", func_8017BF34); - -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017A4AC", func_8017BFBC); - -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017A4AC", func_8017C010); - -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017A4AC", func_8017C068); - - -extern void (*D_8018DD88[])(void); - -void func_8017C114(void *a0) { - D_8018DD88[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017A4AC", func_8017C150); - -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017A4AC", func_8017C43C); diff --git a/src/ov_SC03_105/ov_SC03_105_jr_8017AE2C.c b/src/ov_SC03_105/ov_SC03_105_jr_8017AE2C.c new file mode 100644 index 000000000..5e1c42bfc --- /dev/null +++ b/src/ov_SC03_105/ov_SC03_105_jr_8017AE2C.c @@ -0,0 +1,3502 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018C880; +extern u8 D_8018C7F0; +extern u8 D_8018C7CC; +extern u8 D_8018C7A8; +extern u8 D_8018C85C; +extern u8 D_8018C838; +extern u8 D_8018C814; +extern u8 D_8018C784; +extern void func_80145934(void); +extern u8 D_8018C910; +extern u8 D_8018C8EC; +extern u8 D_8018C8C8; +extern u8 D_8018C8A4; +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_8018BD08[]; +extern unsigned char D_8018BD38[]; +extern unsigned char D_8018BD88[]; +extern unsigned char D_8018BDB8[]; +extern unsigned char D_8018BDE8[]; +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(void); +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_8018BE38[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018BF00[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018BF88[]; +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_8018BF90; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801B8498; +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_801B849C; +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_8018BFC0; +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 void 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_8018C068[])(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_8018C08C[])(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_8018C07C; +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_8018C0A0[])(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_8018C0AC[]; +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_8018C0BC[])(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_8018C0D4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018C0C4; +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_8018C0E8[])(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_8018C104[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018C0F4; +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_8018C118[])(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_8018C12C[])(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_8018C140; +extern void (*D_8018C168[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018C148; +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_8018C1B4[])(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_8018C1B8[])(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(void *a0); +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_8018C61C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018C62C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801B84D0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018C654[])(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_8018C634; +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_8018C644; +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_8018C694[])(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_8018C69C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018C668; +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_8018C6A8[])(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_8018C678; +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_801B84D8; +extern s32 D_801B84E4; +extern s32 D_801B84E8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018C6E4[])(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_8018C6B8[]; +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_801B84E0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018C934[])(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_8018C754[]; +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_8018C9D8[])(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_8018CB2C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018C948; +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_8018CB34[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018C958; +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_8018C978; +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_8018CB3C[])(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(void); +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_8018CB64[])(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_8018CB70[])(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_8018C9E4[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018CC14; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018BCF8[]; +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_8018CC28[]; +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_8018CC64[]; +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_8018CCAC; +extern u16 D_8018CCAE; +extern u16 D_8018CCB0; +extern s32 D_8018CCB4; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018CCBC; +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_8018C9C8; +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_8018CD40[]; +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_8018CDF0[])(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_8018CE20[]; +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_8018CE84; +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_801B84F0[]; +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_8018CEA8[])(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_801B8548[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018CEF0[])(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_8018CEE0; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801B7AA8[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_8018CEF8[])(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_8018CF4C[])(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_8018CF14; +extern s16 D_8018CF48; +extern s16 D_8018CF46; +extern s16 D_8018CF44; +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_8018CF58[])(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_801B85A8; +extern u8 D_801B85A9; +extern u8 D_801B85AA; +extern u8 D_801B85AB; +extern u8 D_801B85AC; +extern u8 D_801B85AD; +extern u8 D_801B85AE; +extern u8 D_801B85AF; +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_8018CF68[])(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_801B85E8; +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_8018CFAC[])(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_8018D028[]; +extern s32 D_8018D048[]; +extern u8 D_8018D0C4[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018D0E4[]; +extern u8 D_8018D104[]; +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_8018D1A0[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018D21C[])(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_801B7AB8; +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_8018D228[])(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_8018D230[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018D2F8[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018D308[])(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_8018D318[])(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_8018D324[])(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_8018D284[]; +extern u8 D_8018D298[]; +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_8018D33C[])(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_8018D344[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018D34C[])(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_8018D354[])(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_8018D35C[])(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_8018D364[])(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_8018D36C[])(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_8018D420[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018D428[])(void); +extern void func_80169F00(void *a0); +extern char D_8018D3D8[]; +extern char D_8018D398[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018D460[])(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_8018D46C[])(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_8018D4B4[])(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_8018D530[])(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_801B8908; +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_8018D524[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018D568[]; +extern unsigned short D_8018D570[]; +extern unsigned short D_8018D578[]; +extern unsigned char D_801B8910[]; +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_801B8908; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018D580[])(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_801B8A44; +extern M2C_UNK D_801B8A48; +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_801B89D0; +extern void (*D_8018D5B0[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801B8A4C[]; +extern u8 D_801B8A54[]; +extern u8 D_801B8A04[]; +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_8018D5B8[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018D5D4[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018D5DC[])(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_8018D644[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018D5E8; +extern u8 D_8018D5F4; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018D678[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018D680[])(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_8018D6D4[])(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_8018D708[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018D6F8[]; +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_8018D724; +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); +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_8018D79C[])(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_8018D7A4[])(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_8018D7AC[])(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_8018D7B4[])(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_8018D7BC[])(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_8018D7C4[])(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_8018D7D0[])(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_8018D7DC[])(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_8018D7E8[])(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_8018D7F8[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018D808[])(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_8018D810[])(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_8018D818[])(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_8018D820[])(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_8018D828[])(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_8018D830[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018D838[])(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_8018D840[])(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_8018D848[])(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_8018D850[])(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_8018D858[])(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_8018D860[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018D868[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018D870[])(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_8018D878[])(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_8018D880[])(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_8018D888[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018D890[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018D898[])(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_8018D8A0[])(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_8018D8A8[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018D8B0[])(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_8018D8B8[])(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_8018D8FC[])(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_8018D8C0; +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_8018D92C[])(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_8018D968[])(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(s32); +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_8018D9C0[])(); +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_8018D9D0[])(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_8018D9D8[])(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_8018DB40[])(); +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_8018DB4C[])(); +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_801B7D00; +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 int func_801789AC(void); +extern s16 D_801BCCA8; +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_801B9188; +extern short D_801BCD1C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801B95B4; +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_801B95DC; +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_801B9598; +extern s32 func_8017A3B0(void); +extern short D_801B95D4; +extern short D_801B95D0; +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_801BCC78; +extern s16 D_801BCC7A; +extern s16 D_801BCC84; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801BCC78; + + 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_801BCC84); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801BCC78+0xC == &D_801BCC84; 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_801BCC78 + 0xC)) < 0x101) { + D_801BCC78 = 0; + D_801BCC7A = 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_801BCC84); + 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_801BCC78 + 0xC)) < 0x101) { + D_801BCC78 = 0; + D_801BCC7A = 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_801B9614; + extern s16 D_801B9616; + extern s16 D_801B9618; + extern s16 D_801B960C; + extern s16 D_801B960E; + extern s16 D_801B9610; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B9614, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B9616, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B9618, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B960C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B960E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B9610, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801B959C; +extern u16 D_801B961C; +extern u16 D_801B961E; +extern u16 D_801B9620; +extern s16 D_801BCCA8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801BCCA8 = 0; + D_801B959C = 0; + D_801B961C = D_80126B5E; + D_801B961E = D_80126B62; + D_801B9620 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018DC88[]; + extern s16 D_801B9614; + extern s16 D_801B960C; + 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_8018DC88[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018DC88[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B9614; + s16 *p78C = &D_801B960C; + *(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_801BCCA8 = 1; + D_801B959C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B95BC; + extern SV4_8017B368 D_801B95C4; + extern s16 D_801B9614; + extern s16 D_801B960C; + extern u16 D_8018DC88; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801B95BC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801B95C4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018DC88)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018DC88)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801B9614) = loc0; + (*(SV4_8017B368 *)&D_801B960C) = loc1; + D_801BCCA8 = 1; + D_801B959C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018DC88[]; + extern s16 D_801B9614; + extern s16 D_801B9616; + extern s16 D_801B9618; + extern s16 D_801B960C; + extern s16 D_801B960E; + extern s16 D_801B9610; + 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_8018DC88[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018DC88[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B9614; + s16 *p78C = &D_801B960C; + *(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_801B9616; + v798 = D_801B9618; + v78C = *p78C; + v78E = D_801B960E; + v790 = D_801B9610; + __asm__ __volatile__(""); + D_801BCCA8 = 1; + D_801B959C = 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_801B959C; +extern s16 D_801B9614; +extern s16 D_801B9616; +extern s16 D_801B9618; +extern s16 D_801B960C; +extern s16 D_801B960E; +extern s16 D_801B9610; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801B959C = 0; + D_801B9614 = (s16) D_80114F30; + D_801B9616 = (s16) D_80114F34; + D_801B9618 = (s16) D_80114F38; + D_801B960C = (s16) D_80114F24; + D_801B960E = (s16) D_80114F28; + D_801B9610 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801B962C; +extern s16 D_801B962E; +extern s16 D_801B9630; +extern s16 D_801B9634; +extern s16 D_801B9636; +extern s16 D_801B9638; + +void func_8017B824(void) { + D_801B962C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801B962E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801B9630 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801B9634 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801B9636 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801B9638 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801B962C; +extern s16 D_801B962E; +extern s16 D_801B9630; +extern s16 D_801B9634; +extern s16 D_801B9636; +extern s16 D_801B9638; + +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_801B962C; + D_80114F34 = D_801B962E; + D_80114F38 = D_801B9630; + D_80114F24 = D_801B9634; + D_80114F28 = D_801B9636; + D_80114F2C = D_801B9638; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801B9614), src[8..15] -> (*(S8_8017B8E8 *)&D_801B960C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801B9614) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801B960C) = ((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_801B961C; +extern u16 D_801B961E; +extern u16 D_801B9620; + +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_801B959C; +extern short D_801B9624; +extern short D_801B9626; +extern short D_801B9628; +extern s16 D_801B9614; +extern s16 D_801B9616; +extern s16 D_801B9618; +extern s16 D_801B960C; +extern s16 D_801B960E; +extern s16 D_801B9610; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B961C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B961E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B9620); + (*(s16 *)&D_801B9624) = buf[0]; + (*(s16 *)&D_801B9626) = buf[1]; + (*(s16 *)&D_801B9628) = buf[2]; + D_801B9614 = D_80114F30 + buf[0]; + D_801B959C = 0; + D_801B9616 = D_80114F34 + buf[1]; + D_801B9618 = D_80114F38 + buf[2]; + D_801B960C = D_80114F24 + buf[0]; + D_801B960E = D_80114F28 + buf[1]; + D_801B9610 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801B95BC; +extern SV4 D_801B95C4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B95C4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801B95BC = 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_801B95C4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B95C4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801B95BC) = 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_801B95C4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801B95E4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801B95E4; + 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_801B959C; +extern s16 D_801BCCA8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801B959C = D_801B959C + 1; + if (D_801B959C >= 0x1F) { + D_801BCCA8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801B959C; +extern s16 D_801BCCA8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801B959C = D_801B959C + 1; + if (0x18 < D_801B959C) { + func_8012A4BC(); + D_801BCCA8 = 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_801B959C; +extern void (*D_801B95E0)(void); +extern short D_801B9624; +extern short D_801B9626; +extern short D_801B9628; +extern s16 D_801BCCA8; + +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_801B959C = D_801B959C + 1; + if (D_801B959C >= 0x19) { + if (D_801B95E0 != 0) { + (*D_801B95E0)(); + } else { + D_80114F30 = D_80114F30 + D_801B9624; + D_80114F34 = D_80114F34 + D_801B9626; + D_80114F38 = D_80114F38 + D_801B9628; + D_80114F24 = D_80114F24 + D_801B9624; + D_80114F28 = D_80114F28 + D_801B9626; + D_80114F2C = D_80114F2C + D_801B9628; + func_8012A4BC(); + } + D_801BCCA8 = 0; + } +} + + + +extern void (*D_8018DD28[])(void); + +void func_8017BE60(void *a0) { + D_8018DD28[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017AE2C", func_8017BEE0); + + + +extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); + void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3) { + ((void (*)(void *, void *, s32, s32))func_8017BF34)(a0, a1, (s16)a2, (s16)a3); + } + + +INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017AE2C", func_8017BF34); + +INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017AE2C", func_8017BFBC); + +INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017AE2C", func_8017C010); + +INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017AE2C", func_8017C068); + + +extern void (*D_8018DD88[])(void); + +void func_8017C114(void *a0) { + D_8018DD88[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017AE2C", func_8017C150); + +INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017AE2C", func_8017C43C); + diff --git a/src/ov_SC03_108/ov_SC03_108_jr_8017A4AC.c b/src/ov_SC03_108/ov_SC03_108_jr_8017A4AC.c index 7b44f951a..f393625f0 100644 --- a/src/ov_SC03_108/ov_SC03_108_jr_8017A4AC.c +++ b/src/ov_SC03_108/ov_SC03_108_jr_8017A4AC.c @@ -2967,572 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801A1904; - extern s16 D_801A1906; - extern s16 D_801A1908; - extern s16 D_801A18FC; - extern s16 D_801A18FE; - extern s16 D_801A1900; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A1904, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A1906, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A1908, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A18FC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A18FE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A1900, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801A188C; -extern u16 D_801A190C; -extern u16 D_801A190E; -extern u16 D_801A1910; -extern s16 D_801A1A30; - -void func_8017B1D8(void) { - func_8012A418(); - D_801A1A30 = 0; - D_801A188C = 0; - D_801A190C = D_80126B5E; - D_801A190E = D_80126B62; - D_801A1910 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_801845E0[]; - extern s16 D_801A1904; - extern s16 D_801A18FC; - 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_801845E0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801845E0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A1904; - s16 *p78C = &D_801A18FC; - *(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_801A1A30 = 1; - D_801A188C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A18AC; - extern SV4_8017B368 D_801A18B4; - extern s16 D_801A1904; - extern s16 D_801A18FC; - extern u16 D_801845E0; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801A18AC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801A18B4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_801845E0)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_801845E0)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801A1904) = loc0; - (*(SV4_8017B368 *)&D_801A18FC) = loc1; - D_801A1A30 = 1; - D_801A188C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_801845E0[]; - extern s16 D_801A1904; - extern s16 D_801A1906; - extern s16 D_801A1908; - extern s16 D_801A18FC; - extern s16 D_801A18FE; - extern s16 D_801A1900; - 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_801845E0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801845E0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A1904; - s16 *p78C = &D_801A18FC; - *(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_801A1906; - v798 = D_801A1908; - v78C = *p78C; - v78E = D_801A18FE; - v790 = D_801A1900; - __asm__ __volatile__(""); - D_801A1A30 = 1; - D_801A188C = 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_801A188C; -extern s16 D_801A1904; -extern s16 D_801A1906; -extern s16 D_801A1908; -extern s16 D_801A18FC; -extern s16 D_801A18FE; -extern s16 D_801A1900; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801A188C = 0; - D_801A1904 = (s16) D_80114F30; - D_801A1906 = (s16) D_80114F34; - D_801A1908 = (s16) D_80114F38; - D_801A18FC = (s16) D_80114F24; - D_801A18FE = (s16) D_80114F28; - D_801A1900 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801A191C; -extern s16 D_801A191E; -extern s16 D_801A1920; -extern s16 D_801A1924; -extern s16 D_801A1926; -extern s16 D_801A1928; - -void func_8017B824(void) { - D_801A191C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801A191E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801A1920 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801A1924 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801A1926 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801A1928 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801A191C; -extern s16 D_801A191E; -extern s16 D_801A1920; -extern s16 D_801A1924; -extern s16 D_801A1926; -extern s16 D_801A1928; - -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_801A191C; - D_80114F34 = D_801A191E; - D_80114F38 = D_801A1920; - D_80114F24 = D_801A1924; - D_80114F28 = D_801A1926; - D_80114F2C = D_801A1928; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801A1904), src[8..15] -> (*(S8_8017B8E8 *)&D_801A18FC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801A1904) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801A18FC) = ((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_801A190C; -extern u16 D_801A190E; -extern u16 D_801A1910; - -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_801A188C; -extern short D_801A1914; -extern short D_801A1916; -extern short D_801A1918; -extern s16 D_801A1904; -extern s16 D_801A1906; -extern s16 D_801A1908; -extern s16 D_801A18FC; -extern s16 D_801A18FE; -extern s16 D_801A1900; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A190C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A190E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A1910); - (*(s16 *)&D_801A1914) = buf[0]; - (*(s16 *)&D_801A1916) = buf[1]; - (*(s16 *)&D_801A1918) = buf[2]; - D_801A1904 = D_80114F30 + buf[0]; - D_801A188C = 0; - D_801A1906 = D_80114F34 + buf[1]; - D_801A1908 = D_80114F38 + buf[2]; - D_801A18FC = D_80114F24 + buf[0]; - D_801A18FE = D_80114F28 + buf[1]; - D_801A1900 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801A18AC; -extern SV4 D_801A18B4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A18B4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801A18AC = 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_801A18B4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A18B4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801A18AC) = 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_801A18B4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801A18D4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801A18D4; - 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_801A188C; -extern s16 D_801A1A30; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801A188C = D_801A188C + 1; - if (D_801A188C >= 0x1F) { - D_801A1A30 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801A188C; -extern s16 D_801A1A30; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801A188C = D_801A188C + 1; - if (0x18 < D_801A188C) { - func_8012A4BC(); - D_801A1A30 = 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_801A188C; -extern void (*D_801A18D0)(void); -extern short D_801A1914; -extern short D_801A1916; -extern short D_801A1918; -extern s16 D_801A1A30; - -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_801A188C = D_801A188C + 1; - if (D_801A188C >= 0x19) { - if (D_801A18D0 != 0) { - (*D_801A18D0)(); - } else { - D_80114F30 = D_80114F30 + D_801A1914; - D_80114F34 = D_80114F34 + D_801A1916; - D_80114F38 = D_80114F38 + D_801A1918; - D_80114F24 = D_80114F24 + D_801A1914; - D_80114F28 = D_80114F28 + D_801A1916; - D_80114F2C = D_80114F2C + D_801A1918; - func_8012A4BC(); - } - D_801A1A30 = 0; - } -} - - - -extern void (*D_80184680[])(void); - -void func_8017BE60(void *a0) { - D_80184680[*(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) */ diff --git a/src/ov_SC03_108/ov_SC03_108_jr_8017AE2C.c b/src/ov_SC03_108/ov_SC03_108_jr_8017AE2C.c new file mode 100644 index 000000000..b2e0d8c64 --- /dev/null +++ b/src/ov_SC03_108/ov_SC03_108_jr_8017AE2C.c @@ -0,0 +1,3470 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801831D8; +extern u8 D_80183148; +extern u8 D_80183124; +extern u8 D_80183100; +extern u8 D_801831B4; +extern u8 D_80183190; +extern u8 D_8018316C; +extern u8 D_801830DC; +extern void func_80145934(void); +extern u8 D_80183268; +extern u8 D_80183244; +extern u8 D_80183220; +extern u8 D_801831FC; +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_80182660[]; +extern unsigned char D_80182690[]; +extern unsigned char D_801826E0[]; +extern unsigned char D_80182710[]; +extern unsigned char D_80182740[]; +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(void); +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_80182790[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80182858[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801828E0[]; +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_801828E8; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801A0788; +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_801A078C; +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_80182918; +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 void 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_801829C0[])(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_801829E4[])(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_801829D4; +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_801829F8[])(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_80182A04[]; +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_80182A14[])(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_80182A2C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80182A1C; +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_80182A40[])(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_80182A5C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80182A4C; +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_80182A70[])(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_80182A84[])(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_80182A98; +extern void (*D_80182AC0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80182AA0; +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_80182B0C[])(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_80182B10[])(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(void *a0); +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_80182F74[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80182F84[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801A07C0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80182FAC[])(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_80182F8C; +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_80182F9C; +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_80182FEC[])(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_80182FF4[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80182FC0; +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_80183000[])(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_80182FD0; +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_801A07C8; +extern s32 D_801A07D4; +extern s32 D_801A07D8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018303C[])(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_80183010[]; +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_801A07D0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018328C[])(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_801830AC[]; +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_80183330[])(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_80183484[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801832A0; +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_8018348C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801832B0; +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_801832D0; +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_80183494[])(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(void); +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_801834BC[])(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_801834C8[])(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_8018333C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018356C; +extern void func_8015D380(s32 a0); +extern unsigned char D_80182650[]; +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_80183580[]; +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_801835BC[]; +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_80183604; +extern u16 D_80183606; +extern u16 D_80183608; +extern s32 D_8018360C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80183614; +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_80183320; +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_80183698[]; +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_80183748[])(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_80183778[]; +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_801837DC; +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_801A07E0[]; +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_80183800[])(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_801A0838[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80183848[])(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_80183838; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8019FFB0[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_80183850[])(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_801838A4[])(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_8018386C; +extern s16 D_801838A0; +extern s16 D_8018389E; +extern s16 D_8018389C; +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_801838B0[])(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_801A0898; +extern u8 D_801A0899; +extern u8 D_801A089A; +extern u8 D_801A089B; +extern u8 D_801A089C; +extern u8 D_801A089D; +extern u8 D_801A089E; +extern u8 D_801A089F; +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_801838C0[])(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_801A08D8; +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_80183904[])(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_80183980[]; +extern s32 D_801839A0[]; +extern u8 D_80183A1C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80183A3C[]; +extern u8 D_80183A5C[]; +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_80183AF8[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80183B74[])(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_8019FFC0; +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_80183B80[])(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_80183B88[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80183C50[])(void); +extern void func_80166618(void *a0); +extern void (*D_80183C60[])(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_80183C70[])(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_80183C7C[])(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_80183BDC[]; +extern u8 D_80183BF0[]; +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_80183C94[])(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_80183C9C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80183CA4[])(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_80183CAC[])(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_80183CB4[])(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_80183CBC[])(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_80183CC4[])(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_80183D78[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80183D80[])(void); +extern void func_80169F00(void *a0); +extern char D_80183D30[]; +extern char D_80183CF0[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80183DB8[])(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_80183DC4[])(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_80183E0C[])(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_80183E88[])(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_801A0BF8; +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_80183E7C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80183EC0[]; +extern unsigned short D_80183EC8[]; +extern unsigned short D_80183ED0[]; +extern unsigned char D_801A0C00[]; +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_801A0BF8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80183ED8[])(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_801A0D34; +extern M2C_UNK D_801A0D38; +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_801A0CC0; +extern void (*D_80183F08[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801A0D3C[]; +extern u8 D_801A0D44[]; +extern u8 D_801A0CF4[]; +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_80183F10[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80183F2C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80183F34[])(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_80183F9C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80183F40; +extern u8 D_80183F4C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80183FD0[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80183FD8[])(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_8018402C[])(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_80184060[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80184050[]; +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_8018407C; +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); +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_801840F4[])(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_801840FC[])(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_80184104[])(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_8018410C[])(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_80184114[])(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_8018411C[])(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_80184128[])(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_80184134[])(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_80184140[])(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_80184150[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80184160[])(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_80184168[])(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_80184170[])(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_80184178[])(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_80184180[])(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_80184188[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80184190[])(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_80184198[])(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_801841A0[])(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_801841A8[])(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_801841B0[])(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_801841B8[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801841C0[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801841C8[])(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_801841D0[])(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_801841D8[])(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_801841E0[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801841E8[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801841F0[])(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_801841F8[])(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_80184200[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80184208[])(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_80184210[])(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_80184254[])(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_80184218; +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_80184284[])(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_801842C0[])(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(s32); +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_80184318[])(); +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_80184328[])(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_80184330[])(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_80184498[])(); +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_801844A4[])(); +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_801A0208; +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 int func_801789AC(void); +extern s16 D_801A1A30; +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_801A1478; +extern short D_801A1AA4; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801A18A4; +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_801A18CC; +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_801A1888; +extern s32 func_8017A3B0(void); +extern short D_801A18C4; +extern short D_801A18C0; +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_801A1A00; +extern s16 D_801A1A02; +extern s16 D_801A1A0C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801A1A00; + + 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_801A1A0C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801A1A00+0xC == &D_801A1A0C; 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_801A1A00 + 0xC)) < 0x101) { + D_801A1A00 = 0; + D_801A1A02 = 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_801A1A0C); + 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_801A1A00 + 0xC)) < 0x101) { + D_801A1A00 = 0; + D_801A1A02 = 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_801A1904; + extern s16 D_801A1906; + extern s16 D_801A1908; + extern s16 D_801A18FC; + extern s16 D_801A18FE; + extern s16 D_801A1900; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A1904, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A1906, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A1908, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A18FC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A18FE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A1900, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801A188C; +extern u16 D_801A190C; +extern u16 D_801A190E; +extern u16 D_801A1910; +extern s16 D_801A1A30; + +void func_8017B1D8(void) { + func_8012A418(); + D_801A1A30 = 0; + D_801A188C = 0; + D_801A190C = D_80126B5E; + D_801A190E = D_80126B62; + D_801A1910 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_801845E0[]; + extern s16 D_801A1904; + extern s16 D_801A18FC; + 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_801845E0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801845E0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A1904; + s16 *p78C = &D_801A18FC; + *(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_801A1A30 = 1; + D_801A188C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A18AC; + extern SV4_8017B368 D_801A18B4; + extern s16 D_801A1904; + extern s16 D_801A18FC; + extern u16 D_801845E0; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801A18AC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801A18B4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_801845E0)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_801845E0)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801A1904) = loc0; + (*(SV4_8017B368 *)&D_801A18FC) = loc1; + D_801A1A30 = 1; + D_801A188C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_801845E0[]; + extern s16 D_801A1904; + extern s16 D_801A1906; + extern s16 D_801A1908; + extern s16 D_801A18FC; + extern s16 D_801A18FE; + extern s16 D_801A1900; + 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_801845E0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801845E0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A1904; + s16 *p78C = &D_801A18FC; + *(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_801A1906; + v798 = D_801A1908; + v78C = *p78C; + v78E = D_801A18FE; + v790 = D_801A1900; + __asm__ __volatile__(""); + D_801A1A30 = 1; + D_801A188C = 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_801A188C; +extern s16 D_801A1904; +extern s16 D_801A1906; +extern s16 D_801A1908; +extern s16 D_801A18FC; +extern s16 D_801A18FE; +extern s16 D_801A1900; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801A188C = 0; + D_801A1904 = (s16) D_80114F30; + D_801A1906 = (s16) D_80114F34; + D_801A1908 = (s16) D_80114F38; + D_801A18FC = (s16) D_80114F24; + D_801A18FE = (s16) D_80114F28; + D_801A1900 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801A191C; +extern s16 D_801A191E; +extern s16 D_801A1920; +extern s16 D_801A1924; +extern s16 D_801A1926; +extern s16 D_801A1928; + +void func_8017B824(void) { + D_801A191C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801A191E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801A1920 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801A1924 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801A1926 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801A1928 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801A191C; +extern s16 D_801A191E; +extern s16 D_801A1920; +extern s16 D_801A1924; +extern s16 D_801A1926; +extern s16 D_801A1928; + +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_801A191C; + D_80114F34 = D_801A191E; + D_80114F38 = D_801A1920; + D_80114F24 = D_801A1924; + D_80114F28 = D_801A1926; + D_80114F2C = D_801A1928; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801A1904), src[8..15] -> (*(S8_8017B8E8 *)&D_801A18FC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801A1904) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801A18FC) = ((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_801A190C; +extern u16 D_801A190E; +extern u16 D_801A1910; + +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_801A188C; +extern short D_801A1914; +extern short D_801A1916; +extern short D_801A1918; +extern s16 D_801A1904; +extern s16 D_801A1906; +extern s16 D_801A1908; +extern s16 D_801A18FC; +extern s16 D_801A18FE; +extern s16 D_801A1900; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A190C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A190E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A1910); + (*(s16 *)&D_801A1914) = buf[0]; + (*(s16 *)&D_801A1916) = buf[1]; + (*(s16 *)&D_801A1918) = buf[2]; + D_801A1904 = D_80114F30 + buf[0]; + D_801A188C = 0; + D_801A1906 = D_80114F34 + buf[1]; + D_801A1908 = D_80114F38 + buf[2]; + D_801A18FC = D_80114F24 + buf[0]; + D_801A18FE = D_80114F28 + buf[1]; + D_801A1900 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801A18AC; +extern SV4 D_801A18B4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A18B4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801A18AC = 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_801A18B4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A18B4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801A18AC) = 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_801A18B4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801A18D4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801A18D4; + 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_801A188C; +extern s16 D_801A1A30; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801A188C = D_801A188C + 1; + if (D_801A188C >= 0x1F) { + D_801A1A30 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801A188C; +extern s16 D_801A1A30; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801A188C = D_801A188C + 1; + if (0x18 < D_801A188C) { + func_8012A4BC(); + D_801A1A30 = 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_801A188C; +extern void (*D_801A18D0)(void); +extern short D_801A1914; +extern short D_801A1916; +extern short D_801A1918; +extern s16 D_801A1A30; + +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_801A188C = D_801A188C + 1; + if (D_801A188C >= 0x19) { + if (D_801A18D0 != 0) { + (*D_801A18D0)(); + } else { + D_80114F30 = D_80114F30 + D_801A1914; + D_80114F34 = D_80114F34 + D_801A1916; + D_80114F38 = D_80114F38 + D_801A1918; + D_80114F24 = D_80114F24 + D_801A1914; + D_80114F28 = D_80114F28 + D_801A1916; + D_80114F2C = D_80114F2C + D_801A1918; + func_8012A4BC(); + } + D_801A1A30 = 0; + } +} + + + +extern void (*D_80184680[])(void); + +void func_8017BE60(void *a0) { + D_80184680[*(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) */ + diff --git a/src/ov_SC03_109/ov_SC03_109_jr_8017A4AC.c b/src/ov_SC03_109/ov_SC03_109_jr_8017A4AC.c index 0591bf32b..2dfa3863a 100644 --- a/src/ov_SC03_109/ov_SC03_109_jr_8017A4AC.c +++ b/src/ov_SC03_109/ov_SC03_109_jr_8017A4AC.c @@ -2967,586 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8019A314; - extern s16 D_8019A316; - extern s16 D_8019A318; - extern s16 D_8019A30C; - extern s16 D_8019A30E; - extern s16 D_8019A310; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019A314, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019A316, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019A318, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019A30C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019A30E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019A310, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8019A29C; -extern u16 D_8019A31C; -extern u16 D_8019A31E; -extern u16 D_8019A320; -extern s16 D_8019A438; - -void func_8017B1D8(void) { - func_8012A418(); - D_8019A438 = 0; - D_8019A29C = 0; - D_8019A31C = D_80126B5E; - D_8019A31E = D_80126B62; - D_8019A320 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80181C8C[]; - extern s16 D_8019A314; - extern s16 D_8019A30C; - 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_80181C8C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80181C8C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019A314; - s16 *p78C = &D_8019A30C; - *(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_8019A438 = 1; - D_8019A29C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019A2BC; - extern SV4_8017B368 D_8019A2C4; - extern s16 D_8019A314; - extern s16 D_8019A30C; - extern u16 D_80181C8C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8019A2BC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8019A2C4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80181C8C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80181C8C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8019A314) = loc0; - (*(SV4_8017B368 *)&D_8019A30C) = loc1; - D_8019A438 = 1; - D_8019A29C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80181C8C[]; - extern s16 D_8019A314; - extern s16 D_8019A316; - extern s16 D_8019A318; - extern s16 D_8019A30C; - extern s16 D_8019A30E; - extern s16 D_8019A310; - 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_80181C8C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80181C8C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019A314; - s16 *p78C = &D_8019A30C; - *(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_8019A316; - v798 = D_8019A318; - v78C = *p78C; - v78E = D_8019A30E; - v790 = D_8019A310; - __asm__ __volatile__(""); - D_8019A438 = 1; - D_8019A29C = 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_8019A29C; -extern s16 D_8019A314; -extern s16 D_8019A316; -extern s16 D_8019A318; -extern s16 D_8019A30C; -extern s16 D_8019A30E; -extern s16 D_8019A310; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8019A29C = 0; - D_8019A314 = (s16) D_80114F30; - D_8019A316 = (s16) D_80114F34; - D_8019A318 = (s16) D_80114F38; - D_8019A30C = (s16) D_80114F24; - D_8019A30E = (s16) D_80114F28; - D_8019A310 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8019A32C; -extern s16 D_8019A32E; -extern s16 D_8019A330; -extern s16 D_8019A334; -extern s16 D_8019A336; -extern s16 D_8019A338; - -void func_8017B824(void) { - D_8019A32C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8019A32E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8019A330 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8019A334 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8019A336 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8019A338 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8019A32C; -extern s16 D_8019A32E; -extern s16 D_8019A330; -extern s16 D_8019A334; -extern s16 D_8019A336; -extern s16 D_8019A338; - -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_8019A32C; - D_80114F34 = D_8019A32E; - D_80114F38 = D_8019A330; - D_80114F24 = D_8019A334; - D_80114F28 = D_8019A336; - D_80114F2C = D_8019A338; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8019A314), src[8..15] -> (*(S8_8017B8E8 *)&D_8019A30C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8019A314) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8019A30C) = ((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_8019A31C; -extern u16 D_8019A31E; -extern u16 D_8019A320; - -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_8019A29C; -extern short D_8019A324; -extern short D_8019A326; -extern short D_8019A328; -extern s16 D_8019A314; -extern s16 D_8019A316; -extern s16 D_8019A318; -extern s16 D_8019A30C; -extern s16 D_8019A30E; -extern s16 D_8019A310; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019A31C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019A31E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019A320); - (*(s16 *)&D_8019A324) = buf[0]; - (*(s16 *)&D_8019A326) = buf[1]; - (*(s16 *)&D_8019A328) = buf[2]; - D_8019A314 = D_80114F30 + buf[0]; - D_8019A29C = 0; - D_8019A316 = D_80114F34 + buf[1]; - D_8019A318 = D_80114F38 + buf[2]; - D_8019A30C = D_80114F24 + buf[0]; - D_8019A30E = D_80114F28 + buf[1]; - D_8019A310 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8019A2BC; -extern SV4 D_8019A2C4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019A2C4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8019A2BC = 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_8019A2C4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019A2C4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8019A2BC) = 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_8019A2C4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8019A2E4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8019A2E4; - 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_8019A29C; -extern s16 D_8019A438; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8019A29C = D_8019A29C + 1; - if (D_8019A29C >= 0x1F) { - D_8019A438 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8019A29C; -extern s16 D_8019A438; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8019A29C = D_8019A29C + 1; - if (0x18 < D_8019A29C) { - func_8012A4BC(); - D_8019A438 = 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_8019A29C; -extern void (*D_8019A2E0)(void); -extern short D_8019A324; -extern short D_8019A326; -extern short D_8019A328; -extern s16 D_8019A438; - -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_8019A29C = D_8019A29C + 1; - if (D_8019A29C >= 0x19) { - if (D_8019A2E0 != 0) { - (*D_8019A2E0)(); - } else { - D_80114F30 = D_80114F30 + D_8019A324; - D_80114F34 = D_80114F34 + D_8019A326; - D_80114F38 = D_80114F38 + D_8019A328; - D_80114F24 = D_80114F24 + D_8019A324; - D_80114F28 = D_80114F28 + D_8019A326; - D_80114F2C = D_80114F2C + D_8019A328; - func_8012A4BC(); - } - D_8019A438 = 0; - } -} - - - -extern void (*D_80181D2C[])(void); - -void func_8017BE60(void *a0) { - D_80181D2C[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_8017A4AC", func_8017BF88); - - -extern void (*D_80181D44[])(void); - -void func_8017C0E4(void *a0) { - D_80181D44[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_8017A4AC", func_8017C120); diff --git a/src/ov_SC03_109/ov_SC03_109_jr_8017AE2C.c b/src/ov_SC03_109/ov_SC03_109_jr_8017AE2C.c new file mode 100644 index 000000000..1d34f82e8 --- /dev/null +++ b/src/ov_SC03_109/ov_SC03_109_jr_8017AE2C.c @@ -0,0 +1,3484 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80180884; +extern u8 D_801807F4; +extern u8 D_801807D0; +extern u8 D_801807AC; +extern u8 D_80180860; +extern u8 D_8018083C; +extern u8 D_80180818; +extern u8 D_80180788; +extern void func_80145934(void); +extern u8 D_80180914; +extern u8 D_801808F0; +extern u8 D_801808CC; +extern u8 D_801808A8; +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_8017FD0C[]; +extern unsigned char D_8017FD3C[]; +extern unsigned char D_8017FD8C[]; +extern unsigned char D_8017FDBC[]; +extern unsigned char D_8017FDEC[]; +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(void); +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_8017FE3C[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8017FF04[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8017FF8C[]; +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_8017FF94; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_80199198; +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_8019919C; +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_8017FFC4; +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 void 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_8018006C[])(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_80180090[])(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_80180080; +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_801800A4[])(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_801800B0[]; +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_801800C0[])(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_801800D8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801800C8; +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_801800EC[])(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_80180108[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801800F8; +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_8018011C[])(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_80180130[])(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_80180144; +extern void (*D_8018016C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018014C; +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_801801B8[])(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_801801BC[])(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(void *a0); +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_80180620[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80180630[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801991D0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180658[])(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_80180638; +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_80180648; +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_80180698[])(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_801806A0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018066C; +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_801806AC[])(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_8018067C; +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_801991D8; +extern s32 D_801991E4; +extern s32 D_801991E8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801806E8[])(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_801806BC[]; +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_801991E0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80180938[])(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_80180758[]; +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_801809DC[])(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_80180B30[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018094C; +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_80180B38[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018095C; +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_8018097C; +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_80180B40[])(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(void); +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_80180B68[])(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_80180B74[])(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_801809E8[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80180C18; +extern void func_8015D380(s32 a0); +extern unsigned char D_8017FCFC[]; +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_80180C2C[]; +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_80180C68[]; +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_80180CB0; +extern u16 D_80180CB2; +extern u16 D_80180CB4; +extern s32 D_80180CB8; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80180CC0; +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_801809CC; +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_80180D44[]; +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_80180DF4[])(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_80180E24[]; +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_80180E88; +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_801991F0[]; +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_80180EAC[])(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_80199248[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80180EF4[])(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_80180EE4; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_80198AC0[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_80180EFC[])(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_80180F50[])(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_80180F18; +extern s16 D_80180F4C; +extern s16 D_80180F4A; +extern s16 D_80180F48; +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_80180F5C[])(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_801992A8; +extern u8 D_801992A9; +extern u8 D_801992AA; +extern u8 D_801992AB; +extern u8 D_801992AC; +extern u8 D_801992AD; +extern u8 D_801992AE; +extern u8 D_801992AF; +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_80180F6C[])(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_801992E8; +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_80180FB0[])(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_8018102C[]; +extern s32 D_8018104C[]; +extern u8 D_801810C8[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801810E8[]; +extern u8 D_80181108[]; +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_801811A4[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80181220[])(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_80198AD0; +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_8018122C[])(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_80181234[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801812FC[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018130C[])(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_8018131C[])(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_80181328[])(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_80181288[]; +extern u8 D_8018129C[]; +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_80181340[])(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_80181348[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80181350[])(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_80181358[])(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_80181360[])(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_80181368[])(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_80181370[])(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_80181424[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018142C[])(void); +extern void func_80169F00(void *a0); +extern char D_801813DC[]; +extern char D_8018139C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80181464[])(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_80181470[])(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_801814B8[])(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_80181534[])(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_80199608; +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_80181528[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018156C[]; +extern unsigned short D_80181574[]; +extern unsigned short D_8018157C[]; +extern unsigned char D_80199610[]; +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_80199608; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80181584[])(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_80199744; +extern M2C_UNK D_80199748; +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_801996D0; +extern void (*D_801815B4[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8019974C[]; +extern u8 D_80199754[]; +extern u8 D_80199704[]; +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_801815BC[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801815D8[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801815E0[])(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_80181648[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801815EC; +extern u8 D_801815F8; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018167C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80181684[])(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_801816D8[])(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_8018170C[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801816FC[]; +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_80181728; +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); +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_801817A0[])(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_801817A8[])(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_801817B0[])(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_801817B8[])(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_801817C0[])(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_801817C8[])(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_801817D4[])(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_801817E0[])(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_801817EC[])(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_801817FC[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018180C[])(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_80181814[])(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_8018181C[])(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_80181824[])(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_8018182C[])(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_80181834[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018183C[])(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_80181844[])(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_8018184C[])(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_80181854[])(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_8018185C[])(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_80181864[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018186C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80181874[])(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_8018187C[])(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_80181884[])(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_8018188C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80181894[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018189C[])(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_801818A4[])(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_801818AC[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801818B4[])(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_801818BC[])(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_80181900[])(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_801818C4; +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_80181930[])(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_8018196C[])(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(s32); +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_801819C4[])(); +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_801819D4[])(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_801819DC[])(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_80181B44[])(); +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_80181B50[])(); +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_80198D18; +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 int func_801789AC(void); +extern s16 D_8019A438; +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_80199E88; +extern short D_8019A4AC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8019A2B4; +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_8019A2DC; +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_8019A298; +extern s32 func_8017A3B0(void); +extern short D_8019A2D4; +extern short D_8019A2D0; +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_8019A408; +extern s16 D_8019A40A; +extern s16 D_8019A414; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_8019A408; + + 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_8019A414); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_8019A408+0xC == &D_8019A414; 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_8019A408 + 0xC)) < 0x101) { + D_8019A408 = 0; + D_8019A40A = 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_8019A414); + 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_8019A408 + 0xC)) < 0x101) { + D_8019A408 = 0; + D_8019A40A = 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_8019A314; + extern s16 D_8019A316; + extern s16 D_8019A318; + extern s16 D_8019A30C; + extern s16 D_8019A30E; + extern s16 D_8019A310; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019A314, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019A316, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019A318, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019A30C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019A30E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019A310, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8019A29C; +extern u16 D_8019A31C; +extern u16 D_8019A31E; +extern u16 D_8019A320; +extern s16 D_8019A438; + +void func_8017B1D8(void) { + func_8012A418(); + D_8019A438 = 0; + D_8019A29C = 0; + D_8019A31C = D_80126B5E; + D_8019A31E = D_80126B62; + D_8019A320 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80181C8C[]; + extern s16 D_8019A314; + extern s16 D_8019A30C; + 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_80181C8C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80181C8C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019A314; + s16 *p78C = &D_8019A30C; + *(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_8019A438 = 1; + D_8019A29C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019A2BC; + extern SV4_8017B368 D_8019A2C4; + extern s16 D_8019A314; + extern s16 D_8019A30C; + extern u16 D_80181C8C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8019A2BC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8019A2C4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80181C8C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80181C8C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8019A314) = loc0; + (*(SV4_8017B368 *)&D_8019A30C) = loc1; + D_8019A438 = 1; + D_8019A29C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80181C8C[]; + extern s16 D_8019A314; + extern s16 D_8019A316; + extern s16 D_8019A318; + extern s16 D_8019A30C; + extern s16 D_8019A30E; + extern s16 D_8019A310; + 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_80181C8C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80181C8C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019A314; + s16 *p78C = &D_8019A30C; + *(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_8019A316; + v798 = D_8019A318; + v78C = *p78C; + v78E = D_8019A30E; + v790 = D_8019A310; + __asm__ __volatile__(""); + D_8019A438 = 1; + D_8019A29C = 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_8019A29C; +extern s16 D_8019A314; +extern s16 D_8019A316; +extern s16 D_8019A318; +extern s16 D_8019A30C; +extern s16 D_8019A30E; +extern s16 D_8019A310; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8019A29C = 0; + D_8019A314 = (s16) D_80114F30; + D_8019A316 = (s16) D_80114F34; + D_8019A318 = (s16) D_80114F38; + D_8019A30C = (s16) D_80114F24; + D_8019A30E = (s16) D_80114F28; + D_8019A310 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8019A32C; +extern s16 D_8019A32E; +extern s16 D_8019A330; +extern s16 D_8019A334; +extern s16 D_8019A336; +extern s16 D_8019A338; + +void func_8017B824(void) { + D_8019A32C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8019A32E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8019A330 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8019A334 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8019A336 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8019A338 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8019A32C; +extern s16 D_8019A32E; +extern s16 D_8019A330; +extern s16 D_8019A334; +extern s16 D_8019A336; +extern s16 D_8019A338; + +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_8019A32C; + D_80114F34 = D_8019A32E; + D_80114F38 = D_8019A330; + D_80114F24 = D_8019A334; + D_80114F28 = D_8019A336; + D_80114F2C = D_8019A338; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8019A314), src[8..15] -> (*(S8_8017B8E8 *)&D_8019A30C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8019A314) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8019A30C) = ((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_8019A31C; +extern u16 D_8019A31E; +extern u16 D_8019A320; + +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_8019A29C; +extern short D_8019A324; +extern short D_8019A326; +extern short D_8019A328; +extern s16 D_8019A314; +extern s16 D_8019A316; +extern s16 D_8019A318; +extern s16 D_8019A30C; +extern s16 D_8019A30E; +extern s16 D_8019A310; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019A31C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019A31E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019A320); + (*(s16 *)&D_8019A324) = buf[0]; + (*(s16 *)&D_8019A326) = buf[1]; + (*(s16 *)&D_8019A328) = buf[2]; + D_8019A314 = D_80114F30 + buf[0]; + D_8019A29C = 0; + D_8019A316 = D_80114F34 + buf[1]; + D_8019A318 = D_80114F38 + buf[2]; + D_8019A30C = D_80114F24 + buf[0]; + D_8019A30E = D_80114F28 + buf[1]; + D_8019A310 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8019A2BC; +extern SV4 D_8019A2C4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019A2C4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8019A2BC = 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_8019A2C4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019A2C4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8019A2BC) = 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_8019A2C4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8019A2E4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8019A2E4; + 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_8019A29C; +extern s16 D_8019A438; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8019A29C = D_8019A29C + 1; + if (D_8019A29C >= 0x1F) { + D_8019A438 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8019A29C; +extern s16 D_8019A438; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8019A29C = D_8019A29C + 1; + if (0x18 < D_8019A29C) { + func_8012A4BC(); + D_8019A438 = 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_8019A29C; +extern void (*D_8019A2E0)(void); +extern short D_8019A324; +extern short D_8019A326; +extern short D_8019A328; +extern s16 D_8019A438; + +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_8019A29C = D_8019A29C + 1; + if (D_8019A29C >= 0x19) { + if (D_8019A2E0 != 0) { + (*D_8019A2E0)(); + } else { + D_80114F30 = D_80114F30 + D_8019A324; + D_80114F34 = D_80114F34 + D_8019A326; + D_80114F38 = D_80114F38 + D_8019A328; + D_80114F24 = D_80114F24 + D_8019A324; + D_80114F28 = D_80114F28 + D_8019A326; + D_80114F2C = D_80114F2C + D_8019A328; + func_8012A4BC(); + } + D_8019A438 = 0; + } +} + + + +extern void (*D_80181D2C[])(void); + +void func_8017BE60(void *a0) { + D_80181D2C[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_8017AE2C", func_8017BF88); + + +extern void (*D_80181D44[])(void); + +void func_8017C0E4(void *a0) { + D_80181D44[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_8017AE2C", func_8017C120); + diff --git a/src/ov_SC03_110/ov_SC03_110_jr_8017A4AC.c b/src/ov_SC03_110/ov_SC03_110_jr_8017A4AC.c index d02169d52..fbbb1c34a 100644 --- a/src/ov_SC03_110/ov_SC03_110_jr_8017A4AC.c +++ b/src/ov_SC03_110/ov_SC03_110_jr_8017A4AC.c @@ -2967,664 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801A20BC; - extern s16 D_801A20BE; - extern s16 D_801A20C0; - extern s16 D_801A20B4; - extern s16 D_801A20B6; - extern s16 D_801A20B8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A20BC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A20BE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A20C0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A20B4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A20B6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A20B8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801A2044; -extern u16 D_801A20C4; -extern u16 D_801A20C6; -extern u16 D_801A20C8; -extern s16 D_801A2468; - -void func_8017B1D8(void) { - func_8012A418(); - D_801A2468 = 0; - D_801A2044 = 0; - D_801A20C4 = D_80126B5E; - D_801A20C6 = D_80126B62; - D_801A20C8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_801856AC[]; - extern s16 D_801A20BC; - extern s16 D_801A20B4; - 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_801856AC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801856AC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A20BC; - s16 *p78C = &D_801A20B4; - *(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_801A2468 = 1; - D_801A2044 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A2064; - extern SV4_8017B368 D_801A206C; - extern s16 D_801A20BC; - extern s16 D_801A20B4; - extern u16 D_801856AC; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801A2064; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801A206C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_801856AC)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_801856AC)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801A20BC) = loc0; - (*(SV4_8017B368 *)&D_801A20B4) = loc1; - D_801A2468 = 1; - D_801A2044 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_801856AC[]; - extern s16 D_801A20BC; - extern s16 D_801A20BE; - extern s16 D_801A20C0; - extern s16 D_801A20B4; - extern s16 D_801A20B6; - extern s16 D_801A20B8; - 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_801856AC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801856AC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A20BC; - s16 *p78C = &D_801A20B4; - *(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_801A20BE; - v798 = D_801A20C0; - v78C = *p78C; - v78E = D_801A20B6; - v790 = D_801A20B8; - __asm__ __volatile__(""); - D_801A2468 = 1; - D_801A2044 = 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_801A2044; -extern s16 D_801A20BC; -extern s16 D_801A20BE; -extern s16 D_801A20C0; -extern s16 D_801A20B4; -extern s16 D_801A20B6; -extern s16 D_801A20B8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801A2044 = 0; - D_801A20BC = (s16) D_80114F30; - D_801A20BE = (s16) D_80114F34; - D_801A20C0 = (s16) D_80114F38; - D_801A20B4 = (s16) D_80114F24; - D_801A20B6 = (s16) D_80114F28; - D_801A20B8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801A20D4; -extern s16 D_801A20D6; -extern s16 D_801A20D8; -extern s16 D_801A20DC; -extern s16 D_801A20DE; -extern s16 D_801A20E0; - -void func_8017B824(void) { - D_801A20D4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801A20D6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801A20D8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801A20DC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801A20DE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801A20E0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801A20D4; -extern s16 D_801A20D6; -extern s16 D_801A20D8; -extern s16 D_801A20DC; -extern s16 D_801A20DE; -extern s16 D_801A20E0; - -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_801A20D4; - D_80114F34 = D_801A20D6; - D_80114F38 = D_801A20D8; - D_80114F24 = D_801A20DC; - D_80114F28 = D_801A20DE; - D_80114F2C = D_801A20E0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801A20BC), src[8..15] -> (*(S8_8017B8E8 *)&D_801A20B4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801A20BC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801A20B4) = ((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_801A20C4; -extern u16 D_801A20C6; -extern u16 D_801A20C8; - -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_801A2044; -extern short D_801A20CC; -extern short D_801A20CE; -extern short D_801A20D0; -extern s16 D_801A20BC; -extern s16 D_801A20BE; -extern s16 D_801A20C0; -extern s16 D_801A20B4; -extern s16 D_801A20B6; -extern s16 D_801A20B8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A20C4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A20C6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A20C8); - (*(s16 *)&D_801A20CC) = buf[0]; - (*(s16 *)&D_801A20CE) = buf[1]; - (*(s16 *)&D_801A20D0) = buf[2]; - D_801A20BC = D_80114F30 + buf[0]; - D_801A2044 = 0; - D_801A20BE = D_80114F34 + buf[1]; - D_801A20C0 = D_80114F38 + buf[2]; - D_801A20B4 = D_80114F24 + buf[0]; - D_801A20B6 = D_80114F28 + buf[1]; - D_801A20B8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801A2064; -extern SV4 D_801A206C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A206C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801A2064 = 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_801A206C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A206C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801A2064) = 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_801A206C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801A208C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801A208C; - 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_801A2044; -extern s16 D_801A2468; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801A2044 = D_801A2044 + 1; - if (D_801A2044 >= 0x1F) { - D_801A2468 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801A2044; -extern s16 D_801A2468; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801A2044 = D_801A2044 + 1; - if (0x18 < D_801A2044) { - func_8012A4BC(); - D_801A2468 = 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_801A2044; -extern void (*D_801A2088)(void); -extern short D_801A20CC; -extern short D_801A20CE; -extern short D_801A20D0; -extern s16 D_801A2468; - -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_801A2044 = D_801A2044 + 1; - if (D_801A2044 >= 0x19) { - if (D_801A2088 != 0) { - (*D_801A2088)(); - } else { - D_80114F30 = D_80114F30 + D_801A20CC; - D_80114F34 = D_80114F34 + D_801A20CE; - D_80114F38 = D_80114F38 + D_801A20D0; - D_80114F24 = D_80114F24 + D_801A20CC; - D_80114F28 = D_80114F28 + D_801A20CE; - D_80114F2C = D_80114F2C + D_801A20D0; - func_8012A4BC(); - } - D_801A2468 = 0; - } -} - - - -extern void (*D_8018574C[])(void); - -void func_8017BE60(void *a0) { - D_8018574C[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017BFEC); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017C378); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017C5F0); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017C738); - - -extern void (*D_80185868[])(void); - -void func_8017C8B8(void *a0) { - D_80185868[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017C8F4); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017C940); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017CA34); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017CAB4); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017CB68); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017CBD4); - -extern void func_8012C218(void); -void func_8017CC60(void) { - func_8012C218(); -} - - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017CC80); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017CCD4); - - -extern void (*D_801858C0[])(void); - -void func_8017CD10(void *a0) { - D_801858C0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017CD4C); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017CD9C); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017CDF8); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017CE7C); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017CFE4); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017D030); - - -extern void (*D_801858D4[])(void); - -void func_8017D33C(void *a0) { - D_801858D4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017D378); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017D3B8); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017D428); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017D4B4); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017D588); - - -extern void (*D_801858E8[])(void); - -void func_8017D5DC(void *a0) { - D_801858E8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017D618); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017D6CC); - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017A4AC", func_8017D728); diff --git a/src/ov_SC03_110/ov_SC03_110_jr_8017AE2C.c b/src/ov_SC03_110/ov_SC03_110_jr_8017AE2C.c new file mode 100644 index 000000000..acd0df0f1 --- /dev/null +++ b/src/ov_SC03_110/ov_SC03_110_jr_8017AE2C.c @@ -0,0 +1,3562 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801842A4; +extern u8 D_80184214; +extern u8 D_801841F0; +extern u8 D_801841CC; +extern u8 D_80184280; +extern u8 D_8018425C; +extern u8 D_80184238; +extern u8 D_801841A8; +extern void func_80145934(void); +extern u8 D_80184334; +extern u8 D_80184310; +extern u8 D_801842EC; +extern u8 D_801842C8; +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_8018372C[]; +extern unsigned char D_8018375C[]; +extern unsigned char D_801837AC[]; +extern unsigned char D_801837DC[]; +extern unsigned char D_8018380C[]; +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(void); +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_8018385C[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80183924[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801839AC[]; +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_801839B4; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801A0F40; +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_801A0F44; +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_801839E4; +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 void 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_80183A8C[])(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_80183AB0[])(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_80183AA0; +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_80183AC4[])(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_80183AD0[]; +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_80183AE0[])(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_80183AF8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80183AE8; +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_80183B0C[])(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_80183B28[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80183B18; +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_80183B3C[])(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_80183B50[])(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_80183B64; +extern void (*D_80183B8C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80183B6C; +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_80183BD8[])(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_80183BDC[])(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(void *a0); +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_80184040[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80184050[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801A0F78; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184078[])(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_80184058; +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_80184068; +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_801840B8[])(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_801840C0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018408C; +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_801840CC[])(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_8018409C; +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_801A0F80; +extern s32 D_801A0F8C; +extern s32 D_801A0F90; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80184108[])(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_801840DC[]; +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_801A0F88; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80184358[])(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_80184178[]; +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_801843FC[])(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_80184550[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018436C; +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_80184558[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018437C; +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_8018439C; +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_80184560[])(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(void); +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_80184588[])(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_80184594[])(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_80184408[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80184638; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018371C[]; +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_8018464C[]; +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_80184688[]; +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_801846D0; +extern u16 D_801846D2; +extern u16 D_801846D4; +extern s32 D_801846D8; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_801846E0; +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_801843EC; +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_80184764[]; +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_80184814[])(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_80184844[]; +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_801848A8; +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_801A0F98[]; +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_801848CC[])(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_801A0FF0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80184914[])(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_80184904; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801A075C[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_8018491C[])(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_80184970[])(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_80184938; +extern s16 D_8018496C; +extern s16 D_8018496A; +extern s16 D_80184968; +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_8018497C[])(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_801A1050; +extern u8 D_801A1051; +extern u8 D_801A1052; +extern u8 D_801A1053; +extern u8 D_801A1054; +extern u8 D_801A1055; +extern u8 D_801A1056; +extern u8 D_801A1057; +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_8018498C[])(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_801A1090; +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_801849D0[])(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_80184A4C[]; +extern s32 D_80184A6C[]; +extern u8 D_80184AE8[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80184B08[]; +extern u8 D_80184B28[]; +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_80184BC4[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80184C40[])(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_801A076C; +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_80184C4C[])(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_80184C54[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80184D1C[])(void); +extern void func_80166618(void *a0); +extern void (*D_80184D2C[])(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_80184D3C[])(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_80184D48[])(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_80184CA8[]; +extern u8 D_80184CBC[]; +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_80184D60[])(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_80184D68[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80184D70[])(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_80184D78[])(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_80184D80[])(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_80184D88[])(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_80184D90[])(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_80184E44[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80184E4C[])(void); +extern void func_80169F00(void *a0); +extern char D_80184DFC[]; +extern char D_80184DBC[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80184E84[])(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_80184E90[])(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_80184ED8[])(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_80184F54[])(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_801A13B0; +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_80184F48[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80184F8C[]; +extern unsigned short D_80184F94[]; +extern unsigned short D_80184F9C[]; +extern unsigned char D_801A13B8[]; +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_801A13B0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80184FA4[])(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_801A14EC; +extern M2C_UNK D_801A14F0; +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_801A1478; +extern void (*D_80184FD4[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801A14F4[]; +extern u8 D_801A14FC[]; +extern u8 D_801A14AC[]; +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_80184FDC[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80184FF8[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80185000[])(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_80185068[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018500C; +extern u8 D_80185018; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018509C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801850A4[])(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_801850F8[])(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_8018512C[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018511C[]; +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_80185148; +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); +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_801851C0[])(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_801851C8[])(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_801851D0[])(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_801851D8[])(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_801851E0[])(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_801851E8[])(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_801851F4[])(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_80185200[])(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_8018520C[])(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_8018521C[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018522C[])(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_80185234[])(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_8018523C[])(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_80185244[])(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_8018524C[])(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_80185254[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018525C[])(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_80185264[])(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_8018526C[])(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_80185274[])(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_8018527C[])(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_80185284[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018528C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80185294[])(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_8018529C[])(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_801852A4[])(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_801852AC[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801852B4[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801852BC[])(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_801852C4[])(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_801852CC[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801852D4[])(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_801852DC[])(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_80185320[])(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_801852E4; +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_80185350[])(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_8018538C[])(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(s32); +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_801853E4[])(); +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_801853F4[])(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_801853FC[])(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_80185564[])(); +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_80185570[])(); +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_801A09B4; +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 int func_801789AC(void); +extern s16 D_801A2468; +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_801A1C30; +extern short D_801A24DC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801A205C; +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_801A2084; +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_801A2040; +extern s32 func_8017A3B0(void); +extern short D_801A207C; +extern short D_801A2078; +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_801A2438; +extern s16 D_801A243A; +extern s16 D_801A2444; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801A2438; + + 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_801A2444); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801A2438+0xC == &D_801A2444; 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_801A2438 + 0xC)) < 0x101) { + D_801A2438 = 0; + D_801A243A = 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_801A2444); + 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_801A2438 + 0xC)) < 0x101) { + D_801A2438 = 0; + D_801A243A = 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_801A20BC; + extern s16 D_801A20BE; + extern s16 D_801A20C0; + extern s16 D_801A20B4; + extern s16 D_801A20B6; + extern s16 D_801A20B8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A20BC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A20BE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A20C0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A20B4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A20B6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A20B8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801A2044; +extern u16 D_801A20C4; +extern u16 D_801A20C6; +extern u16 D_801A20C8; +extern s16 D_801A2468; + +void func_8017B1D8(void) { + func_8012A418(); + D_801A2468 = 0; + D_801A2044 = 0; + D_801A20C4 = D_80126B5E; + D_801A20C6 = D_80126B62; + D_801A20C8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_801856AC[]; + extern s16 D_801A20BC; + extern s16 D_801A20B4; + 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_801856AC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801856AC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A20BC; + s16 *p78C = &D_801A20B4; + *(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_801A2468 = 1; + D_801A2044 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A2064; + extern SV4_8017B368 D_801A206C; + extern s16 D_801A20BC; + extern s16 D_801A20B4; + extern u16 D_801856AC; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801A2064; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801A206C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_801856AC)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_801856AC)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801A20BC) = loc0; + (*(SV4_8017B368 *)&D_801A20B4) = loc1; + D_801A2468 = 1; + D_801A2044 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_801856AC[]; + extern s16 D_801A20BC; + extern s16 D_801A20BE; + extern s16 D_801A20C0; + extern s16 D_801A20B4; + extern s16 D_801A20B6; + extern s16 D_801A20B8; + 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_801856AC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801856AC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A20BC; + s16 *p78C = &D_801A20B4; + *(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_801A20BE; + v798 = D_801A20C0; + v78C = *p78C; + v78E = D_801A20B6; + v790 = D_801A20B8; + __asm__ __volatile__(""); + D_801A2468 = 1; + D_801A2044 = 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_801A2044; +extern s16 D_801A20BC; +extern s16 D_801A20BE; +extern s16 D_801A20C0; +extern s16 D_801A20B4; +extern s16 D_801A20B6; +extern s16 D_801A20B8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801A2044 = 0; + D_801A20BC = (s16) D_80114F30; + D_801A20BE = (s16) D_80114F34; + D_801A20C0 = (s16) D_80114F38; + D_801A20B4 = (s16) D_80114F24; + D_801A20B6 = (s16) D_80114F28; + D_801A20B8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801A20D4; +extern s16 D_801A20D6; +extern s16 D_801A20D8; +extern s16 D_801A20DC; +extern s16 D_801A20DE; +extern s16 D_801A20E0; + +void func_8017B824(void) { + D_801A20D4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801A20D6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801A20D8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801A20DC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801A20DE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801A20E0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801A20D4; +extern s16 D_801A20D6; +extern s16 D_801A20D8; +extern s16 D_801A20DC; +extern s16 D_801A20DE; +extern s16 D_801A20E0; + +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_801A20D4; + D_80114F34 = D_801A20D6; + D_80114F38 = D_801A20D8; + D_80114F24 = D_801A20DC; + D_80114F28 = D_801A20DE; + D_80114F2C = D_801A20E0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801A20BC), src[8..15] -> (*(S8_8017B8E8 *)&D_801A20B4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801A20BC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801A20B4) = ((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_801A20C4; +extern u16 D_801A20C6; +extern u16 D_801A20C8; + +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_801A2044; +extern short D_801A20CC; +extern short D_801A20CE; +extern short D_801A20D0; +extern s16 D_801A20BC; +extern s16 D_801A20BE; +extern s16 D_801A20C0; +extern s16 D_801A20B4; +extern s16 D_801A20B6; +extern s16 D_801A20B8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A20C4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A20C6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A20C8); + (*(s16 *)&D_801A20CC) = buf[0]; + (*(s16 *)&D_801A20CE) = buf[1]; + (*(s16 *)&D_801A20D0) = buf[2]; + D_801A20BC = D_80114F30 + buf[0]; + D_801A2044 = 0; + D_801A20BE = D_80114F34 + buf[1]; + D_801A20C0 = D_80114F38 + buf[2]; + D_801A20B4 = D_80114F24 + buf[0]; + D_801A20B6 = D_80114F28 + buf[1]; + D_801A20B8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801A2064; +extern SV4 D_801A206C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A206C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801A2064 = 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_801A206C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A206C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801A2064) = 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_801A206C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801A208C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801A208C; + 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_801A2044; +extern s16 D_801A2468; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801A2044 = D_801A2044 + 1; + if (D_801A2044 >= 0x1F) { + D_801A2468 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801A2044; +extern s16 D_801A2468; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801A2044 = D_801A2044 + 1; + if (0x18 < D_801A2044) { + func_8012A4BC(); + D_801A2468 = 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_801A2044; +extern void (*D_801A2088)(void); +extern short D_801A20CC; +extern short D_801A20CE; +extern short D_801A20D0; +extern s16 D_801A2468; + +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_801A2044 = D_801A2044 + 1; + if (D_801A2044 >= 0x19) { + if (D_801A2088 != 0) { + (*D_801A2088)(); + } else { + D_80114F30 = D_80114F30 + D_801A20CC; + D_80114F34 = D_80114F34 + D_801A20CE; + D_80114F38 = D_80114F38 + D_801A20D0; + D_80114F24 = D_80114F24 + D_801A20CC; + D_80114F28 = D_80114F28 + D_801A20CE; + D_80114F2C = D_80114F2C + D_801A20D0; + func_8012A4BC(); + } + D_801A2468 = 0; + } +} + + + +extern void (*D_8018574C[])(void); + +void func_8017BE60(void *a0) { + D_8018574C[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017BFEC); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017C378); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017C5F0); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017C738); + + +extern void (*D_80185868[])(void); + +void func_8017C8B8(void *a0) { + D_80185868[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017C8F4); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017C940); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017CA34); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017CAB4); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017CB68); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017CBD4); + +extern void func_8012C218(void); +void func_8017CC60(void) { + func_8012C218(); +} + + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017CC80); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017CCD4); + + +extern void (*D_801858C0[])(void); + +void func_8017CD10(void *a0) { + D_801858C0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017CD4C); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017CD9C); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017CDF8); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017CE7C); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017CFE4); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017D030); + + +extern void (*D_801858D4[])(void); + +void func_8017D33C(void *a0) { + D_801858D4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017D378); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017D3B8); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017D428); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017D4B4); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017D588); + + +extern void (*D_801858E8[])(void); + +void func_8017D5DC(void *a0) { + D_801858E8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017D618); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017D6CC); + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017AE2C", func_8017D728); + diff --git a/src/ov_SC03_111/ov_SC03_111_jr_8017A4AC.c b/src/ov_SC03_111/ov_SC03_111_jr_8017A4AC.c index 4b22e2b9a..ede0da706 100644 --- a/src/ov_SC03_111/ov_SC03_111_jr_8017A4AC.c +++ b/src/ov_SC03_111/ov_SC03_111_jr_8017A4AC.c @@ -2967,789 +2967,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801B95C4; - extern s16 D_801B95C6; - extern s16 D_801B95C8; - extern s16 D_801B95BC; - extern s16 D_801B95BE; - extern s16 D_801B95C0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B95C4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B95C6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B95C8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B95BC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B95BE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B95C0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801B954C; -extern u16 D_801B95CC; -extern u16 D_801B95CE; -extern u16 D_801B95D0; -extern s16 D_801B9B10; - -void func_8017B1D8(void) { - func_8012A418(); - D_801B9B10 = 0; - D_801B954C = 0; - D_801B95CC = D_80126B5E; - D_801B95CE = D_80126B62; - D_801B95D0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80188260[]; - extern s16 D_801B95C4; - extern s16 D_801B95BC; - 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_80188260[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80188260[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B95C4; - s16 *p78C = &D_801B95BC; - *(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_801B9B10 = 1; - D_801B954C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B956C; - extern SV4_8017B368 D_801B9574; - extern s16 D_801B95C4; - extern s16 D_801B95BC; - extern u16 D_80188260; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801B956C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801B9574; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80188260)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80188260)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801B95C4) = loc0; - (*(SV4_8017B368 *)&D_801B95BC) = loc1; - D_801B9B10 = 1; - D_801B954C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80188260[]; - extern s16 D_801B95C4; - extern s16 D_801B95C6; - extern s16 D_801B95C8; - extern s16 D_801B95BC; - extern s16 D_801B95BE; - extern s16 D_801B95C0; - 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_80188260[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80188260[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B95C4; - s16 *p78C = &D_801B95BC; - *(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_801B95C6; - v798 = D_801B95C8; - v78C = *p78C; - v78E = D_801B95BE; - v790 = D_801B95C0; - __asm__ __volatile__(""); - D_801B9B10 = 1; - D_801B954C = 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_801B954C; -extern s16 D_801B95C4; -extern s16 D_801B95C6; -extern s16 D_801B95C8; -extern s16 D_801B95BC; -extern s16 D_801B95BE; -extern s16 D_801B95C0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801B954C = 0; - D_801B95C4 = (s16) D_80114F30; - D_801B95C6 = (s16) D_80114F34; - D_801B95C8 = (s16) D_80114F38; - D_801B95BC = (s16) D_80114F24; - D_801B95BE = (s16) D_80114F28; - D_801B95C0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801B95DC; -extern s16 D_801B95DE; -extern s16 D_801B95E0; -extern s16 D_801B95E4; -extern s16 D_801B95E6; -extern s16 D_801B95E8; - -void func_8017B824(void) { - D_801B95DC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801B95DE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801B95E0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801B95E4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801B95E6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801B95E8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801B95DC; -extern s16 D_801B95DE; -extern s16 D_801B95E0; -extern s16 D_801B95E4; -extern s16 D_801B95E6; -extern s16 D_801B95E8; - -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_801B95DC; - D_80114F34 = D_801B95DE; - D_80114F38 = D_801B95E0; - D_80114F24 = D_801B95E4; - D_80114F28 = D_801B95E6; - D_80114F2C = D_801B95E8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801B95C4), src[8..15] -> (*(S8_8017B8E8 *)&D_801B95BC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801B95C4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801B95BC) = ((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_801B95CC; -extern u16 D_801B95CE; -extern u16 D_801B95D0; - -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_801B954C; -extern short D_801B95D4; -extern short D_801B95D6; -extern short D_801B95D8; -extern s16 D_801B95C4; -extern s16 D_801B95C6; -extern s16 D_801B95C8; -extern s16 D_801B95BC; -extern s16 D_801B95BE; -extern s16 D_801B95C0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B95CC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B95CE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B95D0); - (*(s16 *)&D_801B95D4) = buf[0]; - (*(s16 *)&D_801B95D6) = buf[1]; - (*(s16 *)&D_801B95D8) = buf[2]; - D_801B95C4 = D_80114F30 + buf[0]; - D_801B954C = 0; - D_801B95C6 = D_80114F34 + buf[1]; - D_801B95C8 = D_80114F38 + buf[2]; - D_801B95BC = D_80114F24 + buf[0]; - D_801B95BE = D_80114F28 + buf[1]; - D_801B95C0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801B956C; -extern SV4 D_801B9574; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B9574) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801B956C = 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_801B9574 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B9574)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801B956C) = 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_801B9574) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801B9594[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801B9594; - 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_801B954C; -extern s16 D_801B9B10; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801B954C = D_801B954C + 1; - if (D_801B954C >= 0x1F) { - D_801B9B10 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801B954C; -extern s16 D_801B9B10; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801B954C = D_801B954C + 1; - if (0x18 < D_801B954C) { - func_8012A4BC(); - D_801B9B10 = 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_801B954C; -extern void (*D_801B9590)(void); -extern short D_801B95D4; -extern short D_801B95D6; -extern short D_801B95D8; -extern s16 D_801B9B10; - -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_801B954C = D_801B954C + 1; - if (D_801B954C >= 0x19) { - if (D_801B9590 != 0) { - (*D_801B9590)(); - } else { - D_80114F30 = D_80114F30 + D_801B95D4; - D_80114F34 = D_80114F34 + D_801B95D6; - D_80114F38 = D_80114F38 + D_801B95D8; - D_80114F24 = D_80114F24 + D_801B95D4; - D_80114F28 = D_80114F28 + D_801B95D6; - D_80114F2C = D_80114F2C + D_801B95D8; - func_8012A4BC(); - } - D_801B9B10 = 0; - } -} - - - -extern void (*D_80188300[])(void); - -void func_8017BE60(void *a0) { - D_80188300[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017C058); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017C25C); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017C650); - - -extern void (*D_801885E0[])(void); - -void func_8017C7D0(void *a0) { - D_801885E0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017C80C); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017C880); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017C95C); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017CB70); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017CC44); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017CD14); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017CD6C); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017CE64); - - -extern void (*D_8018861C[])(void); - -void func_8017CEA4(void *a0) { - D_8018861C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017CEE0); - -extern void func_80146C3C(void); -void func_8017D0A4(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_80188624[])(void); - -void func_8017D138(void *a0) { - D_80188624[*(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_80188610; - -void func_8017D174(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_80188610, 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_8017D218(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; - } -} - - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017D27C); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017D3AC); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017D738); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017D9B0); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017DAF8); - - -extern void (*D_8018873C[])(void); - -void func_8017DC78(void *a0) { - D_8018873C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017DCB4); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017DD00); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017DDF4); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017DE74); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017DF28); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017DF94); - -extern void func_8012C218(void); -void func_8017E020(void) { - func_8012C218(); -} - - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017E040); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017E094); - - -extern void (*D_80188794[])(void); - -void func_8017E0D0(void *a0) { - D_80188794[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017E10C); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017E15C); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017E1B8); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017E23C); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017E3A4); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017E3F0); - - -extern void (*D_801887A8[])(void); - -void func_8017E6FC(void *a0) { - D_801887A8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017E738); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017E778); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017E7E8); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017E874); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017E948); - - -extern void (*D_801887BC[])(void); - -void func_8017E99C(void *a0) { - D_801887BC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017E9D8); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017EA8C); - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017A4AC", func_8017EAE8); diff --git a/src/ov_SC03_111/ov_SC03_111_jr_8017AE2C.c b/src/ov_SC03_111/ov_SC03_111_jr_8017AE2C.c new file mode 100644 index 000000000..dea2a376d --- /dev/null +++ b/src/ov_SC03_111/ov_SC03_111_jr_8017AE2C.c @@ -0,0 +1,3687 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80186E58; +extern u8 D_80186DC8; +extern u8 D_80186DA4; +extern u8 D_80186D80; +extern u8 D_80186E34; +extern u8 D_80186E10; +extern u8 D_80186DEC; +extern u8 D_80186D5C; +extern void func_80145934(void); +extern u8 D_80186EE8; +extern u8 D_80186EC4; +extern u8 D_80186EA0; +extern u8 D_80186E7C; +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_801862E0[]; +extern unsigned char D_80186310[]; +extern unsigned char D_80186360[]; +extern unsigned char D_80186390[]; +extern unsigned char D_801863C0[]; +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(void); +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_80186410[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_801864D8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80186560[]; +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_80186568; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801B8448; +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_801B844C; +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_80186598; +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 void 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_80186640[])(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_80186664[])(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_80186654; +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_80186678[])(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_80186684[]; +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_80186694[])(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_801866AC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018669C; +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_801866C0[])(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_801866DC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801866CC; +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_801866F0[])(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_80186704[])(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_80186718; +extern void (*D_80186740[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80186720; +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_8018678C[])(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_80186790[])(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(void *a0); +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_80186BF4[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80186C04[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801B8480; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80186C2C[])(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_80186C0C; +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_80186C1C; +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_80186C6C[])(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_80186C74[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80186C40; +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_80186C80[])(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_80186C50; +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_801B8488; +extern s32 D_801B8494; +extern s32 D_801B8498; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80186CBC[])(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_80186C90[]; +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_801B8490; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80186F0C[])(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_80186D2C[]; +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_80186FB0[])(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_80187104[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80186F20; +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_8018710C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80186F30; +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_80186F50; +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_80187114[])(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(void); +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_8018713C[])(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_80187148[])(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_80186FBC[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801871EC; +extern void func_8015D380(s32 a0); +extern unsigned char D_801862D0[]; +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_80187200[]; +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_8018723C[]; +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_80187284; +extern u16 D_80187286; +extern u16 D_80187288; +extern s32 D_8018728C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80187294; +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_80186FA0; +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_80187318[]; +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_801873C8[])(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_801873F8[]; +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_8018745C; +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_801B84A0[]; +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_80187480[])(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_801B84F8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_801874C8[])(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_801874B8; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801B7CDC[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_801874D0[])(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_80187524[])(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_801874EC; +extern s16 D_80187520; +extern s16 D_8018751E; +extern s16 D_8018751C; +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_80187530[])(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_801B8558; +extern u8 D_801B8559; +extern u8 D_801B855A; +extern u8 D_801B855B; +extern u8 D_801B855C; +extern u8 D_801B855D; +extern u8 D_801B855E; +extern u8 D_801B855F; +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_80187540[])(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_801B8598; +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_80187584[])(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_80187600[]; +extern s32 D_80187620[]; +extern u8 D_8018769C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801876BC[]; +extern u8 D_801876DC[]; +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_80187778[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801877F4[])(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_801B7CEC; +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_80187800[])(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_80187808[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801878D0[])(void); +extern void func_80166618(void *a0); +extern void (*D_801878E0[])(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_801878F0[])(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_801878FC[])(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_8018785C[]; +extern u8 D_80187870[]; +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_80187914[])(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_8018791C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80187924[])(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_8018792C[])(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_80187934[])(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_8018793C[])(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_80187944[])(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_801879F8[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80187A00[])(void); +extern void func_80169F00(void *a0); +extern char D_801879B0[]; +extern char D_80187970[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80187A38[])(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_80187A44[])(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_80187A8C[])(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_80187B08[])(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_801B88B8; +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_80187AFC[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80187B40[]; +extern unsigned short D_80187B48[]; +extern unsigned short D_80187B50[]; +extern unsigned char D_801B88C0[]; +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_801B88B8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80187B58[])(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_801B89F4; +extern M2C_UNK D_801B89F8; +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_801B8980; +extern void (*D_80187B88[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801B89FC[]; +extern u8 D_801B8A04[]; +extern u8 D_801B89B4[]; +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_80187B90[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80187BAC[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80187BB4[])(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_80187C1C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80187BC0; +extern u8 D_80187BCC; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80187C50[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80187C58[])(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_80187CAC[])(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_80187CE0[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80187CD0[]; +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_80187CFC; +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); +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_80187D74[])(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_80187D7C[])(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_80187D84[])(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_80187D8C[])(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_80187D94[])(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_80187D9C[])(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_80187DA8[])(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_80187DB4[])(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_80187DC0[])(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_80187DD0[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80187DE0[])(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_80187DE8[])(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_80187DF0[])(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_80187DF8[])(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_80187E00[])(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_80187E08[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80187E10[])(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_80187E18[])(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_80187E20[])(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_80187E28[])(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_80187E30[])(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_80187E38[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80187E40[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80187E48[])(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_80187E50[])(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_80187E58[])(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_80187E60[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80187E68[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80187E70[])(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_80187E78[])(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_80187E80[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80187E88[])(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_80187E90[])(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_80187ED4[])(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_80187E98; +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_80187F04[])(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_80187F40[])(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(s32); +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_80187F98[])(); +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_80187FA8[])(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_80187FB0[])(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_80188118[])(); +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_80188124[])(); +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_801B7F34; +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 int func_801789AC(void); +extern s16 D_801B9B10; +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_801B9138; +extern short D_801B9B84; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801B9564; +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_801B958C; +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_801B9548; +extern s32 func_8017A3B0(void); +extern short D_801B9584; +extern short D_801B9580; +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_801B9AE0; +extern s16 D_801B9AE2; +extern s16 D_801B9AEC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801B9AE0; + + 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_801B9AEC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801B9AE0+0xC == &D_801B9AEC; 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_801B9AE0 + 0xC)) < 0x101) { + D_801B9AE0 = 0; + D_801B9AE2 = 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_801B9AEC); + 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_801B9AE0 + 0xC)) < 0x101) { + D_801B9AE0 = 0; + D_801B9AE2 = 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_801B95C4; + extern s16 D_801B95C6; + extern s16 D_801B95C8; + extern s16 D_801B95BC; + extern s16 D_801B95BE; + extern s16 D_801B95C0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B95C4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B95C6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B95C8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B95BC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B95BE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B95C0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801B954C; +extern u16 D_801B95CC; +extern u16 D_801B95CE; +extern u16 D_801B95D0; +extern s16 D_801B9B10; + +void func_8017B1D8(void) { + func_8012A418(); + D_801B9B10 = 0; + D_801B954C = 0; + D_801B95CC = D_80126B5E; + D_801B95CE = D_80126B62; + D_801B95D0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80188260[]; + extern s16 D_801B95C4; + extern s16 D_801B95BC; + 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_80188260[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80188260[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B95C4; + s16 *p78C = &D_801B95BC; + *(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_801B9B10 = 1; + D_801B954C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B956C; + extern SV4_8017B368 D_801B9574; + extern s16 D_801B95C4; + extern s16 D_801B95BC; + extern u16 D_80188260; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801B956C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801B9574; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80188260)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80188260)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801B95C4) = loc0; + (*(SV4_8017B368 *)&D_801B95BC) = loc1; + D_801B9B10 = 1; + D_801B954C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80188260[]; + extern s16 D_801B95C4; + extern s16 D_801B95C6; + extern s16 D_801B95C8; + extern s16 D_801B95BC; + extern s16 D_801B95BE; + extern s16 D_801B95C0; + 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_80188260[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80188260[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B95C4; + s16 *p78C = &D_801B95BC; + *(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_801B95C6; + v798 = D_801B95C8; + v78C = *p78C; + v78E = D_801B95BE; + v790 = D_801B95C0; + __asm__ __volatile__(""); + D_801B9B10 = 1; + D_801B954C = 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_801B954C; +extern s16 D_801B95C4; +extern s16 D_801B95C6; +extern s16 D_801B95C8; +extern s16 D_801B95BC; +extern s16 D_801B95BE; +extern s16 D_801B95C0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801B954C = 0; + D_801B95C4 = (s16) D_80114F30; + D_801B95C6 = (s16) D_80114F34; + D_801B95C8 = (s16) D_80114F38; + D_801B95BC = (s16) D_80114F24; + D_801B95BE = (s16) D_80114F28; + D_801B95C0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801B95DC; +extern s16 D_801B95DE; +extern s16 D_801B95E0; +extern s16 D_801B95E4; +extern s16 D_801B95E6; +extern s16 D_801B95E8; + +void func_8017B824(void) { + D_801B95DC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801B95DE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801B95E0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801B95E4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801B95E6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801B95E8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801B95DC; +extern s16 D_801B95DE; +extern s16 D_801B95E0; +extern s16 D_801B95E4; +extern s16 D_801B95E6; +extern s16 D_801B95E8; + +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_801B95DC; + D_80114F34 = D_801B95DE; + D_80114F38 = D_801B95E0; + D_80114F24 = D_801B95E4; + D_80114F28 = D_801B95E6; + D_80114F2C = D_801B95E8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801B95C4), src[8..15] -> (*(S8_8017B8E8 *)&D_801B95BC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801B95C4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801B95BC) = ((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_801B95CC; +extern u16 D_801B95CE; +extern u16 D_801B95D0; + +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_801B954C; +extern short D_801B95D4; +extern short D_801B95D6; +extern short D_801B95D8; +extern s16 D_801B95C4; +extern s16 D_801B95C6; +extern s16 D_801B95C8; +extern s16 D_801B95BC; +extern s16 D_801B95BE; +extern s16 D_801B95C0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B95CC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B95CE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B95D0); + (*(s16 *)&D_801B95D4) = buf[0]; + (*(s16 *)&D_801B95D6) = buf[1]; + (*(s16 *)&D_801B95D8) = buf[2]; + D_801B95C4 = D_80114F30 + buf[0]; + D_801B954C = 0; + D_801B95C6 = D_80114F34 + buf[1]; + D_801B95C8 = D_80114F38 + buf[2]; + D_801B95BC = D_80114F24 + buf[0]; + D_801B95BE = D_80114F28 + buf[1]; + D_801B95C0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801B956C; +extern SV4 D_801B9574; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B9574) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801B956C = 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_801B9574 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B9574)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801B956C) = 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_801B9574) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801B9594[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801B9594; + 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_801B954C; +extern s16 D_801B9B10; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801B954C = D_801B954C + 1; + if (D_801B954C >= 0x1F) { + D_801B9B10 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801B954C; +extern s16 D_801B9B10; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801B954C = D_801B954C + 1; + if (0x18 < D_801B954C) { + func_8012A4BC(); + D_801B9B10 = 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_801B954C; +extern void (*D_801B9590)(void); +extern short D_801B95D4; +extern short D_801B95D6; +extern short D_801B95D8; +extern s16 D_801B9B10; + +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_801B954C = D_801B954C + 1; + if (D_801B954C >= 0x19) { + if (D_801B9590 != 0) { + (*D_801B9590)(); + } else { + D_80114F30 = D_80114F30 + D_801B95D4; + D_80114F34 = D_80114F34 + D_801B95D6; + D_80114F38 = D_80114F38 + D_801B95D8; + D_80114F24 = D_80114F24 + D_801B95D4; + D_80114F28 = D_80114F28 + D_801B95D6; + D_80114F2C = D_80114F2C + D_801B95D8; + func_8012A4BC(); + } + D_801B9B10 = 0; + } +} + + + +extern void (*D_80188300[])(void); + +void func_8017BE60(void *a0) { + D_80188300[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017C058); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017C25C); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017C650); + + +extern void (*D_801885E0[])(void); + +void func_8017C7D0(void *a0) { + D_801885E0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017C80C); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017C880); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017C95C); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017CB70); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017CC44); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017CD14); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017CD6C); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017CE64); + + +extern void (*D_8018861C[])(void); + +void func_8017CEA4(void *a0) { + D_8018861C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017CEE0); + +extern void func_80146C3C(void); +void func_8017D0A4(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_80188624[])(void); + +void func_8017D138(void *a0) { + D_80188624[*(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_80188610; + +void func_8017D174(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_80188610, 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_8017D218(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; + } +} + + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017D27C); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017D3AC); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017D738); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017D9B0); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017DAF8); + + +extern void (*D_8018873C[])(void); + +void func_8017DC78(void *a0) { + D_8018873C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017DCB4); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017DD00); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017DDF4); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017DE74); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017DF28); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017DF94); + +extern void func_8012C218(void); +void func_8017E020(void) { + func_8012C218(); +} + + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017E040); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017E094); + + +extern void (*D_80188794[])(void); + +void func_8017E0D0(void *a0) { + D_80188794[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017E10C); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017E15C); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017E1B8); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017E23C); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017E3A4); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017E3F0); + + +extern void (*D_801887A8[])(void); + +void func_8017E6FC(void *a0) { + D_801887A8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017E738); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017E778); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017E7E8); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017E874); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017E948); + + +extern void (*D_801887BC[])(void); + +void func_8017E99C(void *a0) { + D_801887BC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017E9D8); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017EA8C); + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017AE2C", func_8017EAE8); + diff --git a/src/ov_SC03_112/ov_SC03_112_jr_8017A4AC.c b/src/ov_SC03_112/ov_SC03_112_jr_8017A4AC.c index b22b7156f..418dd42ce 100644 --- a/src/ov_SC03_112/ov_SC03_112_jr_8017A4AC.c +++ b/src/ov_SC03_112/ov_SC03_112_jr_8017A4AC.c @@ -2946,625 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801ACE24; - extern s16 D_801ACE26; - extern s16 D_801ACE28; - extern s16 D_801ACE1C; - extern s16 D_801ACE1E; - extern s16 D_801ACE20; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801ACE24, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801ACE26, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801ACE28, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801ACE1C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801ACE1E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801ACE20, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801ACDAC; -extern u16 D_801ACE2C; -extern u16 D_801ACE2E; -extern u16 D_801ACE30; -extern s16 D_801AD0D8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801AD0D8 = 0; - D_801ACDAC = 0; - D_801ACE2C = D_80126B5E; - D_801ACE2E = D_80126B62; - D_801ACE30 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80189068[]; - extern s16 D_801ACE24; - extern s16 D_801ACE1C; - 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_80189068[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80189068[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801ACE24; - s16 *p78C = &D_801ACE1C; - *(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_801AD0D8 = 1; - D_801ACDAC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801ACDCC; - extern SV4_8017B368 D_801ACDD4; - extern s16 D_801ACE24; - extern s16 D_801ACE1C; - extern u16 D_80189068; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801ACDCC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801ACDD4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80189068)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80189068)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801ACE24) = loc0; - (*(SV4_8017B368 *)&D_801ACE1C) = loc1; - D_801AD0D8 = 1; - D_801ACDAC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80189068[]; - extern s16 D_801ACE24; - extern s16 D_801ACE26; - extern s16 D_801ACE28; - extern s16 D_801ACE1C; - extern s16 D_801ACE1E; - extern s16 D_801ACE20; - 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_80189068[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80189068[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801ACE24; - s16 *p78C = &D_801ACE1C; - *(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_801ACE26; - v798 = D_801ACE28; - v78C = *p78C; - v78E = D_801ACE1E; - v790 = D_801ACE20; - __asm__ __volatile__(""); - D_801AD0D8 = 1; - D_801ACDAC = 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_801ACDAC; -extern s16 D_801ACE24; -extern s16 D_801ACE26; -extern s16 D_801ACE28; -extern s16 D_801ACE1C; -extern s16 D_801ACE1E; -extern s16 D_801ACE20; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801ACDAC = 0; - D_801ACE24 = (s16) D_80114F30; - D_801ACE26 = (s16) D_80114F34; - D_801ACE28 = (s16) D_80114F38; - D_801ACE1C = (s16) D_80114F24; - D_801ACE1E = (s16) D_80114F28; - D_801ACE20 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801ACE3C; -extern s16 D_801ACE3E; -extern s16 D_801ACE40; -extern s16 D_801ACE44; -extern s16 D_801ACE46; -extern s16 D_801ACE48; - -void func_8017B824(void) { - D_801ACE3C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801ACE3E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801ACE40 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801ACE44 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801ACE46 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801ACE48 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801ACE3C; -extern s16 D_801ACE3E; -extern s16 D_801ACE40; -extern s16 D_801ACE44; -extern s16 D_801ACE46; -extern s16 D_801ACE48; - -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_801ACE3C; - D_80114F34 = D_801ACE3E; - D_80114F38 = D_801ACE40; - D_80114F24 = D_801ACE44; - D_80114F28 = D_801ACE46; - D_80114F2C = D_801ACE48; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801ACE24), src[8..15] -> (*(S8_8017B8E8 *)&D_801ACE1C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801ACE24) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801ACE1C) = ((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_801ACE2C; -extern u16 D_801ACE2E; -extern u16 D_801ACE30; - -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_801ACDAC; -extern short D_801ACE34; -extern short D_801ACE36; -extern short D_801ACE38; -extern s16 D_801ACE24; -extern s16 D_801ACE26; -extern s16 D_801ACE28; -extern s16 D_801ACE1C; -extern s16 D_801ACE1E; -extern s16 D_801ACE20; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801ACE2C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801ACE2E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801ACE30); - (*(s16 *)&D_801ACE34) = buf[0]; - (*(s16 *)&D_801ACE36) = buf[1]; - (*(s16 *)&D_801ACE38) = buf[2]; - D_801ACE24 = D_80114F30 + buf[0]; - D_801ACDAC = 0; - D_801ACE26 = D_80114F34 + buf[1]; - D_801ACE28 = D_80114F38 + buf[2]; - D_801ACE1C = D_80114F24 + buf[0]; - D_801ACE1E = D_80114F28 + buf[1]; - D_801ACE20 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801ACDCC; -extern SV4 D_801ACDD4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801ACDD4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801ACDCC = 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_801ACDD4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801ACDD4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801ACDCC) = 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_801ACDD4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801ACDF4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801ACDF4; - 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_801ACDAC; -extern s16 D_801AD0D8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801ACDAC = D_801ACDAC + 1; - if (D_801ACDAC >= 0x1F) { - D_801AD0D8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801ACDAC; -extern s16 D_801AD0D8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801ACDAC = D_801ACDAC + 1; - if (0x18 < D_801ACDAC) { - func_8012A4BC(); - D_801AD0D8 = 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_801ACDAC; -extern void (*D_801ACDF0)(void); -extern short D_801ACE34; -extern short D_801ACE36; -extern short D_801ACE38; -extern s16 D_801AD0D8; - -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_801ACDAC = D_801ACDAC + 1; - if (D_801ACDAC >= 0x19) { - if (D_801ACDF0 != 0) { - (*D_801ACDF0)(); - } else { - D_80114F30 = D_80114F30 + D_801ACE34; - D_80114F34 = D_80114F34 + D_801ACE36; - D_80114F38 = D_80114F38 + D_801ACE38; - D_80114F24 = D_80114F24 + D_801ACE34; - D_80114F28 = D_80114F28 + D_801ACE36; - D_80114F2C = D_80114F2C + D_801ACE38; - func_8012A4BC(); - } - D_801AD0D8 = 0; - } -} - - - -extern void (*D_80189108[])(void); - -void func_8017BE60(void *a0) { - D_80189108[*(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 (*D_8018912C[])(void); - -void func_8017BEBC(void *a0) { - D_8018912C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_8017A4AC", func_8017BEF8); - -DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ - - -extern void (*D_80189134[])(void); - -void func_8017C150(void *a0) { - D_80189134[*(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_80189120; - -void func_8017C18C(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_80189120, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ diff --git a/src/ov_SC03_112/ov_SC03_112_jr_8017AE2C.c b/src/ov_SC03_112/ov_SC03_112_jr_8017AE2C.c new file mode 100644 index 000000000..d68192b86 --- /dev/null +++ b/src/ov_SC03_112/ov_SC03_112_jr_8017AE2C.c @@ -0,0 +1,3502 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80187C60; +extern u8 D_80187BD0; +extern u8 D_80187BAC; +extern u8 D_80187B88; +extern u8 D_80187C3C; +extern u8 D_80187C18; +extern u8 D_80187BF4; +extern u8 D_80187B64; +extern void func_80145934(void); +extern u8 D_80187CF0; +extern u8 D_80187CCC; +extern u8 D_80187CA8; +extern u8 D_80187C84; +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_801870E8[]; +extern unsigned char D_80187118[]; +extern unsigned char D_80187168[]; +extern unsigned char D_80187198[]; +extern unsigned char D_801871C8[]; +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(void); +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_80187218[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_801872E0[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80187368[]; +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_80187370; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801ABCA8; +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_801ABCAC; +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_801873A0; +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 void 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_80187448[])(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_8018746C[])(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_8018745C; +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_80187480[])(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_8018748C[]; +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_8018749C[])(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_801874B4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801874A4; +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_801874C8[])(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_801874E4[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801874D4; +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_801874F8[])(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_8018750C[])(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_80187520; +extern void (*D_80187548[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80187528; +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_80187594[])(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_80187598[])(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(void *a0); +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_801879FC[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80187A0C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801ABCE0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80187A34[])(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_80187A14; +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_80187A24; +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_80187A74[])(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_80187A7C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80187A48; +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_80187A88[])(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_80187A58; +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_801ABCE8; +extern s32 D_801ABCF4; +extern s32 D_801ABCF8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80187AC4[])(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_80187A98[]; +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_801ABCF0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80187D14[])(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_80187B34[]; +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_80187DB8[])(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_80187F0C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80187D28; +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_80187F14[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80187D38; +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_80187D58; +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_80187F1C[])(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(void); +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_80187F44[])(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_80187F50[])(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_80187DC4[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80187FF4; +extern void func_8015D380(s32 a0); +extern unsigned char D_801870D8[]; +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_80188008[]; +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_80188044[]; +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_8018808C; +extern u16 D_8018808E; +extern u16 D_80188090; +extern s32 D_80188094; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018809C; +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_80187DA8; +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_80188120[]; +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_801881D0[])(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_80188200[]; +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_80188264; +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_801ABD00[]; +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_80188288[])(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_801ABD58[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_801882D0[])(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_801882C0; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801AB444[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_801882D8[])(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_8018832C[])(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_801882F4; +extern s16 D_80188328; +extern s16 D_80188326; +extern s16 D_80188324; +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_80188338[])(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_801ABDB8; +extern u8 D_801ABDB9; +extern u8 D_801ABDBA; +extern u8 D_801ABDBB; +extern u8 D_801ABDBC; +extern u8 D_801ABDBD; +extern u8 D_801ABDBE; +extern u8 D_801ABDBF; +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_80188348[])(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_801ABDF8; +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_8018838C[])(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_80188408[]; +extern s32 D_80188428[]; +extern u8 D_801884A4[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801884C4[]; +extern u8 D_801884E4[]; +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_80188580[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801885FC[])(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_801AB454; +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_80188608[])(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_80188610[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801886D8[])(void); +extern void func_80166618(void *a0); +extern void (*D_801886E8[])(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_801886F8[])(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_80188704[])(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_80188664[]; +extern u8 D_80188678[]; +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_8018871C[])(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_80188724[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018872C[])(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_80188734[])(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_8018873C[])(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_80188744[])(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_8018874C[])(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_80188800[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80188808[])(void); +extern void func_80169F00(void *a0); +extern char D_801887B8[]; +extern char D_80188778[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80188840[])(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_8018884C[])(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_80188894[])(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_80188910[])(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_801AC118; +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_80188904[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80188948[]; +extern unsigned short D_80188950[]; +extern unsigned short D_80188958[]; +extern unsigned char D_801AC120[]; +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_801AC118; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80188960[])(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_801AC254; +extern M2C_UNK D_801AC258; +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_801AC1E0; +extern void (*D_80188990[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801AC25C[]; +extern u8 D_801AC264[]; +extern u8 D_801AC214[]; +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_80188998[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801889B4[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801889BC[])(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_80188A24[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801889C8; +extern u8 D_801889D4; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80188A58[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80188A60[])(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_80188AB4[])(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_80188AE8[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80188AD8[]; +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_80188B04; +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); +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_80188B7C[])(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_80188B84[])(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_80188B8C[])(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_80188B94[])(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_80188B9C[])(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_80188BA4[])(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_80188BB0[])(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_80188BBC[])(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_80188BC8[])(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_80188BD8[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80188BE8[])(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_80188BF0[])(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_80188BF8[])(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_80188C00[])(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_80188C08[])(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_80188C10[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80188C18[])(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_80188C20[])(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_80188C28[])(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_80188C30[])(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_80188C38[])(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_80188C40[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80188C48[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80188C50[])(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_80188C58[])(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_80188C60[])(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_80188C68[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80188C70[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80188C78[])(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_80188C80[])(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_80188C88[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80188C90[])(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_80188C98[])(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_80188CDC[])(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_80188CA0; +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_80188D0C[])(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_80188D48[])(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(s32); +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_80188DA0[])(); +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_80188DB0[])(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_80188DB8[])(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_80188F20[])(); +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_80188F2C[])(); +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_801AB69C; +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 int func_801789AC(void); +extern s16 D_801AD0D8; +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_801AC998; +extern short D_801AD14C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801ACDC4; +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_801ACDEC; +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_801ACDA8; +extern s32 func_8017A3B0(void); +extern short D_801ACDE4; +extern short D_801ACDE0; +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_801AD0A8; +extern s16 D_801AD0AA; +extern s16 D_801AD0B4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801AD0A8; + + 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_801AD0B4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801AD0A8+0xC == &D_801AD0B4; 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_801AD0A8 + 0xC)) < 0x101) { + D_801AD0A8 = 0; + D_801AD0AA = 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_801AD0B4); + 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_801AD0A8 + 0xC)) < 0x101) { + D_801AD0A8 = 0; + D_801AD0AA = 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_801ACE24; + extern s16 D_801ACE26; + extern s16 D_801ACE28; + extern s16 D_801ACE1C; + extern s16 D_801ACE1E; + extern s16 D_801ACE20; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801ACE24, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801ACE26, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801ACE28, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801ACE1C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801ACE1E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801ACE20, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801ACDAC; +extern u16 D_801ACE2C; +extern u16 D_801ACE2E; +extern u16 D_801ACE30; +extern s16 D_801AD0D8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801AD0D8 = 0; + D_801ACDAC = 0; + D_801ACE2C = D_80126B5E; + D_801ACE2E = D_80126B62; + D_801ACE30 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80189068[]; + extern s16 D_801ACE24; + extern s16 D_801ACE1C; + 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_80189068[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80189068[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801ACE24; + s16 *p78C = &D_801ACE1C; + *(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_801AD0D8 = 1; + D_801ACDAC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801ACDCC; + extern SV4_8017B368 D_801ACDD4; + extern s16 D_801ACE24; + extern s16 D_801ACE1C; + extern u16 D_80189068; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801ACDCC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801ACDD4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80189068)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80189068)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801ACE24) = loc0; + (*(SV4_8017B368 *)&D_801ACE1C) = loc1; + D_801AD0D8 = 1; + D_801ACDAC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80189068[]; + extern s16 D_801ACE24; + extern s16 D_801ACE26; + extern s16 D_801ACE28; + extern s16 D_801ACE1C; + extern s16 D_801ACE1E; + extern s16 D_801ACE20; + 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_80189068[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80189068[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801ACE24; + s16 *p78C = &D_801ACE1C; + *(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_801ACE26; + v798 = D_801ACE28; + v78C = *p78C; + v78E = D_801ACE1E; + v790 = D_801ACE20; + __asm__ __volatile__(""); + D_801AD0D8 = 1; + D_801ACDAC = 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_801ACDAC; +extern s16 D_801ACE24; +extern s16 D_801ACE26; +extern s16 D_801ACE28; +extern s16 D_801ACE1C; +extern s16 D_801ACE1E; +extern s16 D_801ACE20; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801ACDAC = 0; + D_801ACE24 = (s16) D_80114F30; + D_801ACE26 = (s16) D_80114F34; + D_801ACE28 = (s16) D_80114F38; + D_801ACE1C = (s16) D_80114F24; + D_801ACE1E = (s16) D_80114F28; + D_801ACE20 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801ACE3C; +extern s16 D_801ACE3E; +extern s16 D_801ACE40; +extern s16 D_801ACE44; +extern s16 D_801ACE46; +extern s16 D_801ACE48; + +void func_8017B824(void) { + D_801ACE3C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801ACE3E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801ACE40 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801ACE44 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801ACE46 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801ACE48 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801ACE3C; +extern s16 D_801ACE3E; +extern s16 D_801ACE40; +extern s16 D_801ACE44; +extern s16 D_801ACE46; +extern s16 D_801ACE48; + +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_801ACE3C; + D_80114F34 = D_801ACE3E; + D_80114F38 = D_801ACE40; + D_80114F24 = D_801ACE44; + D_80114F28 = D_801ACE46; + D_80114F2C = D_801ACE48; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801ACE24), src[8..15] -> (*(S8_8017B8E8 *)&D_801ACE1C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801ACE24) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801ACE1C) = ((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_801ACE2C; +extern u16 D_801ACE2E; +extern u16 D_801ACE30; + +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_801ACDAC; +extern short D_801ACE34; +extern short D_801ACE36; +extern short D_801ACE38; +extern s16 D_801ACE24; +extern s16 D_801ACE26; +extern s16 D_801ACE28; +extern s16 D_801ACE1C; +extern s16 D_801ACE1E; +extern s16 D_801ACE20; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801ACE2C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801ACE2E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801ACE30); + (*(s16 *)&D_801ACE34) = buf[0]; + (*(s16 *)&D_801ACE36) = buf[1]; + (*(s16 *)&D_801ACE38) = buf[2]; + D_801ACE24 = D_80114F30 + buf[0]; + D_801ACDAC = 0; + D_801ACE26 = D_80114F34 + buf[1]; + D_801ACE28 = D_80114F38 + buf[2]; + D_801ACE1C = D_80114F24 + buf[0]; + D_801ACE1E = D_80114F28 + buf[1]; + D_801ACE20 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801ACDCC; +extern SV4 D_801ACDD4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801ACDD4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801ACDCC = 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_801ACDD4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801ACDD4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801ACDCC) = 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_801ACDD4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801ACDF4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801ACDF4; + 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_801ACDAC; +extern s16 D_801AD0D8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801ACDAC = D_801ACDAC + 1; + if (D_801ACDAC >= 0x1F) { + D_801AD0D8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801ACDAC; +extern s16 D_801AD0D8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801ACDAC = D_801ACDAC + 1; + if (0x18 < D_801ACDAC) { + func_8012A4BC(); + D_801AD0D8 = 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_801ACDAC; +extern void (*D_801ACDF0)(void); +extern short D_801ACE34; +extern short D_801ACE36; +extern short D_801ACE38; +extern s16 D_801AD0D8; + +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_801ACDAC = D_801ACDAC + 1; + if (D_801ACDAC >= 0x19) { + if (D_801ACDF0 != 0) { + (*D_801ACDF0)(); + } else { + D_80114F30 = D_80114F30 + D_801ACE34; + D_80114F34 = D_80114F34 + D_801ACE36; + D_80114F38 = D_80114F38 + D_801ACE38; + D_80114F24 = D_80114F24 + D_801ACE34; + D_80114F28 = D_80114F28 + D_801ACE36; + D_80114F2C = D_80114F2C + D_801ACE38; + func_8012A4BC(); + } + D_801AD0D8 = 0; + } +} + + + +extern void (*D_80189108[])(void); + +void func_8017BE60(void *a0) { + D_80189108[*(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 (*D_8018912C[])(void); + +void func_8017BEBC(void *a0) { + D_8018912C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_8017AE2C", func_8017BEF8); + +DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ + + +extern void (*D_80189134[])(void); + +void func_8017C150(void *a0) { + D_80189134[*(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_80189120; + +void func_8017C18C(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_80189120, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ + diff --git a/src/ov_SC03_113/ov_SC03_113_jr_8017A4AC.c b/src/ov_SC03_113/ov_SC03_113_jr_8017A4AC.c index 8fa5e255b..5b32f49a2 100644 --- a/src/ov_SC03_113/ov_SC03_113_jr_8017A4AC.c +++ b/src/ov_SC03_113/ov_SC03_113_jr_8017A4AC.c @@ -2946,625 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801A59B4; - extern s16 D_801A59B6; - extern s16 D_801A59B8; - extern s16 D_801A59AC; - extern s16 D_801A59AE; - extern s16 D_801A59B0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A59B4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A59B6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A59B8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A59AC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A59AE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A59B0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801A593C; -extern u16 D_801A59BC; -extern u16 D_801A59BE; -extern u16 D_801A59C0; -extern s16 D_801A5C78; - -void func_8017B1D8(void) { - func_8012A418(); - D_801A5C78 = 0; - D_801A593C = 0; - D_801A59BC = D_80126B5E; - D_801A59BE = D_80126B62; - D_801A59C0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80186718[]; - extern s16 D_801A59B4; - extern s16 D_801A59AC; - 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_80186718[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80186718[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A59B4; - s16 *p78C = &D_801A59AC; - *(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_801A5C78 = 1; - D_801A593C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A595C; - extern SV4_8017B368 D_801A5964; - extern s16 D_801A59B4; - extern s16 D_801A59AC; - extern u16 D_80186718; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801A595C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801A5964; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80186718)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80186718)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801A59B4) = loc0; - (*(SV4_8017B368 *)&D_801A59AC) = loc1; - D_801A5C78 = 1; - D_801A593C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80186718[]; - extern s16 D_801A59B4; - extern s16 D_801A59B6; - extern s16 D_801A59B8; - extern s16 D_801A59AC; - extern s16 D_801A59AE; - extern s16 D_801A59B0; - 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_80186718[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80186718[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A59B4; - s16 *p78C = &D_801A59AC; - *(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_801A59B6; - v798 = D_801A59B8; - v78C = *p78C; - v78E = D_801A59AE; - v790 = D_801A59B0; - __asm__ __volatile__(""); - D_801A5C78 = 1; - D_801A593C = 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_801A593C; -extern s16 D_801A59B4; -extern s16 D_801A59B6; -extern s16 D_801A59B8; -extern s16 D_801A59AC; -extern s16 D_801A59AE; -extern s16 D_801A59B0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801A593C = 0; - D_801A59B4 = (s16) D_80114F30; - D_801A59B6 = (s16) D_80114F34; - D_801A59B8 = (s16) D_80114F38; - D_801A59AC = (s16) D_80114F24; - D_801A59AE = (s16) D_80114F28; - D_801A59B0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801A59CC; -extern s16 D_801A59CE; -extern s16 D_801A59D0; -extern s16 D_801A59D4; -extern s16 D_801A59D6; -extern s16 D_801A59D8; - -void func_8017B824(void) { - D_801A59CC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801A59CE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801A59D0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801A59D4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801A59D6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801A59D8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801A59CC; -extern s16 D_801A59CE; -extern s16 D_801A59D0; -extern s16 D_801A59D4; -extern s16 D_801A59D6; -extern s16 D_801A59D8; - -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_801A59CC; - D_80114F34 = D_801A59CE; - D_80114F38 = D_801A59D0; - D_80114F24 = D_801A59D4; - D_80114F28 = D_801A59D6; - D_80114F2C = D_801A59D8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801A59B4), src[8..15] -> (*(S8_8017B8E8 *)&D_801A59AC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801A59B4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801A59AC) = ((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_801A59BC; -extern u16 D_801A59BE; -extern u16 D_801A59C0; - -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_801A593C; -extern short D_801A59C4; -extern short D_801A59C6; -extern short D_801A59C8; -extern s16 D_801A59B4; -extern s16 D_801A59B6; -extern s16 D_801A59B8; -extern s16 D_801A59AC; -extern s16 D_801A59AE; -extern s16 D_801A59B0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A59BC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A59BE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A59C0); - (*(s16 *)&D_801A59C4) = buf[0]; - (*(s16 *)&D_801A59C6) = buf[1]; - (*(s16 *)&D_801A59C8) = buf[2]; - D_801A59B4 = D_80114F30 + buf[0]; - D_801A593C = 0; - D_801A59B6 = D_80114F34 + buf[1]; - D_801A59B8 = D_80114F38 + buf[2]; - D_801A59AC = D_80114F24 + buf[0]; - D_801A59AE = D_80114F28 + buf[1]; - D_801A59B0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801A595C; -extern SV4 D_801A5964; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A5964) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801A595C = 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_801A5964 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A5964)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801A595C) = 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_801A5964) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801A5984[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801A5984; - 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_801A593C; -extern s16 D_801A5C78; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801A593C = D_801A593C + 1; - if (D_801A593C >= 0x1F) { - D_801A5C78 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801A593C; -extern s16 D_801A5C78; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801A593C = D_801A593C + 1; - if (0x18 < D_801A593C) { - func_8012A4BC(); - D_801A5C78 = 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_801A593C; -extern void (*D_801A5980)(void); -extern short D_801A59C4; -extern short D_801A59C6; -extern short D_801A59C8; -extern s16 D_801A5C78; - -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_801A593C = D_801A593C + 1; - if (D_801A593C >= 0x19) { - if (D_801A5980 != 0) { - (*D_801A5980)(); - } else { - D_80114F30 = D_80114F30 + D_801A59C4; - D_80114F34 = D_80114F34 + D_801A59C6; - D_80114F38 = D_80114F38 + D_801A59C8; - D_80114F24 = D_80114F24 + D_801A59C4; - D_80114F28 = D_80114F28 + D_801A59C6; - D_80114F2C = D_80114F2C + D_801A59C8; - func_8012A4BC(); - } - D_801A5C78 = 0; - } -} - - - -extern void (*D_801867B8[])(void); - -void func_8017BE60(void *a0) { - D_801867B8[*(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 (*D_801867DC[])(void); - -void func_8017BEBC(void *a0) { - D_801867DC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017A4AC", func_8017BEF8); - -DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ - - -extern void (*D_801867E4[])(void); - -void func_8017C150(void *a0) { - D_801867E4[*(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_801867D0; - -void func_8017C18C(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_801867D0, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ diff --git a/src/ov_SC03_113/ov_SC03_113_jr_8017AE2C.c b/src/ov_SC03_113/ov_SC03_113_jr_8017AE2C.c new file mode 100644 index 000000000..8b99ab625 --- /dev/null +++ b/src/ov_SC03_113/ov_SC03_113_jr_8017AE2C.c @@ -0,0 +1,3502 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80185310; +extern u8 D_80185280; +extern u8 D_8018525C; +extern u8 D_80185238; +extern u8 D_801852EC; +extern u8 D_801852C8; +extern u8 D_801852A4; +extern u8 D_80185214; +extern void func_80145934(void); +extern u8 D_801853A0; +extern u8 D_8018537C; +extern u8 D_80185358; +extern u8 D_80185334; +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_80184798[]; +extern unsigned char D_801847C8[]; +extern unsigned char D_80184818[]; +extern unsigned char D_80184848[]; +extern unsigned char D_80184878[]; +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(void); +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_801848C8[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80184990[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80184A18[]; +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_80184A20; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801A4838; +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_801A483C; +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_80184A50; +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 void 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_80184AF8[])(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_80184B1C[])(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_80184B0C; +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_80184B30[])(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_80184B3C[]; +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_80184B4C[])(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_80184B64[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80184B54; +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_80184B78[])(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_80184B94[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80184B84; +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_80184BA8[])(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_80184BBC[])(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_80184BD0; +extern void (*D_80184BF8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80184BD8; +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_80184C44[])(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_80184C48[])(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(void *a0); +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_801850AC[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_801850BC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801A4870; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801850E4[])(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_801850C4; +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_801850D4; +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_80185124[])(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_8018512C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801850F8; +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_80185138[])(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_80185108; +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_801A4878; +extern s32 D_801A4884; +extern s32 D_801A4888; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80185174[])(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_80185148[]; +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_801A4880; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801853C4[])(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_801851E4[]; +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_80185468[])(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_801855BC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801853D8; +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_801855C4[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801853E8; +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_80185408; +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_801855CC[])(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(void); +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_801855F4[])(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_80185600[])(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_80185474[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801856A4; +extern void func_8015D380(s32 a0); +extern unsigned char D_80184788[]; +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_801856B8[]; +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_801856F4[]; +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_8018573C; +extern u16 D_8018573E; +extern u16 D_80185740; +extern s32 D_80185744; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018574C; +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_80185458; +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_801857D0[]; +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_80185880[])(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_801858B0[]; +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_80185914; +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_801A4890[]; +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_80185938[])(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_801A48E8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80185980[])(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_80185970; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801A40CC[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_80185988[])(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_801859DC[])(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_801859A4; +extern s16 D_801859D8; +extern s16 D_801859D6; +extern s16 D_801859D4; +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_801859E8[])(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_801A4948; +extern u8 D_801A4949; +extern u8 D_801A494A; +extern u8 D_801A494B; +extern u8 D_801A494C; +extern u8 D_801A494D; +extern u8 D_801A494E; +extern u8 D_801A494F; +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_801859F8[])(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_801A4988; +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_80185A3C[])(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_80185AB8[]; +extern s32 D_80185AD8[]; +extern u8 D_80185B54[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80185B74[]; +extern u8 D_80185B94[]; +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_80185C30[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80185CAC[])(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_801A40DC; +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_80185CB8[])(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_80185CC0[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80185D88[])(void); +extern void func_80166618(void *a0); +extern void (*D_80185D98[])(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_80185DA8[])(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_80185DB4[])(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_80185D14[]; +extern u8 D_80185D28[]; +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_80185DCC[])(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_80185DD4[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80185DDC[])(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_80185DE4[])(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_80185DEC[])(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_80185DF4[])(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_80185DFC[])(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_80185EB0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80185EB8[])(void); +extern void func_80169F00(void *a0); +extern char D_80185E68[]; +extern char D_80185E28[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80185EF0[])(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_80185EFC[])(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_80185F44[])(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_80185FC0[])(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_801A4CA8; +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_80185FB4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80185FF8[]; +extern unsigned short D_80186000[]; +extern unsigned short D_80186008[]; +extern unsigned char D_801A4CB0[]; +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_801A4CA8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80186010[])(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_801A4DE4; +extern M2C_UNK D_801A4DE8; +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_801A4D70; +extern void (*D_80186040[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801A4DEC[]; +extern u8 D_801A4DF4[]; +extern u8 D_801A4DA4[]; +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_80186048[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80186064[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018606C[])(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_801860D4[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80186078; +extern u8 D_80186084; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80186108[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80186110[])(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_80186164[])(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_80186198[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80186188[]; +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_801861B4; +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); +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_8018622C[])(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_80186234[])(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_8018623C[])(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_80186244[])(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_8018624C[])(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_80186254[])(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_80186260[])(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_8018626C[])(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_80186278[])(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_80186288[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80186298[])(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_801862A0[])(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_801862A8[])(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_801862B0[])(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_801862B8[])(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_801862C0[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801862C8[])(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_801862D0[])(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_801862D8[])(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_801862E0[])(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_801862E8[])(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_801862F0[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801862F8[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80186300[])(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_80186308[])(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_80186310[])(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_80186318[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80186320[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80186328[])(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_80186330[])(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_80186338[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80186340[])(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_80186348[])(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_8018638C[])(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_80186350; +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_801863BC[])(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_801863F8[])(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(s32); +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_80186450[])(); +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_80186460[])(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_80186468[])(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_801865D0[])(); +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_801865DC[])(); +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_801A4324; +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 int func_801789AC(void); +extern s16 D_801A5C78; +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_801A5528; +extern short D_801A5CEC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801A5954; +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_801A597C; +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_801A5938; +extern s32 func_8017A3B0(void); +extern short D_801A5974; +extern short D_801A5970; +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_801A5C48; +extern s16 D_801A5C4A; +extern s16 D_801A5C54; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801A5C48; + + 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_801A5C54); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801A5C48+0xC == &D_801A5C54; 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_801A5C48 + 0xC)) < 0x101) { + D_801A5C48 = 0; + D_801A5C4A = 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_801A5C54); + 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_801A5C48 + 0xC)) < 0x101) { + D_801A5C48 = 0; + D_801A5C4A = 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_801A59B4; + extern s16 D_801A59B6; + extern s16 D_801A59B8; + extern s16 D_801A59AC; + extern s16 D_801A59AE; + extern s16 D_801A59B0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A59B4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A59B6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A59B8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A59AC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A59AE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A59B0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801A593C; +extern u16 D_801A59BC; +extern u16 D_801A59BE; +extern u16 D_801A59C0; +extern s16 D_801A5C78; + +void func_8017B1D8(void) { + func_8012A418(); + D_801A5C78 = 0; + D_801A593C = 0; + D_801A59BC = D_80126B5E; + D_801A59BE = D_80126B62; + D_801A59C0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80186718[]; + extern s16 D_801A59B4; + extern s16 D_801A59AC; + 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_80186718[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80186718[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A59B4; + s16 *p78C = &D_801A59AC; + *(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_801A5C78 = 1; + D_801A593C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A595C; + extern SV4_8017B368 D_801A5964; + extern s16 D_801A59B4; + extern s16 D_801A59AC; + extern u16 D_80186718; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801A595C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801A5964; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80186718)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80186718)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801A59B4) = loc0; + (*(SV4_8017B368 *)&D_801A59AC) = loc1; + D_801A5C78 = 1; + D_801A593C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80186718[]; + extern s16 D_801A59B4; + extern s16 D_801A59B6; + extern s16 D_801A59B8; + extern s16 D_801A59AC; + extern s16 D_801A59AE; + extern s16 D_801A59B0; + 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_80186718[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80186718[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A59B4; + s16 *p78C = &D_801A59AC; + *(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_801A59B6; + v798 = D_801A59B8; + v78C = *p78C; + v78E = D_801A59AE; + v790 = D_801A59B0; + __asm__ __volatile__(""); + D_801A5C78 = 1; + D_801A593C = 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_801A593C; +extern s16 D_801A59B4; +extern s16 D_801A59B6; +extern s16 D_801A59B8; +extern s16 D_801A59AC; +extern s16 D_801A59AE; +extern s16 D_801A59B0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801A593C = 0; + D_801A59B4 = (s16) D_80114F30; + D_801A59B6 = (s16) D_80114F34; + D_801A59B8 = (s16) D_80114F38; + D_801A59AC = (s16) D_80114F24; + D_801A59AE = (s16) D_80114F28; + D_801A59B0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801A59CC; +extern s16 D_801A59CE; +extern s16 D_801A59D0; +extern s16 D_801A59D4; +extern s16 D_801A59D6; +extern s16 D_801A59D8; + +void func_8017B824(void) { + D_801A59CC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801A59CE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801A59D0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801A59D4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801A59D6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801A59D8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801A59CC; +extern s16 D_801A59CE; +extern s16 D_801A59D0; +extern s16 D_801A59D4; +extern s16 D_801A59D6; +extern s16 D_801A59D8; + +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_801A59CC; + D_80114F34 = D_801A59CE; + D_80114F38 = D_801A59D0; + D_80114F24 = D_801A59D4; + D_80114F28 = D_801A59D6; + D_80114F2C = D_801A59D8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801A59B4), src[8..15] -> (*(S8_8017B8E8 *)&D_801A59AC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801A59B4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801A59AC) = ((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_801A59BC; +extern u16 D_801A59BE; +extern u16 D_801A59C0; + +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_801A593C; +extern short D_801A59C4; +extern short D_801A59C6; +extern short D_801A59C8; +extern s16 D_801A59B4; +extern s16 D_801A59B6; +extern s16 D_801A59B8; +extern s16 D_801A59AC; +extern s16 D_801A59AE; +extern s16 D_801A59B0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A59BC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A59BE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A59C0); + (*(s16 *)&D_801A59C4) = buf[0]; + (*(s16 *)&D_801A59C6) = buf[1]; + (*(s16 *)&D_801A59C8) = buf[2]; + D_801A59B4 = D_80114F30 + buf[0]; + D_801A593C = 0; + D_801A59B6 = D_80114F34 + buf[1]; + D_801A59B8 = D_80114F38 + buf[2]; + D_801A59AC = D_80114F24 + buf[0]; + D_801A59AE = D_80114F28 + buf[1]; + D_801A59B0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801A595C; +extern SV4 D_801A5964; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A5964) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801A595C = 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_801A5964 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A5964)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801A595C) = 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_801A5964) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801A5984[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801A5984; + 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_801A593C; +extern s16 D_801A5C78; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801A593C = D_801A593C + 1; + if (D_801A593C >= 0x1F) { + D_801A5C78 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801A593C; +extern s16 D_801A5C78; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801A593C = D_801A593C + 1; + if (0x18 < D_801A593C) { + func_8012A4BC(); + D_801A5C78 = 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_801A593C; +extern void (*D_801A5980)(void); +extern short D_801A59C4; +extern short D_801A59C6; +extern short D_801A59C8; +extern s16 D_801A5C78; + +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_801A593C = D_801A593C + 1; + if (D_801A593C >= 0x19) { + if (D_801A5980 != 0) { + (*D_801A5980)(); + } else { + D_80114F30 = D_80114F30 + D_801A59C4; + D_80114F34 = D_80114F34 + D_801A59C6; + D_80114F38 = D_80114F38 + D_801A59C8; + D_80114F24 = D_80114F24 + D_801A59C4; + D_80114F28 = D_80114F28 + D_801A59C6; + D_80114F2C = D_80114F2C + D_801A59C8; + func_8012A4BC(); + } + D_801A5C78 = 0; + } +} + + + +extern void (*D_801867B8[])(void); + +void func_8017BE60(void *a0) { + D_801867B8[*(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 (*D_801867DC[])(void); + +void func_8017BEBC(void *a0) { + D_801867DC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017AE2C", func_8017BEF8); + +DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ + + +extern void (*D_801867E4[])(void); + +void func_8017C150(void *a0) { + D_801867E4[*(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_801867D0; + +void func_8017C18C(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_801867D0, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ + diff --git a/src/ov_SC03_114/ov_SC03_114_jr_8017A4AC.c b/src/ov_SC03_114/ov_SC03_114_jr_8017A4AC.c index 6f7799df5..1550af4fd 100644 --- a/src/ov_SC03_114/ov_SC03_114_jr_8017A4AC.c +++ b/src/ov_SC03_114/ov_SC03_114_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_114/nonmatchings/ov_SC03_114_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801A964C; - extern s16 D_801A964E; - extern s16 D_801A9650; - extern s16 D_801A9644; - extern s16 D_801A9646; - extern s16 D_801A9648; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A964C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A964E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A9650, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A9644, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A9646, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A9648, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801A95D4; -extern u16 D_801A9654; -extern u16 D_801A9656; -extern u16 D_801A9658; -extern s16 D_801A97F0; - -void func_8017B1D8(void) { - func_8012A418(); - D_801A97F0 = 0; - D_801A95D4 = 0; - D_801A9654 = D_80126B5E; - D_801A9656 = D_80126B62; - D_801A9658 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80182380[]; - extern s16 D_801A964C; - extern s16 D_801A9644; - 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_80182380[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182380[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A964C; - s16 *p78C = &D_801A9644; - *(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_801A97F0 = 1; - D_801A95D4 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A95F4; - extern SV4_8017B368 D_801A95FC; - extern s16 D_801A964C; - extern s16 D_801A9644; - extern u16 D_80182380; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801A95F4; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801A95FC; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80182380)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80182380)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801A964C) = loc0; - (*(SV4_8017B368 *)&D_801A9644) = loc1; - D_801A97F0 = 1; - D_801A95D4 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_114/nonmatchings/ov_SC03_114_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80182380[]; - extern s16 D_801A964C; - extern s16 D_801A964E; - extern s16 D_801A9650; - extern s16 D_801A9644; - extern s16 D_801A9646; - extern s16 D_801A9648; - 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_80182380[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182380[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A964C; - s16 *p78C = &D_801A9644; - *(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_801A964E; - v798 = D_801A9650; - v78C = *p78C; - v78E = D_801A9646; - v790 = D_801A9648; - __asm__ __volatile__(""); - D_801A97F0 = 1; - D_801A95D4 = 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_801A95D4; -extern s16 D_801A964C; -extern s16 D_801A964E; -extern s16 D_801A9650; -extern s16 D_801A9644; -extern s16 D_801A9646; -extern s16 D_801A9648; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801A95D4 = 0; - D_801A964C = (s16) D_80114F30; - D_801A964E = (s16) D_80114F34; - D_801A9650 = (s16) D_80114F38; - D_801A9644 = (s16) D_80114F24; - D_801A9646 = (s16) D_80114F28; - D_801A9648 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801A9664; -extern s16 D_801A9666; -extern s16 D_801A9668; -extern s16 D_801A966C; -extern s16 D_801A966E; -extern s16 D_801A9670; - -void func_8017B824(void) { - D_801A9664 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801A9666 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801A9668 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801A966C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801A966E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801A9670 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801A9664; -extern s16 D_801A9666; -extern s16 D_801A9668; -extern s16 D_801A966C; -extern s16 D_801A966E; -extern s16 D_801A9670; - -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_801A9664; - D_80114F34 = D_801A9666; - D_80114F38 = D_801A9668; - D_80114F24 = D_801A966C; - D_80114F28 = D_801A966E; - D_80114F2C = D_801A9670; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801A964C), src[8..15] -> (*(S8_8017B8E8 *)&D_801A9644) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801A964C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801A9644) = ((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_801A9654; -extern u16 D_801A9656; -extern u16 D_801A9658; - -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_801A95D4; -extern short D_801A965C; -extern short D_801A965E; -extern short D_801A9660; -extern s16 D_801A964C; -extern s16 D_801A964E; -extern s16 D_801A9650; -extern s16 D_801A9644; -extern s16 D_801A9646; -extern s16 D_801A9648; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A9654); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A9656); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A9658); - (*(s16 *)&D_801A965C) = buf[0]; - (*(s16 *)&D_801A965E) = buf[1]; - (*(s16 *)&D_801A9660) = buf[2]; - D_801A964C = D_80114F30 + buf[0]; - D_801A95D4 = 0; - D_801A964E = D_80114F34 + buf[1]; - D_801A9650 = D_80114F38 + buf[2]; - D_801A9644 = D_80114F24 + buf[0]; - D_801A9646 = D_80114F28 + buf[1]; - D_801A9648 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801A95F4; -extern SV4 D_801A95FC; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A95FC) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801A95F4 = 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_801A95FC = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A95FC)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801A95F4) = 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_801A95FC) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801A961C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801A961C; - 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_801A95D4; -extern s16 D_801A97F0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801A95D4 = D_801A95D4 + 1; - if (D_801A95D4 >= 0x1F) { - D_801A97F0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801A95D4; -extern s16 D_801A97F0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801A95D4 = D_801A95D4 + 1; - if (0x18 < D_801A95D4) { - func_8012A4BC(); - D_801A97F0 = 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_801A95D4; -extern void (*D_801A9618)(void); -extern short D_801A965C; -extern short D_801A965E; -extern short D_801A9660; -extern s16 D_801A97F0; - -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_801A95D4 = D_801A95D4 + 1; - if (D_801A95D4 >= 0x19) { - if (D_801A9618 != 0) { - (*D_801A9618)(); - } else { - D_80114F30 = D_80114F30 + D_801A965C; - D_80114F34 = D_80114F34 + D_801A965E; - D_80114F38 = D_80114F38 + D_801A9660; - D_80114F24 = D_80114F24 + D_801A965C; - D_80114F28 = D_80114F28 + D_801A965E; - D_80114F2C = D_80114F2C + D_801A9660; - func_8012A4BC(); - } - D_801A97F0 = 0; - } -} - - - -extern void (*D_80182420[])(void); - -void func_8017BE60(void *a0) { - D_80182420[*(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) */ diff --git a/src/ov_SC03_114/ov_SC03_114_jr_8017AE2C.c b/src/ov_SC03_114/ov_SC03_114_jr_8017AE2C.c new file mode 100644 index 000000000..8b7d836f4 --- /dev/null +++ b/src/ov_SC03_114/ov_SC03_114_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80180F78; +extern u8 D_80180EE8; +extern u8 D_80180EC4; +extern u8 D_80180EA0; +extern u8 D_80180F54; +extern u8 D_80180F30; +extern u8 D_80180F0C; +extern u8 D_80180E7C; +extern void func_80145934(void); +extern u8 D_80181008; +extern u8 D_80180FE4; +extern u8 D_80180FC0; +extern u8 D_80180F9C; +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_80180400[]; +extern unsigned char D_80180430[]; +extern unsigned char D_80180480[]; +extern unsigned char D_801804B0[]; +extern unsigned char D_801804E0[]; +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(void); +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_80180530[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_801805F8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80180680[]; +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_80180688; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801A84D0; +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_801A84D4; +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_801806B8; +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 void 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_80180760[])(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_80180784[])(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_80180774; +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_80180798[])(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_801807A4[]; +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_801807B4[])(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_801807CC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801807BC; +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_801807E0[])(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_801807FC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801807EC; +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_80180810[])(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_80180824[])(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_80180838; +extern void (*D_80180860[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80180840; +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_801808AC[])(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_801808B0[])(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(void *a0); +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_80180D14[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80180D24[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801A8508; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180D4C[])(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_80180D2C; +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_80180D3C; +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_80180D8C[])(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_80180D94[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180D60; +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_80180DA0[])(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_80180D70; +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_801A8510; +extern s32 D_801A851C; +extern s32 D_801A8520; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180DDC[])(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_80180DB0[]; +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_801A8518; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018102C[])(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_80180E4C[]; +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_801810D0[])(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_80181224[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80181040; +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_8018122C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80181050; +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_80181070; +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_80181234[])(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(void); +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_8018125C[])(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_80181268[])(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_801810DC[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018130C; +extern void func_8015D380(s32 a0); +extern unsigned char D_801803F0[]; +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_80181320[]; +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_8018135C[]; +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_801813A4; +extern u16 D_801813A6; +extern u16 D_801813A8; +extern s32 D_801813AC; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_801813B4; +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_801810C0; +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_80181438[]; +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_801814E8[])(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_80181518[]; +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_8018157C; +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_801A8528[]; +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_801815A0[])(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_801A8580[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_801815E8[])(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_801815D8; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801A7DD8[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_801815F0[])(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_80181644[])(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_8018160C; +extern s16 D_80181640; +extern s16 D_8018163E; +extern s16 D_8018163C; +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_80181650[])(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_801A85E0; +extern u8 D_801A85E1; +extern u8 D_801A85E2; +extern u8 D_801A85E3; +extern u8 D_801A85E4; +extern u8 D_801A85E5; +extern u8 D_801A85E6; +extern u8 D_801A85E7; +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_80181660[])(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_801A8620; +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_801816A4[])(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_80181720[]; +extern s32 D_80181740[]; +extern u8 D_801817BC[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801817DC[]; +extern u8 D_801817FC[]; +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_80181898[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80181914[])(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_801A7DE8; +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_80181920[])(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_80181928[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801819F0[])(void); +extern void func_80166618(void *a0); +extern void (*D_80181A00[])(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_80181A10[])(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_80181A1C[])(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_8018197C[]; +extern u8 D_80181990[]; +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_80181A34[])(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_80181A3C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80181A44[])(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_80181A4C[])(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_80181A54[])(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_80181A5C[])(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_80181A64[])(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_80181B18[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80181B20[])(void); +extern void func_80169F00(void *a0); +extern char D_80181AD0[]; +extern char D_80181A90[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80181B58[])(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_80181B64[])(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_80181BAC[])(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_80181C28[])(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_801A8940; +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_80181C1C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80181C60[]; +extern unsigned short D_80181C68[]; +extern unsigned short D_80181C70[]; +extern unsigned char D_801A8948[]; +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_801A8940; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80181C78[])(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_801A8A7C; +extern M2C_UNK D_801A8A80; +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_801A8A08; +extern void (*D_80181CA8[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801A8A84[]; +extern u8 D_801A8A8C[]; +extern u8 D_801A8A3C[]; +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_80181CB0[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80181CCC[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80181CD4[])(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_80181D3C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80181CE0; +extern u8 D_80181CEC; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80181D70[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80181D78[])(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_80181DCC[])(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_80181E00[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80181DF0[]; +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_80181E1C; +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); +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_80181E94[])(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_80181E9C[])(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_80181EA4[])(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_80181EAC[])(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_80181EB4[])(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_80181EBC[])(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_80181EC8[])(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_80181ED4[])(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_80181EE0[])(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_80181EF0[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80181F00[])(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_80181F08[])(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_80181F10[])(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_80181F18[])(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_80181F20[])(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_80181F28[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80181F30[])(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_80181F38[])(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_80181F40[])(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_80181F48[])(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_80181F50[])(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_80181F58[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80181F60[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80181F68[])(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_80181F70[])(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_80181F78[])(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_80181F80[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80181F88[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80181F90[])(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_80181F98[])(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_80181FA0[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80181FA8[])(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_80181FB0[])(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_80181FF4[])(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_80181FB8; +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_80182024[])(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_80182060[])(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(s32); +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_801820B8[])(); +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_801820C8[])(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_801820D0[])(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_80182238[])(); +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_80182244[])(); +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_801A8030; +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 int func_801789AC(void); +extern s16 D_801A97F0; +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_801A91C0; +extern short D_801A9864; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801A95EC; +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_801A9614; +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_801A95D0; +extern s32 func_8017A3B0(void); +extern short D_801A960C; +extern short D_801A9608; +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_801A97C0; +extern s16 D_801A97C2; +extern s16 D_801A97CC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801A97C0; + + 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_801A97CC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801A97C0+0xC == &D_801A97CC; 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_801A97C0 + 0xC)) < 0x101) { + D_801A97C0 = 0; + D_801A97C2 = 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_801A97CC); + 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_801A97C0 + 0xC)) < 0x101) { + D_801A97C0 = 0; + D_801A97C2 = 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_801A964C; + extern s16 D_801A964E; + extern s16 D_801A9650; + extern s16 D_801A9644; + extern s16 D_801A9646; + extern s16 D_801A9648; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A964C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A964E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A9650, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A9644, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A9646, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A9648, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801A95D4; +extern u16 D_801A9654; +extern u16 D_801A9656; +extern u16 D_801A9658; +extern s16 D_801A97F0; + +void func_8017B1D8(void) { + func_8012A418(); + D_801A97F0 = 0; + D_801A95D4 = 0; + D_801A9654 = D_80126B5E; + D_801A9656 = D_80126B62; + D_801A9658 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80182380[]; + extern s16 D_801A964C; + extern s16 D_801A9644; + 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_80182380[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182380[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A964C; + s16 *p78C = &D_801A9644; + *(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_801A97F0 = 1; + D_801A95D4 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A95F4; + extern SV4_8017B368 D_801A95FC; + extern s16 D_801A964C; + extern s16 D_801A9644; + extern u16 D_80182380; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801A95F4; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801A95FC; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80182380)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80182380)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801A964C) = loc0; + (*(SV4_8017B368 *)&D_801A9644) = loc1; + D_801A97F0 = 1; + D_801A95D4 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_114/nonmatchings/ov_SC03_114_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80182380[]; + extern s16 D_801A964C; + extern s16 D_801A964E; + extern s16 D_801A9650; + extern s16 D_801A9644; + extern s16 D_801A9646; + extern s16 D_801A9648; + 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_80182380[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182380[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A964C; + s16 *p78C = &D_801A9644; + *(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_801A964E; + v798 = D_801A9650; + v78C = *p78C; + v78E = D_801A9646; + v790 = D_801A9648; + __asm__ __volatile__(""); + D_801A97F0 = 1; + D_801A95D4 = 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_801A95D4; +extern s16 D_801A964C; +extern s16 D_801A964E; +extern s16 D_801A9650; +extern s16 D_801A9644; +extern s16 D_801A9646; +extern s16 D_801A9648; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801A95D4 = 0; + D_801A964C = (s16) D_80114F30; + D_801A964E = (s16) D_80114F34; + D_801A9650 = (s16) D_80114F38; + D_801A9644 = (s16) D_80114F24; + D_801A9646 = (s16) D_80114F28; + D_801A9648 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801A9664; +extern s16 D_801A9666; +extern s16 D_801A9668; +extern s16 D_801A966C; +extern s16 D_801A966E; +extern s16 D_801A9670; + +void func_8017B824(void) { + D_801A9664 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801A9666 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801A9668 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801A966C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801A966E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801A9670 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801A9664; +extern s16 D_801A9666; +extern s16 D_801A9668; +extern s16 D_801A966C; +extern s16 D_801A966E; +extern s16 D_801A9670; + +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_801A9664; + D_80114F34 = D_801A9666; + D_80114F38 = D_801A9668; + D_80114F24 = D_801A966C; + D_80114F28 = D_801A966E; + D_80114F2C = D_801A9670; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801A964C), src[8..15] -> (*(S8_8017B8E8 *)&D_801A9644) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801A964C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801A9644) = ((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_801A9654; +extern u16 D_801A9656; +extern u16 D_801A9658; + +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_801A95D4; +extern short D_801A965C; +extern short D_801A965E; +extern short D_801A9660; +extern s16 D_801A964C; +extern s16 D_801A964E; +extern s16 D_801A9650; +extern s16 D_801A9644; +extern s16 D_801A9646; +extern s16 D_801A9648; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A9654); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A9656); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A9658); + (*(s16 *)&D_801A965C) = buf[0]; + (*(s16 *)&D_801A965E) = buf[1]; + (*(s16 *)&D_801A9660) = buf[2]; + D_801A964C = D_80114F30 + buf[0]; + D_801A95D4 = 0; + D_801A964E = D_80114F34 + buf[1]; + D_801A9650 = D_80114F38 + buf[2]; + D_801A9644 = D_80114F24 + buf[0]; + D_801A9646 = D_80114F28 + buf[1]; + D_801A9648 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801A95F4; +extern SV4 D_801A95FC; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A95FC) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801A95F4 = 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_801A95FC = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A95FC)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801A95F4) = 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_801A95FC) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801A961C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801A961C; + 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_801A95D4; +extern s16 D_801A97F0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801A95D4 = D_801A95D4 + 1; + if (D_801A95D4 >= 0x1F) { + D_801A97F0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801A95D4; +extern s16 D_801A97F0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801A95D4 = D_801A95D4 + 1; + if (0x18 < D_801A95D4) { + func_8012A4BC(); + D_801A97F0 = 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_801A95D4; +extern void (*D_801A9618)(void); +extern short D_801A965C; +extern short D_801A965E; +extern short D_801A9660; +extern s16 D_801A97F0; + +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_801A95D4 = D_801A95D4 + 1; + if (D_801A95D4 >= 0x19) { + if (D_801A9618 != 0) { + (*D_801A9618)(); + } else { + D_80114F30 = D_80114F30 + D_801A965C; + D_80114F34 = D_80114F34 + D_801A965E; + D_80114F38 = D_80114F38 + D_801A9660; + D_80114F24 = D_80114F24 + D_801A965C; + D_80114F28 = D_80114F28 + D_801A965E; + D_80114F2C = D_80114F2C + D_801A9660; + func_8012A4BC(); + } + D_801A97F0 = 0; + } +} + + + +extern void (*D_80182420[])(void); + +void func_8017BE60(void *a0) { + D_80182420[*(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) */ + diff --git a/src/ov_SC03_115/ov_SC03_115_jr_8017A4AC.c b/src/ov_SC03_115/ov_SC03_115_jr_8017A4AC.c index 00de106bb..994c8a11e 100644 --- a/src/ov_SC03_115/ov_SC03_115_jr_8017A4AC.c +++ b/src/ov_SC03_115/ov_SC03_115_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_80194FA4; - extern s16 D_80194FA6; - extern s16 D_80194FA8; - extern s16 D_80194F9C; - extern s16 D_80194F9E; - extern s16 D_80194FA0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80194FA4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80194FA6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80194FA8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_80194F9C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_80194F9E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80194FA0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80194F2C; -extern u16 D_80194FAC; -extern u16 D_80194FAE; -extern u16 D_80194FB0; -extern s16 D_801950C8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801950C8 = 0; - D_80194F2C = 0; - D_80194FAC = D_80126B5E; - D_80194FAE = D_80126B62; - D_80194FB0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80183DEC[]; - extern s16 D_80194FA4; - extern s16 D_80194F9C; - 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_80183DEC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80183DEC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80194FA4; - s16 *p78C = &D_80194F9C; - *(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_801950C8 = 1; - D_80194F2C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_80194F4C; - extern SV4_8017B368 D_80194F54; - extern s16 D_80194FA4; - extern s16 D_80194F9C; - extern u16 D_80183DEC; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_80194F4C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_80194F54; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80183DEC)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80183DEC)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_80194FA4) = loc0; - (*(SV4_8017B368 *)&D_80194F9C) = loc1; - D_801950C8 = 1; - D_80194F2C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80183DEC[]; - extern s16 D_80194FA4; - extern s16 D_80194FA6; - extern s16 D_80194FA8; - extern s16 D_80194F9C; - extern s16 D_80194F9E; - extern s16 D_80194FA0; - 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_80183DEC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80183DEC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80194FA4; - s16 *p78C = &D_80194F9C; - *(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_80194FA6; - v798 = D_80194FA8; - v78C = *p78C; - v78E = D_80194F9E; - v790 = D_80194FA0; - __asm__ __volatile__(""); - D_801950C8 = 1; - D_80194F2C = 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_80194F2C; -extern s16 D_80194FA4; -extern s16 D_80194FA6; -extern s16 D_80194FA8; -extern s16 D_80194F9C; -extern s16 D_80194F9E; -extern s16 D_80194FA0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_80194F2C = 0; - D_80194FA4 = (s16) D_80114F30; - D_80194FA6 = (s16) D_80114F34; - D_80194FA8 = (s16) D_80114F38; - D_80194F9C = (s16) D_80114F24; - D_80194F9E = (s16) D_80114F28; - D_80194FA0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_80194FBC; -extern s16 D_80194FBE; -extern s16 D_80194FC0; -extern s16 D_80194FC4; -extern s16 D_80194FC6; -extern s16 D_80194FC8; - -void func_8017B824(void) { - D_80194FBC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_80194FBE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_80194FC0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_80194FC4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_80194FC6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_80194FC8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_80194FBC; -extern s16 D_80194FBE; -extern s16 D_80194FC0; -extern s16 D_80194FC4; -extern s16 D_80194FC6; -extern s16 D_80194FC8; - -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_80194FBC; - D_80114F34 = D_80194FBE; - D_80114F38 = D_80194FC0; - D_80114F24 = D_80194FC4; - D_80114F28 = D_80194FC6; - D_80114F2C = D_80194FC8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_80194FA4), src[8..15] -> (*(S8_8017B8E8 *)&D_80194F9C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_80194FA4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_80194F9C) = ((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_80194FAC; -extern u16 D_80194FAE; -extern u16 D_80194FB0; - -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_80194F2C; -extern short D_80194FB4; -extern short D_80194FB6; -extern short D_80194FB8; -extern s16 D_80194FA4; -extern s16 D_80194FA6; -extern s16 D_80194FA8; -extern s16 D_80194F9C; -extern s16 D_80194F9E; -extern s16 D_80194FA0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_80194FAC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_80194FAE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80194FB0); - (*(s16 *)&D_80194FB4) = buf[0]; - (*(s16 *)&D_80194FB6) = buf[1]; - (*(s16 *)&D_80194FB8) = buf[2]; - D_80194FA4 = D_80114F30 + buf[0]; - D_80194F2C = 0; - D_80194FA6 = D_80114F34 + buf[1]; - D_80194FA8 = D_80114F38 + buf[2]; - D_80194F9C = D_80114F24 + buf[0]; - D_80194F9E = D_80114F28 + buf[1]; - D_80194FA0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_80194F4C; -extern SV4 D_80194F54; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_80194F54) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_80194F4C = 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_80194F54 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80194F54)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_80194F4C) = 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_80194F54) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_80194F74[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_80194F74; - 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_80194F2C; -extern s16 D_801950C8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_80194F2C = D_80194F2C + 1; - if (D_80194F2C >= 0x1F) { - D_801950C8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_80194F2C; -extern s16 D_801950C8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_80194F2C = D_80194F2C + 1; - if (0x18 < D_80194F2C) { - func_8012A4BC(); - D_801950C8 = 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_80194F2C; -extern void (*D_80194F70)(void); -extern short D_80194FB4; -extern short D_80194FB6; -extern short D_80194FB8; -extern s16 D_801950C8; - -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_80194F2C = D_80194F2C + 1; - if (D_80194F2C >= 0x19) { - if (D_80194F70 != 0) { - (*D_80194F70)(); - } else { - D_80114F30 = D_80114F30 + D_80194FB4; - D_80114F34 = D_80114F34 + D_80194FB6; - D_80114F38 = D_80114F38 + D_80194FB8; - D_80114F24 = D_80114F24 + D_80194FB4; - D_80114F28 = D_80114F28 + D_80194FB6; - D_80114F2C = D_80114F2C + D_80194FB8; - func_8012A4BC(); - } - D_801950C8 = 0; - } -} - - - -extern void (*D_80183E8C[])(void); - -void func_8017BE60(void *a0) { - D_80183E8C[*(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) */ diff --git a/src/ov_SC03_115/ov_SC03_115_jr_8017AE2C.c b/src/ov_SC03_115/ov_SC03_115_jr_8017AE2C.c new file mode 100644 index 000000000..2fa270e34 --- /dev/null +++ b/src/ov_SC03_115/ov_SC03_115_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801829E4; +extern u8 D_80182954; +extern u8 D_80182930; +extern u8 D_8018290C; +extern u8 D_801829C0; +extern u8 D_8018299C; +extern u8 D_80182978; +extern u8 D_801828E8; +extern void func_80145934(void); +extern u8 D_80182A74; +extern u8 D_80182A50; +extern u8 D_80182A2C; +extern u8 D_80182A08; +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_80181E6C[]; +extern unsigned char D_80181E9C[]; +extern unsigned char D_80181EEC[]; +extern unsigned char D_80181F1C[]; +extern unsigned char D_80181F4C[]; +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(void); +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_80181F9C[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80182064[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801820EC[]; +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_801820F4; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_80193E28; +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_80193E2C; +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_80182124; +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 void 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_801821CC[])(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_801821F0[])(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_801821E0; +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_80182204[])(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_80182210[]; +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_80182220[])(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_80182238[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80182228; +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_8018224C[])(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_80182268[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80182258; +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_8018227C[])(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_80182290[])(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_801822A4; +extern void (*D_801822CC[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801822AC; +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_80182318[])(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_8018231C[])(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(void *a0); +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_80182780[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80182790[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_80193E60; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801827B8[])(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_80182798; +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_801827A8; +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_801827F8[])(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_80182800[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801827CC; +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_8018280C[])(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_801827DC; +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_80193E68; +extern s32 D_80193E74; +extern s32 D_80193E78; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80182848[])(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_8018281C[]; +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_80193E70; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80182A98[])(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_801828B8[]; +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_80182B3C[])(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_80182C90[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80182AAC; +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_80182C98[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80182ABC; +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_80182ADC; +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_80182CA0[])(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(void); +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_80182CC8[])(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_80182CD4[])(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_80182B48[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80182D78; +extern void func_8015D380(s32 a0); +extern unsigned char D_80181E5C[]; +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_80182D8C[]; +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_80182DC8[]; +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_80182E10; +extern u16 D_80182E12; +extern u16 D_80182E14; +extern s32 D_80182E18; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80182E20; +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_80182B2C; +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_80182EA4[]; +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_80182F54[])(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_80182F84[]; +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_80182FE8; +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_80193E80[]; +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_8018300C[])(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_80193ED8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80183054[])(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_80183044; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8019374C[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_8018305C[])(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_801830B0[])(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_80183078; +extern s16 D_801830AC; +extern s16 D_801830AA; +extern s16 D_801830A8; +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_801830BC[])(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_80193F38; +extern u8 D_80193F39; +extern u8 D_80193F3A; +extern u8 D_80193F3B; +extern u8 D_80193F3C; +extern u8 D_80193F3D; +extern u8 D_80193F3E; +extern u8 D_80193F3F; +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_801830CC[])(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_80193F78; +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_80183110[])(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_8018318C[]; +extern s32 D_801831AC[]; +extern u8 D_80183228[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80183248[]; +extern u8 D_80183268[]; +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_80183304[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80183380[])(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_8019375C; +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_8018338C[])(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_80183394[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018345C[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018346C[])(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_8018347C[])(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_80183488[])(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_801833E8[]; +extern u8 D_801833FC[]; +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_801834A0[])(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_801834A8[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_801834B0[])(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_801834B8[])(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_801834C0[])(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_801834C8[])(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_801834D0[])(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_80183584[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018358C[])(void); +extern void func_80169F00(void *a0); +extern char D_8018353C[]; +extern char D_801834FC[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_801835C4[])(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_801835D0[])(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_80183618[])(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_80183694[])(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_80194298; +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_80183688[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_801836CC[]; +extern unsigned short D_801836D4[]; +extern unsigned short D_801836DC[]; +extern unsigned char D_801942A0[]; +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_80194298; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801836E4[])(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_801943D4; +extern M2C_UNK D_801943D8; +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_80194360; +extern void (*D_80183714[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801943DC[]; +extern u8 D_801943E4[]; +extern u8 D_80194394[]; +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_8018371C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80183738[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80183740[])(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_801837A8[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018374C; +extern u8 D_80183758; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801837DC[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801837E4[])(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_80183838[])(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_8018386C[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018385C[]; +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_80183888; +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); +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_80183900[])(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_80183908[])(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_80183910[])(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_80183918[])(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_80183920[])(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_80183928[])(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_80183934[])(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_80183940[])(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_8018394C[])(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_8018395C[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018396C[])(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_80183974[])(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_8018397C[])(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_80183984[])(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_8018398C[])(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_80183994[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018399C[])(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_801839A4[])(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_801839AC[])(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_801839B4[])(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_801839BC[])(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_801839C4[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801839CC[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801839D4[])(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_801839DC[])(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_801839E4[])(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_801839EC[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801839F4[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801839FC[])(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_80183A04[])(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_80183A0C[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80183A14[])(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_80183A1C[])(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_80183A60[])(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_80183A24; +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_80183A90[])(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_80183ACC[])(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(s32); +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_80183B24[])(); +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_80183B34[])(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_80183B3C[])(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_80183CA4[])(); +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_80183CB0[])(); +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_801939A4; +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 int func_801789AC(void); +extern s16 D_801950C8; +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_80194B18; +extern short D_8019513C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_80194F44; +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_80194F6C; +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_80194F28; +extern s32 func_8017A3B0(void); +extern short D_80194F64; +extern short D_80194F60; +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_80195098; +extern s16 D_8019509A; +extern s16 D_801950A4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_80195098; + + 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_801950A4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_80195098+0xC == &D_801950A4; 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_80195098 + 0xC)) < 0x101) { + D_80195098 = 0; + D_8019509A = 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_801950A4); + 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_80195098 + 0xC)) < 0x101) { + D_80195098 = 0; + D_8019509A = 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_80194FA4; + extern s16 D_80194FA6; + extern s16 D_80194FA8; + extern s16 D_80194F9C; + extern s16 D_80194F9E; + extern s16 D_80194FA0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80194FA4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80194FA6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80194FA8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_80194F9C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_80194F9E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80194FA0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_80194F2C; +extern u16 D_80194FAC; +extern u16 D_80194FAE; +extern u16 D_80194FB0; +extern s16 D_801950C8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801950C8 = 0; + D_80194F2C = 0; + D_80194FAC = D_80126B5E; + D_80194FAE = D_80126B62; + D_80194FB0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80183DEC[]; + extern s16 D_80194FA4; + extern s16 D_80194F9C; + 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_80183DEC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80183DEC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80194FA4; + s16 *p78C = &D_80194F9C; + *(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_801950C8 = 1; + D_80194F2C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_80194F4C; + extern SV4_8017B368 D_80194F54; + extern s16 D_80194FA4; + extern s16 D_80194F9C; + extern u16 D_80183DEC; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_80194F4C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_80194F54; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80183DEC)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80183DEC)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_80194FA4) = loc0; + (*(SV4_8017B368 *)&D_80194F9C) = loc1; + D_801950C8 = 1; + D_80194F2C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80183DEC[]; + extern s16 D_80194FA4; + extern s16 D_80194FA6; + extern s16 D_80194FA8; + extern s16 D_80194F9C; + extern s16 D_80194F9E; + extern s16 D_80194FA0; + 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_80183DEC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80183DEC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80194FA4; + s16 *p78C = &D_80194F9C; + *(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_80194FA6; + v798 = D_80194FA8; + v78C = *p78C; + v78E = D_80194F9E; + v790 = D_80194FA0; + __asm__ __volatile__(""); + D_801950C8 = 1; + D_80194F2C = 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_80194F2C; +extern s16 D_80194FA4; +extern s16 D_80194FA6; +extern s16 D_80194FA8; +extern s16 D_80194F9C; +extern s16 D_80194F9E; +extern s16 D_80194FA0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_80194F2C = 0; + D_80194FA4 = (s16) D_80114F30; + D_80194FA6 = (s16) D_80114F34; + D_80194FA8 = (s16) D_80114F38; + D_80194F9C = (s16) D_80114F24; + D_80194F9E = (s16) D_80114F28; + D_80194FA0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_80194FBC; +extern s16 D_80194FBE; +extern s16 D_80194FC0; +extern s16 D_80194FC4; +extern s16 D_80194FC6; +extern s16 D_80194FC8; + +void func_8017B824(void) { + D_80194FBC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_80194FBE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_80194FC0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_80194FC4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_80194FC6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_80194FC8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_80194FBC; +extern s16 D_80194FBE; +extern s16 D_80194FC0; +extern s16 D_80194FC4; +extern s16 D_80194FC6; +extern s16 D_80194FC8; + +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_80194FBC; + D_80114F34 = D_80194FBE; + D_80114F38 = D_80194FC0; + D_80114F24 = D_80194FC4; + D_80114F28 = D_80194FC6; + D_80114F2C = D_80194FC8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_80194FA4), src[8..15] -> (*(S8_8017B8E8 *)&D_80194F9C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_80194FA4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_80194F9C) = ((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_80194FAC; +extern u16 D_80194FAE; +extern u16 D_80194FB0; + +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_80194F2C; +extern short D_80194FB4; +extern short D_80194FB6; +extern short D_80194FB8; +extern s16 D_80194FA4; +extern s16 D_80194FA6; +extern s16 D_80194FA8; +extern s16 D_80194F9C; +extern s16 D_80194F9E; +extern s16 D_80194FA0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_80194FAC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_80194FAE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80194FB0); + (*(s16 *)&D_80194FB4) = buf[0]; + (*(s16 *)&D_80194FB6) = buf[1]; + (*(s16 *)&D_80194FB8) = buf[2]; + D_80194FA4 = D_80114F30 + buf[0]; + D_80194F2C = 0; + D_80194FA6 = D_80114F34 + buf[1]; + D_80194FA8 = D_80114F38 + buf[2]; + D_80194F9C = D_80114F24 + buf[0]; + D_80194F9E = D_80114F28 + buf[1]; + D_80194FA0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_80194F4C; +extern SV4 D_80194F54; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_80194F54) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_80194F4C = 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_80194F54 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80194F54)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_80194F4C) = 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_80194F54) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_80194F74[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_80194F74; + 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_80194F2C; +extern s16 D_801950C8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_80194F2C = D_80194F2C + 1; + if (D_80194F2C >= 0x1F) { + D_801950C8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_80194F2C; +extern s16 D_801950C8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_80194F2C = D_80194F2C + 1; + if (0x18 < D_80194F2C) { + func_8012A4BC(); + D_801950C8 = 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_80194F2C; +extern void (*D_80194F70)(void); +extern short D_80194FB4; +extern short D_80194FB6; +extern short D_80194FB8; +extern s16 D_801950C8; + +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_80194F2C = D_80194F2C + 1; + if (D_80194F2C >= 0x19) { + if (D_80194F70 != 0) { + (*D_80194F70)(); + } else { + D_80114F30 = D_80114F30 + D_80194FB4; + D_80114F34 = D_80114F34 + D_80194FB6; + D_80114F38 = D_80114F38 + D_80194FB8; + D_80114F24 = D_80114F24 + D_80194FB4; + D_80114F28 = D_80114F28 + D_80194FB6; + D_80114F2C = D_80114F2C + D_80194FB8; + func_8012A4BC(); + } + D_801950C8 = 0; + } +} + + + +extern void (*D_80183E8C[])(void); + +void func_8017BE60(void *a0) { + D_80183E8C[*(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) */ + diff --git a/src/ov_SC03_116/ov_SC03_116_jr_8017A4AC.c b/src/ov_SC03_116/ov_SC03_116_jr_8017A4AC.c index d76a92b55..fe87674eb 100644 --- a/src/ov_SC03_116/ov_SC03_116_jr_8017A4AC.c +++ b/src/ov_SC03_116/ov_SC03_116_jr_8017A4AC.c @@ -2946,813 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_80197B34; - extern s16 D_80197B36; - extern s16 D_80197B38; - extern s16 D_80197B2C; - extern s16 D_80197B2E; - extern s16 D_80197B30; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80197B34, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80197B36, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80197B38, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_80197B2C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_80197B2E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80197B30, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80197ABC; -extern u16 D_80197B3C; -extern u16 D_80197B3E; -extern u16 D_80197B40; -extern s16 D_80197CD8; - -void func_8017B1D8(void) { - func_8012A418(); - D_80197CD8 = 0; - D_80197ABC = 0; - D_80197B3C = D_80126B5E; - D_80197B3E = D_80126B62; - D_80197B40 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_801861F0[]; - extern s16 D_80197B34; - extern s16 D_80197B2C; - 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_801861F0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801861F0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80197B34; - s16 *p78C = &D_80197B2C; - *(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_80197CD8 = 1; - D_80197ABC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_80197ADC; - extern SV4_8017B368 D_80197AE4; - extern s16 D_80197B34; - extern s16 D_80197B2C; - extern u16 D_801861F0; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_80197ADC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_80197AE4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_801861F0)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_801861F0)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_80197B34) = loc0; - (*(SV4_8017B368 *)&D_80197B2C) = loc1; - D_80197CD8 = 1; - D_80197ABC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_801861F0[]; - extern s16 D_80197B34; - extern s16 D_80197B36; - extern s16 D_80197B38; - extern s16 D_80197B2C; - extern s16 D_80197B2E; - extern s16 D_80197B30; - 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_801861F0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801861F0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80197B34; - s16 *p78C = &D_80197B2C; - *(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_80197B36; - v798 = D_80197B38; - v78C = *p78C; - v78E = D_80197B2E; - v790 = D_80197B30; - __asm__ __volatile__(""); - D_80197CD8 = 1; - D_80197ABC = 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_80197ABC; -extern s16 D_80197B34; -extern s16 D_80197B36; -extern s16 D_80197B38; -extern s16 D_80197B2C; -extern s16 D_80197B2E; -extern s16 D_80197B30; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_80197ABC = 0; - D_80197B34 = (s16) D_80114F30; - D_80197B36 = (s16) D_80114F34; - D_80197B38 = (s16) D_80114F38; - D_80197B2C = (s16) D_80114F24; - D_80197B2E = (s16) D_80114F28; - D_80197B30 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_80197B4C; -extern s16 D_80197B4E; -extern s16 D_80197B50; -extern s16 D_80197B54; -extern s16 D_80197B56; -extern s16 D_80197B58; - -void func_8017B824(void) { - D_80197B4C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_80197B4E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_80197B50 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_80197B54 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_80197B56 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_80197B58 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_80197B4C; -extern s16 D_80197B4E; -extern s16 D_80197B50; -extern s16 D_80197B54; -extern s16 D_80197B56; -extern s16 D_80197B58; - -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_80197B4C; - D_80114F34 = D_80197B4E; - D_80114F38 = D_80197B50; - D_80114F24 = D_80197B54; - D_80114F28 = D_80197B56; - D_80114F2C = D_80197B58; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_80197B34), src[8..15] -> (*(S8_8017B8E8 *)&D_80197B2C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_80197B34) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_80197B2C) = ((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_80197B3C; -extern u16 D_80197B3E; -extern u16 D_80197B40; - -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_80197ABC; -extern short D_80197B44; -extern short D_80197B46; -extern short D_80197B48; -extern s16 D_80197B34; -extern s16 D_80197B36; -extern s16 D_80197B38; -extern s16 D_80197B2C; -extern s16 D_80197B2E; -extern s16 D_80197B30; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_80197B3C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_80197B3E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80197B40); - (*(s16 *)&D_80197B44) = buf[0]; - (*(s16 *)&D_80197B46) = buf[1]; - (*(s16 *)&D_80197B48) = buf[2]; - D_80197B34 = D_80114F30 + buf[0]; - D_80197ABC = 0; - D_80197B36 = D_80114F34 + buf[1]; - D_80197B38 = D_80114F38 + buf[2]; - D_80197B2C = D_80114F24 + buf[0]; - D_80197B2E = D_80114F28 + buf[1]; - D_80197B30 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_80197ADC; -extern SV4 D_80197AE4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_80197AE4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_80197ADC = 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_80197AE4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80197AE4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_80197ADC) = 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_80197AE4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_80197B04[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_80197B04; - 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_80197ABC; -extern s16 D_80197CD8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_80197ABC = D_80197ABC + 1; - if (D_80197ABC >= 0x1F) { - D_80197CD8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_80197ABC; -extern s16 D_80197CD8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_80197ABC = D_80197ABC + 1; - if (0x18 < D_80197ABC) { - func_8012A4BC(); - D_80197CD8 = 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_80197ABC; -extern void (*D_80197B00)(void); -extern short D_80197B44; -extern short D_80197B46; -extern short D_80197B48; -extern s16 D_80197CD8; - -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_80197ABC = D_80197ABC + 1; - if (D_80197ABC >= 0x19) { - if (D_80197B00 != 0) { - (*D_80197B00)(); - } else { - D_80114F30 = D_80114F30 + D_80197B44; - D_80114F34 = D_80114F34 + D_80197B46; - D_80114F38 = D_80114F38 + D_80197B48; - D_80114F24 = D_80114F24 + D_80197B44; - D_80114F28 = D_80114F28 + D_80197B46; - D_80114F2C = D_80114F2C + D_80197B48; - func_8012A4BC(); - } - D_80197CD8 = 0; - } -} - - - -extern void (*D_80186290[])(void); - -void func_8017BE60(void *a0) { - D_80186290[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_8017BF14); - - -extern s32 D_8012704C; - void func_80180980(void) { - D_8012704C = 0x1; - } - - - -extern void (*D_801862EC[])(void); - -void func_80180994(void *a0) { - D_801862EC[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_801809D0); - - -extern s32 func_800167F0(s32 a0); - -s32 func_80180A14(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_801862F4[])(void); - -void func_80180A38(void *a0) { - D_801862F4[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80180A74); - - -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_80180AB4(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_80180B30(void) { - func_800D1EBC(); - } - - - -extern void (*D_80186300[])(void); - -void func_80180B50(void *a0) { - D_80186300[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80180B8C); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80180C1C); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80180C44); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80180C6C); - - -extern void (*D_80186314[])(void); - -void func_80180D04(void *a0) { - D_80186314[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80180D40); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80180DE0); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80180F78); - - -extern void (*D_80186324[])(void); - -void func_80180FBC(void *a0) { - D_80186324[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80180FF8); - -void func_80181028(void) { -} - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80181030); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_801810C8); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_8018117C); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80181204); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_801812AC); - - -extern void (*D_80186344[])(void); - -void func_801814B0(void *a0) { - D_80186344[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_801814EC); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80181550); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80181580); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80181618); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80181674); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_801816D8); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_8018172C); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_801817D8); - -extern void func_80181864(void); - void func_80181844(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - func_80181864(); - } - - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80181864); - -extern void func_801818DC(void); - void func_801818B8(void *a0) { - *(short *)((char *)a0 + 0xfe) = 0; - *(short *)((char *)a0 + 0x100) = 0; - ((void (*)(void))func_801818DC)(); - } - - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_801818DC); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80181954); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_801819A4); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_801819F4); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80181A5C); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80181B44); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80181B88); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80181C4C); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80181E28); - - -extern void (*D_80186578[])(void); - -void func_80181F6C(void *a0) { - D_80186578[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80181FA8); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_801820AC); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_8018213C); - -void func_80182238(void) { -} - -extern s32 func_80181954(void); - void func_80182240(void) { - func_80181954(); - } - - -extern s32 func_801819A4(void); - void func_80182260(void) { - func_801819A4(); - } - - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80182280); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_801822A0); - -extern void func_8013B7AC(void); - void func_8018232C(void) { - func_8013B7AC(); - } - - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_8018234C); - - -extern void (*D_80195174[])(void); - -void func_80182378(void *a0) { - D_80195174[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_801823B4); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_801825A8); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80182658); - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_80182708); - -void func_801827B8(void) { -} - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017A4AC", func_801827C0); - - - diff --git a/src/ov_SC03_116/ov_SC03_116_jr_8017AE2C.c b/src/ov_SC03_116/ov_SC03_116_jr_8017AE2C.c new file mode 100644 index 000000000..beed9646d --- /dev/null +++ b/src/ov_SC03_116/ov_SC03_116_jr_8017AE2C.c @@ -0,0 +1,3690 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80184DE8; +extern u8 D_80184D58; +extern u8 D_80184D34; +extern u8 D_80184D10; +extern u8 D_80184DC4; +extern u8 D_80184DA0; +extern u8 D_80184D7C; +extern u8 D_80184CEC; +extern void func_80145934(void); +extern u8 D_80184E78; +extern u8 D_80184E54; +extern u8 D_80184E30; +extern u8 D_80184E0C; +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_80184270[]; +extern unsigned char D_801842A0[]; +extern unsigned char D_801842F0[]; +extern unsigned char D_80184320[]; +extern unsigned char D_80184350[]; +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(void); +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_801843A0[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80184468[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801844F0[]; +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_801844F8; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801969B8; +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_801969BC; +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_80184528; +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 void 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_801845D0[])(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_801845F4[])(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_801845E4; +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_80184608[])(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_80184614[]; +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_80184624[])(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_8018463C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018462C; +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_80184650[])(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_8018466C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018465C; +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_80184680[])(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_80184694[])(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_801846A8; +extern void (*D_801846D0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801846B0; +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_8018471C[])(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_80184720[])(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(void *a0); +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_80184B84[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80184B94[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801969F0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184BBC[])(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_80184B9C; +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_80184BAC; +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_80184BFC[])(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_80184C04[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80184BD0; +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_80184C10[])(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_80184BE0; +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_801969F8; +extern s32 D_80196A04; +extern s32 D_80196A08; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80184C4C[])(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_80184C20[]; +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_80196A00; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80184E9C[])(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_80184CBC[]; +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_80184F40[])(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_80185094[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80184EB0; +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_8018509C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80184EC0; +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_80184EE0; +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_801850A4[])(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(void); +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_801850CC[])(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_801850D8[])(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_80184F4C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018517C; +extern void func_8015D380(s32 a0); +extern unsigned char D_80184260[]; +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_80185190[]; +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_801851CC[]; +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_80185214; +extern u16 D_80185216; +extern u16 D_80185218; +extern s32 D_8018521C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80185224; +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_80184F30; +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_801852A8[]; +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_80185358[])(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_80185388[]; +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_801853EC; +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_80196A10[]; +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_80185410[])(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_80196A68[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80185458[])(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_80185448; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801962E8[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_80185460[])(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_801854B4[])(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_8018547C; +extern s16 D_801854B0; +extern s16 D_801854AE; +extern s16 D_801854AC; +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_801854C0[])(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_80196AC8; +extern u8 D_80196AC9; +extern u8 D_80196ACA; +extern u8 D_80196ACB; +extern u8 D_80196ACC; +extern u8 D_80196ACD; +extern u8 D_80196ACE; +extern u8 D_80196ACF; +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_801854D0[])(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_80196B08; +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_80185514[])(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_80185590[]; +extern s32 D_801855B0[]; +extern u8 D_8018562C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018564C[]; +extern u8 D_8018566C[]; +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_80185708[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80185784[])(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_801962F8; +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_80185790[])(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_80185798[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80185860[])(void); +extern void func_80166618(void *a0); +extern void (*D_80185870[])(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_80185880[])(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_8018588C[])(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_801857EC[]; +extern u8 D_80185800[]; +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_801858A4[])(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_801858AC[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_801858B4[])(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_801858BC[])(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_801858C4[])(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_801858CC[])(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_801858D4[])(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_80185988[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80185990[])(void); +extern void func_80169F00(void *a0); +extern char D_80185940[]; +extern char D_80185900[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_801859C8[])(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_801859D4[])(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_80185A1C[])(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_80185A98[])(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_80196E28; +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_80185A8C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80185AD0[]; +extern unsigned short D_80185AD8[]; +extern unsigned short D_80185AE0[]; +extern unsigned char D_80196E30[]; +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_80196E28; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80185AE8[])(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_80196F64; +extern M2C_UNK D_80196F68; +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_80196EF0; +extern void (*D_80185B18[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80196F6C[]; +extern u8 D_80196F74[]; +extern u8 D_80196F24[]; +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_80185B20[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80185B3C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80185B44[])(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_80185BAC[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80185B50; +extern u8 D_80185B5C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80185BE0[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80185BE8[])(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_80185C3C[])(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_80185C70[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80185C60[]; +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_80185C8C; +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); +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_80185D04[])(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_80185D0C[])(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_80185D14[])(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_80185D1C[])(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_80185D24[])(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_80185D2C[])(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_80185D38[])(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_80185D44[])(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_80185D50[])(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_80185D60[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80185D70[])(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_80185D78[])(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_80185D80[])(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_80185D88[])(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_80185D90[])(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_80185D98[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80185DA0[])(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_80185DA8[])(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_80185DB0[])(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_80185DB8[])(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_80185DC0[])(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_80185DC8[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80185DD0[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80185DD8[])(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_80185DE0[])(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_80185DE8[])(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_80185DF0[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80185DF8[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80185E00[])(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_80185E08[])(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_80185E10[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80185E18[])(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_80185E20[])(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_80185E64[])(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_80185E28; +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_80185E94[])(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_80185ED0[])(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(s32); +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_80185F28[])(); +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_80185F38[])(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_80185F40[])(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_801860A8[])(); +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_801860B4[])(); +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_80196540; +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 int func_801789AC(void); +extern s16 D_80197CD8; +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_801976A8; +extern short D_80197D4C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_80197AD4; +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_80197AFC; +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_80197AB8; +extern s32 func_8017A3B0(void); +extern short D_80197AF4; +extern short D_80197AF0; +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_80197CA8; +extern s16 D_80197CAA; +extern s16 D_80197CB4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_80197CA8; + + 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_80197CB4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_80197CA8+0xC == &D_80197CB4; 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_80197CA8 + 0xC)) < 0x101) { + D_80197CA8 = 0; + D_80197CAA = 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_80197CB4); + 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_80197CA8 + 0xC)) < 0x101) { + D_80197CA8 = 0; + D_80197CAA = 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_80197B34; + extern s16 D_80197B36; + extern s16 D_80197B38; + extern s16 D_80197B2C; + extern s16 D_80197B2E; + extern s16 D_80197B30; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80197B34, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80197B36, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80197B38, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_80197B2C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_80197B2E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80197B30, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_80197ABC; +extern u16 D_80197B3C; +extern u16 D_80197B3E; +extern u16 D_80197B40; +extern s16 D_80197CD8; + +void func_8017B1D8(void) { + func_8012A418(); + D_80197CD8 = 0; + D_80197ABC = 0; + D_80197B3C = D_80126B5E; + D_80197B3E = D_80126B62; + D_80197B40 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_801861F0[]; + extern s16 D_80197B34; + extern s16 D_80197B2C; + 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_801861F0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801861F0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80197B34; + s16 *p78C = &D_80197B2C; + *(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_80197CD8 = 1; + D_80197ABC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_80197ADC; + extern SV4_8017B368 D_80197AE4; + extern s16 D_80197B34; + extern s16 D_80197B2C; + extern u16 D_801861F0; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_80197ADC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_80197AE4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_801861F0)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_801861F0)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_80197B34) = loc0; + (*(SV4_8017B368 *)&D_80197B2C) = loc1; + D_80197CD8 = 1; + D_80197ABC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_801861F0[]; + extern s16 D_80197B34; + extern s16 D_80197B36; + extern s16 D_80197B38; + extern s16 D_80197B2C; + extern s16 D_80197B2E; + extern s16 D_80197B30; + 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_801861F0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801861F0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80197B34; + s16 *p78C = &D_80197B2C; + *(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_80197B36; + v798 = D_80197B38; + v78C = *p78C; + v78E = D_80197B2E; + v790 = D_80197B30; + __asm__ __volatile__(""); + D_80197CD8 = 1; + D_80197ABC = 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_80197ABC; +extern s16 D_80197B34; +extern s16 D_80197B36; +extern s16 D_80197B38; +extern s16 D_80197B2C; +extern s16 D_80197B2E; +extern s16 D_80197B30; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_80197ABC = 0; + D_80197B34 = (s16) D_80114F30; + D_80197B36 = (s16) D_80114F34; + D_80197B38 = (s16) D_80114F38; + D_80197B2C = (s16) D_80114F24; + D_80197B2E = (s16) D_80114F28; + D_80197B30 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_80197B4C; +extern s16 D_80197B4E; +extern s16 D_80197B50; +extern s16 D_80197B54; +extern s16 D_80197B56; +extern s16 D_80197B58; + +void func_8017B824(void) { + D_80197B4C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_80197B4E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_80197B50 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_80197B54 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_80197B56 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_80197B58 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_80197B4C; +extern s16 D_80197B4E; +extern s16 D_80197B50; +extern s16 D_80197B54; +extern s16 D_80197B56; +extern s16 D_80197B58; + +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_80197B4C; + D_80114F34 = D_80197B4E; + D_80114F38 = D_80197B50; + D_80114F24 = D_80197B54; + D_80114F28 = D_80197B56; + D_80114F2C = D_80197B58; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_80197B34), src[8..15] -> (*(S8_8017B8E8 *)&D_80197B2C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_80197B34) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_80197B2C) = ((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_80197B3C; +extern u16 D_80197B3E; +extern u16 D_80197B40; + +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_80197ABC; +extern short D_80197B44; +extern short D_80197B46; +extern short D_80197B48; +extern s16 D_80197B34; +extern s16 D_80197B36; +extern s16 D_80197B38; +extern s16 D_80197B2C; +extern s16 D_80197B2E; +extern s16 D_80197B30; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_80197B3C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_80197B3E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80197B40); + (*(s16 *)&D_80197B44) = buf[0]; + (*(s16 *)&D_80197B46) = buf[1]; + (*(s16 *)&D_80197B48) = buf[2]; + D_80197B34 = D_80114F30 + buf[0]; + D_80197ABC = 0; + D_80197B36 = D_80114F34 + buf[1]; + D_80197B38 = D_80114F38 + buf[2]; + D_80197B2C = D_80114F24 + buf[0]; + D_80197B2E = D_80114F28 + buf[1]; + D_80197B30 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_80197ADC; +extern SV4 D_80197AE4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_80197AE4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_80197ADC = 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_80197AE4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80197AE4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_80197ADC) = 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_80197AE4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_80197B04[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_80197B04; + 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_80197ABC; +extern s16 D_80197CD8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_80197ABC = D_80197ABC + 1; + if (D_80197ABC >= 0x1F) { + D_80197CD8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_80197ABC; +extern s16 D_80197CD8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_80197ABC = D_80197ABC + 1; + if (0x18 < D_80197ABC) { + func_8012A4BC(); + D_80197CD8 = 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_80197ABC; +extern void (*D_80197B00)(void); +extern short D_80197B44; +extern short D_80197B46; +extern short D_80197B48; +extern s16 D_80197CD8; + +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_80197ABC = D_80197ABC + 1; + if (D_80197ABC >= 0x19) { + if (D_80197B00 != 0) { + (*D_80197B00)(); + } else { + D_80114F30 = D_80114F30 + D_80197B44; + D_80114F34 = D_80114F34 + D_80197B46; + D_80114F38 = D_80114F38 + D_80197B48; + D_80114F24 = D_80114F24 + D_80197B44; + D_80114F28 = D_80114F28 + D_80197B46; + D_80114F2C = D_80114F2C + D_80197B48; + func_8012A4BC(); + } + D_80197CD8 = 0; + } +} + + + +extern void (*D_80186290[])(void); + +void func_8017BE60(void *a0) { + D_80186290[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_8017BF14); + + +extern s32 D_8012704C; + void func_80180980(void) { + D_8012704C = 0x1; + } + + + +extern void (*D_801862EC[])(void); + +void func_80180994(void *a0) { + D_801862EC[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_801809D0); + + +extern s32 func_800167F0(s32 a0); + +s32 func_80180A14(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_801862F4[])(void); + +void func_80180A38(void *a0) { + D_801862F4[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80180A74); + + +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_80180AB4(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_80180B30(void) { + func_800D1EBC(); + } + + + +extern void (*D_80186300[])(void); + +void func_80180B50(void *a0) { + D_80186300[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80180B8C); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80180C1C); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80180C44); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80180C6C); + + +extern void (*D_80186314[])(void); + +void func_80180D04(void *a0) { + D_80186314[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80180D40); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80180DE0); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80180F78); + + +extern void (*D_80186324[])(void); + +void func_80180FBC(void *a0) { + D_80186324[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80180FF8); + +void func_80181028(void) { +} + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80181030); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_801810C8); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_8018117C); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80181204); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_801812AC); + + +extern void (*D_80186344[])(void); + +void func_801814B0(void *a0) { + D_80186344[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_801814EC); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80181550); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80181580); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80181618); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80181674); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_801816D8); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_8018172C); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_801817D8); + +extern void func_80181864(void); + void func_80181844(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + func_80181864(); + } + + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80181864); + +extern void func_801818DC(void); + void func_801818B8(void *a0) { + *(short *)((char *)a0 + 0xfe) = 0; + *(short *)((char *)a0 + 0x100) = 0; + ((void (*)(void))func_801818DC)(); + } + + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_801818DC); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80181954); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_801819A4); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_801819F4); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80181A5C); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80181B44); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80181B88); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80181C4C); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80181E28); + + +extern void (*D_80186578[])(void); + +void func_80181F6C(void *a0) { + D_80186578[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80181FA8); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_801820AC); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_8018213C); + +void func_80182238(void) { +} + +extern s32 func_80181954(void); + void func_80182240(void) { + func_80181954(); + } + + +extern s32 func_801819A4(void); + void func_80182260(void) { + func_801819A4(); + } + + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80182280); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_801822A0); + +extern void func_8013B7AC(void); + void func_8018232C(void) { + func_8013B7AC(); + } + + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_8018234C); + + +extern void (*D_80195174[])(void); + +void func_80182378(void *a0) { + D_80195174[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_801823B4); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_801825A8); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80182658); + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_80182708); + +void func_801827B8(void) { +} + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8017AE2C", func_801827C0); + + + + diff --git a/src/ov_SC03_117/ov_SC03_117_jr_8017A4AC.c b/src/ov_SC03_117/ov_SC03_117_jr_8017A4AC.c index dcf733566..84a921fde 100644 --- a/src/ov_SC03_117/ov_SC03_117_jr_8017A4AC.c +++ b/src/ov_SC03_117/ov_SC03_117_jr_8017A4AC.c @@ -2939,572 +2939,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801CE2AC; - extern s16 D_801CE2AE; - extern s16 D_801CE2B0; - extern s16 D_801CE2A4; - extern s16 D_801CE2A6; - extern s16 D_801CE2A8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801CE2AC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801CE2AE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801CE2B0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801CE2A4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801CE2A6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801CE2A8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801CE234; -extern u16 D_801CE2B4; -extern u16 D_801CE2B6; -extern u16 D_801CE2B8; -extern s16 D_801CE8D0; - -void func_8017B1D8(void) { - func_8012A418(); - D_801CE8D0 = 0; - D_801CE234 = 0; - D_801CE2B4 = D_80126B5E; - D_801CE2B6 = D_80126B62; - D_801CE2B8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_801881FC[]; - extern s16 D_801CE2AC; - extern s16 D_801CE2A4; - 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_801881FC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801881FC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801CE2AC; - s16 *p78C = &D_801CE2A4; - *(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_801CE8D0 = 1; - D_801CE234 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801CE254; - extern SV4_8017B368 D_801CE25C; - extern s16 D_801CE2AC; - extern s16 D_801CE2A4; - extern u16 D_801881FC; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801CE254; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801CE25C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_801881FC)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_801881FC)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801CE2AC) = loc0; - (*(SV4_8017B368 *)&D_801CE2A4) = loc1; - D_801CE8D0 = 1; - D_801CE234 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_801881FC[]; - extern s16 D_801CE2AC; - extern s16 D_801CE2AE; - extern s16 D_801CE2B0; - extern s16 D_801CE2A4; - extern s16 D_801CE2A6; - extern s16 D_801CE2A8; - 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_801881FC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801881FC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801CE2AC; - s16 *p78C = &D_801CE2A4; - *(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_801CE2AE; - v798 = D_801CE2B0; - v78C = *p78C; - v78E = D_801CE2A6; - v790 = D_801CE2A8; - __asm__ __volatile__(""); - D_801CE8D0 = 1; - D_801CE234 = 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_801CE234; -extern s16 D_801CE2AC; -extern s16 D_801CE2AE; -extern s16 D_801CE2B0; -extern s16 D_801CE2A4; -extern s16 D_801CE2A6; -extern s16 D_801CE2A8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801CE234 = 0; - D_801CE2AC = (s16) D_80114F30; - D_801CE2AE = (s16) D_80114F34; - D_801CE2B0 = (s16) D_80114F38; - D_801CE2A4 = (s16) D_80114F24; - D_801CE2A6 = (s16) D_80114F28; - D_801CE2A8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801CE2C4; -extern s16 D_801CE2C6; -extern s16 D_801CE2C8; -extern s16 D_801CE2CC; -extern s16 D_801CE2CE; -extern s16 D_801CE2D0; - -void func_8017B824(void) { - D_801CE2C4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801CE2C6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801CE2C8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801CE2CC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801CE2CE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801CE2D0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801CE2C4; -extern s16 D_801CE2C6; -extern s16 D_801CE2C8; -extern s16 D_801CE2CC; -extern s16 D_801CE2CE; -extern s16 D_801CE2D0; - -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_801CE2C4; - D_80114F34 = D_801CE2C6; - D_80114F38 = D_801CE2C8; - D_80114F24 = D_801CE2CC; - D_80114F28 = D_801CE2CE; - D_80114F2C = D_801CE2D0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801CE2AC), src[8..15] -> (*(S8_8017B8E8 *)&D_801CE2A4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801CE2AC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801CE2A4) = ((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_801CE2B4; -extern u16 D_801CE2B6; -extern u16 D_801CE2B8; - -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_801CE234; -extern short D_801CE2BC; -extern short D_801CE2BE; -extern short D_801CE2C0; -extern s16 D_801CE2AC; -extern s16 D_801CE2AE; -extern s16 D_801CE2B0; -extern s16 D_801CE2A4; -extern s16 D_801CE2A6; -extern s16 D_801CE2A8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801CE2B4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801CE2B6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801CE2B8); - (*(s16 *)&D_801CE2BC) = buf[0]; - (*(s16 *)&D_801CE2BE) = buf[1]; - (*(s16 *)&D_801CE2C0) = buf[2]; - D_801CE2AC = D_80114F30 + buf[0]; - D_801CE234 = 0; - D_801CE2AE = D_80114F34 + buf[1]; - D_801CE2B0 = D_80114F38 + buf[2]; - D_801CE2A4 = D_80114F24 + buf[0]; - D_801CE2A6 = D_80114F28 + buf[1]; - D_801CE2A8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801CE254; -extern SV4 D_801CE25C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801CE25C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801CE254 = 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_801CE25C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801CE25C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801CE254) = 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_801CE25C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801CE27C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801CE27C; - 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_801CE234; -extern s16 D_801CE8D0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801CE234 = D_801CE234 + 1; - if (D_801CE234 >= 0x1F) { - D_801CE8D0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801CE234; -extern s16 D_801CE8D0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801CE234 = D_801CE234 + 1; - if (0x18 < D_801CE234) { - func_8012A4BC(); - D_801CE8D0 = 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_801CE234; -extern void (*D_801CE278)(void); -extern short D_801CE2BC; -extern short D_801CE2BE; -extern short D_801CE2C0; -extern s16 D_801CE8D0; - -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_801CE234 = D_801CE234 + 1; - if (D_801CE234 >= 0x19) { - if (D_801CE278 != 0) { - (*D_801CE278)(); - } else { - D_80114F30 = D_80114F30 + D_801CE2BC; - D_80114F34 = D_80114F34 + D_801CE2BE; - D_80114F38 = D_80114F38 + D_801CE2C0; - D_80114F24 = D_80114F24 + D_801CE2BC; - D_80114F28 = D_80114F28 + D_801CE2BE; - D_80114F2C = D_80114F2C + D_801CE2C0; - func_8012A4BC(); - } - D_801CE8D0 = 0; - } -} - - - -extern void (*D_8018829C[])(void); - -void func_8017BE60(void *a0) { - D_8018829C[*(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) */ diff --git a/src/ov_SC03_117/ov_SC03_117_jr_8017AE2C.c b/src/ov_SC03_117/ov_SC03_117_jr_8017AE2C.c new file mode 100644 index 000000000..4d0b94a3c --- /dev/null +++ b/src/ov_SC03_117/ov_SC03_117_jr_8017AE2C.c @@ -0,0 +1,3443 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80186DF4; +extern u8 D_80186D64; +extern u8 D_80186D40; +extern u8 D_80186D1C; +extern u8 D_80186DD0; +extern u8 D_80186DAC; +extern u8 D_80186D88; +extern u8 D_80186CF8; +extern void func_80145934(void); +extern u8 D_80186E84; +extern u8 D_80186E60; +extern u8 D_80186E3C; +extern u8 D_80186E18; +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_8018627C[]; +extern unsigned char D_801862AC[]; +extern unsigned char D_801862FC[]; +extern unsigned char D_8018632C[]; +extern unsigned char D_8018635C[]; +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(void); +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_801863AC[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80186474[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801864FC[]; +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_80186504; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801CD130; +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_801CD134; +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_80186534; +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 void 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_801865DC[])(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_80186600[])(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_801865F0; +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_80186614[])(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_80186620[]; +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_80186630[])(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_80186648[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80186638; +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_8018665C[])(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_80186678[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80186668; +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_8018668C[])(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_801866A0[])(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_801866B4; +extern void (*D_801866DC[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801866BC; +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_80186728[])(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_8018672C[])(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(void *a0); +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_80186B90[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80186BA0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801CD168; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80186BC8[])(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_80186BA8; +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_80186BB8; +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_80186C08[])(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_80186C10[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80186BDC; +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_80186C1C[])(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_80186BEC; +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_801CD170; +extern s32 D_801CD17C; +extern s32 D_801CD180; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80186C58[])(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_80186C2C[]; +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_801CD178; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80186EA8[])(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_80186CC8[]; +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_80186F4C[])(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_801870A0[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80186EBC; +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_801870A8[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80186ECC; +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_80186EEC; +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_801870B0[])(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(void); +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_801870D8[])(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_801870E4[])(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_80186F58[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80187188; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018626C[]; +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_8018719C[]; +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_801871D8[]; +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_80187220; +extern u16 D_80187222; +extern u16 D_80187224; +extern s32 D_80187228; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80187230; +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_80186F3C; +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_801872B4[]; +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_80187364[])(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_80187394[]; +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_801873F8; +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_801CD188[]; +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_8018741C[])(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_801CD1E0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80187464[])(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_80187454; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801CC988[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_8018746C[])(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_801874C0[])(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_80187488; +extern s16 D_801874BC; +extern s16 D_801874BA; +extern s16 D_801874B8; +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_801874CC[])(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_801CD240; +extern u8 D_801CD241; +extern u8 D_801CD242; +extern u8 D_801CD243; +extern u8 D_801CD244; +extern u8 D_801CD245; +extern u8 D_801CD246; +extern u8 D_801CD247; +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_801874DC[])(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_801CD280; +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_80187520[])(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_8018759C[]; +extern s32 D_801875BC[]; +extern u8 D_80187638[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80187658[]; +extern u8 D_80187678[]; +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_80187714[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80187790[])(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_801CC998; +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_8018779C[])(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_801877A4[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018786C[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018787C[])(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_8018788C[])(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_80187898[])(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_801877F8[]; +extern u8 D_8018780C[]; +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_801878B0[])(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_801878B8[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_801878C0[])(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_801878C8[])(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_801878D0[])(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_801878D8[])(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_801878E0[])(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_80187994[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018799C[])(void); +extern void func_80169F00(void *a0); +extern char D_8018794C[]; +extern char D_8018790C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_801879D4[])(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_801879E0[])(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_80187A28[])(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_80187AA4[])(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_801CD5A0; +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_80187A98[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80187ADC[]; +extern unsigned short D_80187AE4[]; +extern unsigned short D_80187AEC[]; +extern unsigned char D_801CD5A8[]; +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_801CD5A0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80187AF4[])(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_801CD6DC; +extern M2C_UNK D_801CD6E0; +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_801CD668; +extern void (*D_80187B24[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801CD6E4[]; +extern u8 D_801CD6EC[]; +extern u8 D_801CD69C[]; +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_80187B2C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80187B48[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80187B50[])(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_80187BB8[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80187B5C; +extern u8 D_80187B68; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80187BEC[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80187BF4[])(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_80187C48[])(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_80187C7C[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80187C6C[]; +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_80187C98; +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); +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_80187D10[])(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_80187D18[])(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_80187D20[])(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_80187D28[])(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_80187D30[])(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_80187D38[])(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_80187D44[])(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_80187D50[])(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_80187D5C[])(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_80187D6C[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80187D7C[])(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_80187D84[])(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_80187D8C[])(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_80187D94[])(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_80187D9C[])(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_80187DA4[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80187DAC[])(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_80187DB4[])(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_80187DBC[])(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_80187DC4[])(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_80187DCC[])(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_80187DD4[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80187DDC[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80187DE4[])(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_80187DEC[])(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_80187DF4[])(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_80187DFC[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80187E04[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80187E0C[])(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_80187E14[])(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_80187E1C[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80187E24[])(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_80187E2C[])(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_80187E70[])(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_80187E34; +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_80187EA0[])(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_80187EDC[])(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(s32); +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_80187F34[])(); +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_80187F44[])(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_80187F4C[])(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_801880B4[])(); +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_801880C0[])(); +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_801CCBE0; +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 int func_801789AC(void); +extern s16 D_801CE8D0; +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_801CDE20; +extern short D_801CE944; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801CE24C; +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_801CE274; +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_801CE230; +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_801CE8A0; +extern s16 D_801CE8A2; +extern s16 D_801CE8AC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801CE8A0; + + 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_801CE8AC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801CE8A0+0xC == &D_801CE8AC; 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_801CE8A0 + 0xC)) < 0x101) { + D_801CE8A0 = 0; + D_801CE8A2 = 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_801CE8AC); + 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_801CE8A0 + 0xC)) < 0x101) { + D_801CE8A0 = 0; + D_801CE8A2 = 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_801CE2AC; + extern s16 D_801CE2AE; + extern s16 D_801CE2B0; + extern s16 D_801CE2A4; + extern s16 D_801CE2A6; + extern s16 D_801CE2A8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801CE2AC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801CE2AE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801CE2B0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801CE2A4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801CE2A6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801CE2A8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801CE234; +extern u16 D_801CE2B4; +extern u16 D_801CE2B6; +extern u16 D_801CE2B8; +extern s16 D_801CE8D0; + +void func_8017B1D8(void) { + func_8012A418(); + D_801CE8D0 = 0; + D_801CE234 = 0; + D_801CE2B4 = D_80126B5E; + D_801CE2B6 = D_80126B62; + D_801CE2B8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_801881FC[]; + extern s16 D_801CE2AC; + extern s16 D_801CE2A4; + 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_801881FC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801881FC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801CE2AC; + s16 *p78C = &D_801CE2A4; + *(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_801CE8D0 = 1; + D_801CE234 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801CE254; + extern SV4_8017B368 D_801CE25C; + extern s16 D_801CE2AC; + extern s16 D_801CE2A4; + extern u16 D_801881FC; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801CE254; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801CE25C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_801881FC)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_801881FC)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801CE2AC) = loc0; + (*(SV4_8017B368 *)&D_801CE2A4) = loc1; + D_801CE8D0 = 1; + D_801CE234 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_801881FC[]; + extern s16 D_801CE2AC; + extern s16 D_801CE2AE; + extern s16 D_801CE2B0; + extern s16 D_801CE2A4; + extern s16 D_801CE2A6; + extern s16 D_801CE2A8; + 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_801881FC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801881FC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801CE2AC; + s16 *p78C = &D_801CE2A4; + *(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_801CE2AE; + v798 = D_801CE2B0; + v78C = *p78C; + v78E = D_801CE2A6; + v790 = D_801CE2A8; + __asm__ __volatile__(""); + D_801CE8D0 = 1; + D_801CE234 = 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_801CE234; +extern s16 D_801CE2AC; +extern s16 D_801CE2AE; +extern s16 D_801CE2B0; +extern s16 D_801CE2A4; +extern s16 D_801CE2A6; +extern s16 D_801CE2A8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801CE234 = 0; + D_801CE2AC = (s16) D_80114F30; + D_801CE2AE = (s16) D_80114F34; + D_801CE2B0 = (s16) D_80114F38; + D_801CE2A4 = (s16) D_80114F24; + D_801CE2A6 = (s16) D_80114F28; + D_801CE2A8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801CE2C4; +extern s16 D_801CE2C6; +extern s16 D_801CE2C8; +extern s16 D_801CE2CC; +extern s16 D_801CE2CE; +extern s16 D_801CE2D0; + +void func_8017B824(void) { + D_801CE2C4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801CE2C6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801CE2C8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801CE2CC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801CE2CE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801CE2D0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801CE2C4; +extern s16 D_801CE2C6; +extern s16 D_801CE2C8; +extern s16 D_801CE2CC; +extern s16 D_801CE2CE; +extern s16 D_801CE2D0; + +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_801CE2C4; + D_80114F34 = D_801CE2C6; + D_80114F38 = D_801CE2C8; + D_80114F24 = D_801CE2CC; + D_80114F28 = D_801CE2CE; + D_80114F2C = D_801CE2D0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801CE2AC), src[8..15] -> (*(S8_8017B8E8 *)&D_801CE2A4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801CE2AC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801CE2A4) = ((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_801CE2B4; +extern u16 D_801CE2B6; +extern u16 D_801CE2B8; + +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_801CE234; +extern short D_801CE2BC; +extern short D_801CE2BE; +extern short D_801CE2C0; +extern s16 D_801CE2AC; +extern s16 D_801CE2AE; +extern s16 D_801CE2B0; +extern s16 D_801CE2A4; +extern s16 D_801CE2A6; +extern s16 D_801CE2A8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801CE2B4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801CE2B6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801CE2B8); + (*(s16 *)&D_801CE2BC) = buf[0]; + (*(s16 *)&D_801CE2BE) = buf[1]; + (*(s16 *)&D_801CE2C0) = buf[2]; + D_801CE2AC = D_80114F30 + buf[0]; + D_801CE234 = 0; + D_801CE2AE = D_80114F34 + buf[1]; + D_801CE2B0 = D_80114F38 + buf[2]; + D_801CE2A4 = D_80114F24 + buf[0]; + D_801CE2A6 = D_80114F28 + buf[1]; + D_801CE2A8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801CE254; +extern SV4 D_801CE25C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801CE25C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801CE254 = 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_801CE25C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801CE25C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801CE254) = 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_801CE25C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801CE27C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801CE27C; + 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_801CE234; +extern s16 D_801CE8D0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801CE234 = D_801CE234 + 1; + if (D_801CE234 >= 0x1F) { + D_801CE8D0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801CE234; +extern s16 D_801CE8D0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801CE234 = D_801CE234 + 1; + if (0x18 < D_801CE234) { + func_8012A4BC(); + D_801CE8D0 = 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_801CE234; +extern void (*D_801CE278)(void); +extern short D_801CE2BC; +extern short D_801CE2BE; +extern short D_801CE2C0; +extern s16 D_801CE8D0; + +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_801CE234 = D_801CE234 + 1; + if (D_801CE234 >= 0x19) { + if (D_801CE278 != 0) { + (*D_801CE278)(); + } else { + D_80114F30 = D_80114F30 + D_801CE2BC; + D_80114F34 = D_80114F34 + D_801CE2BE; + D_80114F38 = D_80114F38 + D_801CE2C0; + D_80114F24 = D_80114F24 + D_801CE2BC; + D_80114F28 = D_80114F28 + D_801CE2BE; + D_80114F2C = D_80114F2C + D_801CE2C0; + func_8012A4BC(); + } + D_801CE8D0 = 0; + } +} + + + +extern void (*D_8018829C[])(void); + +void func_8017BE60(void *a0) { + D_8018829C[*(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) */ + diff --git a/src/ov_SC03_118/ov_SC03_118_jr_8017A4AC.c b/src/ov_SC03_118/ov_SC03_118_jr_8017A4AC.c index 07478cc14..3b2b030b0 100644 --- a/src/ov_SC03_118/ov_SC03_118_jr_8017A4AC.c +++ b/src/ov_SC03_118/ov_SC03_118_jr_8017A4AC.c @@ -2946,922 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801D41FC; - extern s16 D_801D41FE; - extern s16 D_801D4200; - extern s16 D_801D41F4; - extern s16 D_801D41F6; - extern s16 D_801D41F8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D41FC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D41FE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D4200, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D41F4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D41F6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D41F8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801D4184; -extern u16 D_801D4204; -extern u16 D_801D4206; -extern u16 D_801D4208; -extern s16 D_801D47D8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801D47D8 = 0; - D_801D4184 = 0; - D_801D4204 = D_80126B5E; - D_801D4206 = D_80126B62; - D_801D4208 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018D2A8[]; - extern s16 D_801D41FC; - extern s16 D_801D41F4; - 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_8018D2A8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018D2A8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D41FC; - s16 *p78C = &D_801D41F4; - *(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_801D47D8 = 1; - D_801D4184 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D41A4; - extern SV4_8017B368 D_801D41AC; - extern s16 D_801D41FC; - extern s16 D_801D41F4; - extern u16 D_8018D2A8; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801D41A4; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801D41AC; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018D2A8)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018D2A8)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801D41FC) = loc0; - (*(SV4_8017B368 *)&D_801D41F4) = loc1; - D_801D47D8 = 1; - D_801D4184 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018D2A8[]; - extern s16 D_801D41FC; - extern s16 D_801D41FE; - extern s16 D_801D4200; - extern s16 D_801D41F4; - extern s16 D_801D41F6; - extern s16 D_801D41F8; - 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_8018D2A8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018D2A8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D41FC; - s16 *p78C = &D_801D41F4; - *(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_801D41FE; - v798 = D_801D4200; - v78C = *p78C; - v78E = D_801D41F6; - v790 = D_801D41F8; - __asm__ __volatile__(""); - D_801D47D8 = 1; - D_801D4184 = 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_801D4184; -extern s16 D_801D41FC; -extern s16 D_801D41FE; -extern s16 D_801D4200; -extern s16 D_801D41F4; -extern s16 D_801D41F6; -extern s16 D_801D41F8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801D4184 = 0; - D_801D41FC = (s16) D_80114F30; - D_801D41FE = (s16) D_80114F34; - D_801D4200 = (s16) D_80114F38; - D_801D41F4 = (s16) D_80114F24; - D_801D41F6 = (s16) D_80114F28; - D_801D41F8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801D4214; -extern s16 D_801D4216; -extern s16 D_801D4218; -extern s16 D_801D421C; -extern s16 D_801D421E; -extern s16 D_801D4220; - -void func_8017B824(void) { - D_801D4214 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801D4216 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801D4218 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801D421C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801D421E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801D4220 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801D4214; -extern s16 D_801D4216; -extern s16 D_801D4218; -extern s16 D_801D421C; -extern s16 D_801D421E; -extern s16 D_801D4220; - -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_801D4214; - D_80114F34 = D_801D4216; - D_80114F38 = D_801D4218; - D_80114F24 = D_801D421C; - D_80114F28 = D_801D421E; - D_80114F2C = D_801D4220; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801D41FC), src[8..15] -> (*(S8_8017B8E8 *)&D_801D41F4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801D41FC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801D41F4) = ((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_801D4204; -extern u16 D_801D4206; -extern u16 D_801D4208; - -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_801D4184; -extern short D_801D420C; -extern short D_801D420E; -extern short D_801D4210; -extern s16 D_801D41FC; -extern s16 D_801D41FE; -extern s16 D_801D4200; -extern s16 D_801D41F4; -extern s16 D_801D41F6; -extern s16 D_801D41F8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D4204); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D4206); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D4208); - (*(s16 *)&D_801D420C) = buf[0]; - (*(s16 *)&D_801D420E) = buf[1]; - (*(s16 *)&D_801D4210) = buf[2]; - D_801D41FC = D_80114F30 + buf[0]; - D_801D4184 = 0; - D_801D41FE = D_80114F34 + buf[1]; - D_801D4200 = D_80114F38 + buf[2]; - D_801D41F4 = D_80114F24 + buf[0]; - D_801D41F6 = D_80114F28 + buf[1]; - D_801D41F8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801D41A4; -extern SV4 D_801D41AC; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D41AC) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801D41A4 = 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_801D41AC = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D41AC)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801D41A4) = 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_801D41AC) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801D41CC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801D41CC; - 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_801D4184; -extern s16 D_801D47D8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801D4184 = D_801D4184 + 1; - if (D_801D4184 >= 0x1F) { - D_801D47D8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801D4184; -extern s16 D_801D47D8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801D4184 = D_801D4184 + 1; - if (0x18 < D_801D4184) { - func_8012A4BC(); - D_801D47D8 = 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_801D4184; -extern void (*D_801D41C8)(void); -extern short D_801D420C; -extern short D_801D420E; -extern short D_801D4210; -extern s16 D_801D47D8; - -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_801D4184 = D_801D4184 + 1; - if (D_801D4184 >= 0x19) { - if (D_801D41C8 != 0) { - (*D_801D41C8)(); - } else { - D_80114F30 = D_80114F30 + D_801D420C; - D_80114F34 = D_80114F34 + D_801D420E; - D_80114F38 = D_80114F38 + D_801D4210; - D_80114F24 = D_80114F24 + D_801D420C; - D_80114F28 = D_80114F28 + D_801D420E; - D_80114F2C = D_80114F2C + D_801D4210; - func_8012A4BC(); - } - D_801D47D8 = 0; - } -} - - - -extern void (*D_8018D348[])(void); - -void func_8017BE60(void *a0) { - D_8018D348[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017BEBC); - - -extern void (*D_8018D354[])(void); - -void func_8017BEE4(void *a0) { - D_8018D354[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017BF20); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017BF58); - -DEFINE_func_8017BF98() /* dedup: shared engine-core @0x8017BF98 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017BFA0); - - -extern void (*D_8018D360[])(void); - -void func_8017BFC8(void *a0) { - D_8018D360[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017C004); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017C03C); - -DEFINE_func_8017C07C() /* dedup: shared engine-core @0x8017C07C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017C084); - - -extern void (*D_8018D420[])(void); - -void func_8017C0C8(void *a0) { - D_8018D420[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017C104); - -extern void func_8017C154(void); -void func_8017C12C(void) { - func_8017C154(); -} - - -DEFINE_func_8017C14C() /* dedup: shared engine-core @0x8017C14C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017C154); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017C290); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017C624); - - -extern void (*D_8018D460[])(void); - -void func_8017C664(void *a0) { - D_8018D460[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017C6A0); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017C814); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017C8FC); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017CC44); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017CCC4); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017CD10); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017CE10); - - -extern void (*D_8018D480[])(void); - -void func_8017CE54(void *a0) { - D_8018D480[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017CE90); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017CFBC); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017D098); - - -extern void (*D_8018D490[])(void); - -void func_8017D0DC(void *a0) { - D_8018D490[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017D118); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017D194); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017D1E0); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017D318); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017D5F8); - - -extern void (*D_8018D49C[])(void); - -void func_8017D63C(void *a0) { - D_8018D49C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017D678); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017D75C); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017D804); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017D890); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017D900); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017D9C8); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017DA98); - - -extern void (*D_8018D620[])(void); - -void func_8017DB00(void *a0) { - D_8018D620[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017DB3C); - -extern s32 func_80171CC4(void *a0, void *a1); -extern void func_80171A1C(u8 *a0); -extern s16 D_80126B36; -void func_8017DB74(u8 *a0) { - s16 *p = &D_80126B36; - if (*p != 0) { - if (func_80171CC4(a0, p - 3) == 0) { - return; - } - } - func_80171A1C(a0); -} - - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017DBC4); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017DC28); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017DC4C); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017DCC0); - -DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017DD7C); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017DDBC); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017DE24); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017DE8C); - -DEFINE_func_8017DF7C() /* dedup: shared engine-core @0x8017DF7C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017DF84); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017E120); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017E324); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017E718); - - -extern void (*D_8018D920[])(void); - -void func_8017E898(void *a0) { - D_8018D920[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017E8D4); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017E948); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017EA24); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017EC38); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017ED0C); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017EDDC); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017EE34); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017EF2C); - - -extern void (*D_8018D95C[])(void); - -void func_8017EF6C(void *a0) { - D_8018D95C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017EFA8); - -extern void func_80146C3C(void); -void func_8017F16C(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_8018D964[])(void); - -void func_8017F200(void *a0) { - D_8018D964[*(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_8018D950; - -void func_8017F23C(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_8018D950, 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_8017F2E0(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; - } -} - - - -extern void (*D_8018DA1C[])(void); - -void func_8017F344(void *a0) { - D_8018DA1C[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017F380); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017F3C0); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017F43C); - -DEFINE_func_8017F49C() /* dedup: shared engine-core @0x8017F49C (src/shared) */ - -DEFINE_func_8017F4A4() /* dedup: shared engine-core @0x8017F4A4 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017F4CC); - -extern s16 D_80126B0C; - s32 func_8017F4E8(void) { - return D_80126B0C; - } - - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017F4F8); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017F558); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017F624); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017F7F0); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017F84C); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017F8A8); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017F90C); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017F9BC); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017FA80); - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017A4AC", func_8017FB40); diff --git a/src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c b/src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c new file mode 100644 index 000000000..d90355b76 --- /dev/null +++ b/src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c @@ -0,0 +1,3799 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018BEA0; +extern u8 D_8018BE10; +extern u8 D_8018BDEC; +extern u8 D_8018BDC8; +extern u8 D_8018BE7C; +extern u8 D_8018BE58; +extern u8 D_8018BE34; +extern u8 D_8018BDA4; +extern void func_80145934(void); +extern u8 D_8018BF30; +extern u8 D_8018BF0C; +extern u8 D_8018BEE8; +extern u8 D_8018BEC4; +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_8018B328[]; +extern unsigned char D_8018B358[]; +extern unsigned char D_8018B3A8[]; +extern unsigned char D_8018B3D8[]; +extern unsigned char D_8018B408[]; +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(void); +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_8018B458[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018B520[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018B5A8[]; +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_8018B5B0; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801D3080; +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_801D3084; +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_8018B5E0; +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 void 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_8018B688[])(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_8018B6AC[])(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_8018B69C; +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_8018B6C0[])(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_8018B6CC[]; +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_8018B6DC[])(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_8018B6F4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018B6E4; +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_8018B708[])(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_8018B724[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018B714; +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_8018B738[])(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_8018B74C[])(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_8018B760; +extern void (*D_8018B788[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018B768; +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_8018B7D4[])(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_8018B7D8[])(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(void *a0); +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_8018BC3C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018BC4C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801D30B8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018BC74[])(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_8018BC54; +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_8018BC64; +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_8018BCB4[])(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_8018BCBC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018BC88; +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_8018BCC8[])(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_8018BC98; +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_801D30C0; +extern s32 D_801D30CC; +extern s32 D_801D30D0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018BD04[])(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_8018BCD8[]; +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_801D30C8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018BF54[])(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_8018BD74[]; +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_8018BFF8[])(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_8018C14C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018BF68; +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_8018C154[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018BF78; +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_8018BF98; +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_8018C15C[])(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(void); +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_8018C184[])(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_8018C190[])(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_8018C004[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018C234; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018B318[]; +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_8018C248[]; +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_8018C284[]; +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_8018C2CC; +extern u16 D_8018C2CE; +extern u16 D_8018C2D0; +extern s32 D_8018C2D4; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018C2DC; +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_8018BFE8; +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_8018C360[]; +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_8018C410[])(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_8018C440[]; +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_8018C4A4; +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_801D30D8[]; +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_8018C4C8[])(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_801D3130[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018C510[])(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_8018C500; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801D28E4[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_8018C518[])(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_8018C56C[])(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_8018C534; +extern s16 D_8018C568; +extern s16 D_8018C566; +extern s16 D_8018C564; +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_8018C578[])(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_801D3190; +extern u8 D_801D3191; +extern u8 D_801D3192; +extern u8 D_801D3193; +extern u8 D_801D3194; +extern u8 D_801D3195; +extern u8 D_801D3196; +extern u8 D_801D3197; +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_8018C588[])(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_801D31D0; +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_8018C5CC[])(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_8018C648[]; +extern s32 D_8018C668[]; +extern u8 D_8018C6E4[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018C704[]; +extern u8 D_8018C724[]; +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_8018C7C0[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018C83C[])(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_801D28F4; +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_8018C848[])(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_8018C850[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018C918[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018C928[])(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_8018C938[])(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_8018C944[])(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_8018C8A4[]; +extern u8 D_8018C8B8[]; +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_8018C95C[])(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_8018C964[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018C96C[])(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_8018C974[])(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_8018C97C[])(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_8018C984[])(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_8018C98C[])(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_8018CA40[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018CA48[])(void); +extern void func_80169F00(void *a0); +extern char D_8018C9F8[]; +extern char D_8018C9B8[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018CA80[])(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_8018CA8C[])(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_8018CAD4[])(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_8018CB50[])(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_801D34F0; +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_8018CB44[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018CB88[]; +extern unsigned short D_8018CB90[]; +extern unsigned short D_8018CB98[]; +extern unsigned char D_801D34F8[]; +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_801D34F0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018CBA0[])(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_801D362C; +extern M2C_UNK D_801D3630; +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_801D35B8; +extern void (*D_8018CBD0[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801D3634[]; +extern u8 D_801D363C[]; +extern u8 D_801D35EC[]; +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_8018CBD8[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018CBF4[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018CBFC[])(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_8018CC64[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018CC08; +extern u8 D_8018CC14; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018CC98[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018CCA0[])(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_8018CCF4[])(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_8018CD28[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018CD18[]; +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_8018CD44; +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); +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_8018CDBC[])(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_8018CDC4[])(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_8018CDCC[])(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_8018CDD4[])(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_8018CDDC[])(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_8018CDE4[])(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_8018CDF0[])(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_8018CDFC[])(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_8018CE08[])(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_8018CE18[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018CE28[])(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_8018CE30[])(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_8018CE38[])(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_8018CE40[])(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_8018CE48[])(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_8018CE50[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018CE58[])(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_8018CE60[])(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_8018CE68[])(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_8018CE70[])(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_8018CE78[])(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_8018CE80[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018CE88[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018CE90[])(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_8018CE98[])(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_8018CEA0[])(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_8018CEA8[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018CEB0[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018CEB8[])(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_8018CEC0[])(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_8018CEC8[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018CED0[])(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_8018CED8[])(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_8018CF1C[])(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_8018CEE0; +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_8018CF4C[])(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_8018CF88[])(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(s32); +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_8018CFE0[])(); +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_8018CFF0[])(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_8018CFF8[])(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_8018D160[])(); +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_8018D16C[])(); +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_801D2B3C; +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 int func_801789AC(void); +extern s16 D_801D47D8; +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_801D3D70; +extern short D_801D484C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801D419C; +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_801D41C4; +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_801D4180; +extern s32 func_8017A3B0(void); +extern short D_801D41BC; +extern short D_801D41B8; +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_801D47A8; +extern s16 D_801D47AA; +extern s16 D_801D47B4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801D47A8; + + 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_801D47B4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801D47A8+0xC == &D_801D47B4; 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_801D47A8 + 0xC)) < 0x101) { + D_801D47A8 = 0; + D_801D47AA = 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_801D47B4); + 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_801D47A8 + 0xC)) < 0x101) { + D_801D47A8 = 0; + D_801D47AA = 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_801D41FC; + extern s16 D_801D41FE; + extern s16 D_801D4200; + extern s16 D_801D41F4; + extern s16 D_801D41F6; + extern s16 D_801D41F8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D41FC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D41FE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D4200, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D41F4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D41F6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D41F8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801D4184; +extern u16 D_801D4204; +extern u16 D_801D4206; +extern u16 D_801D4208; +extern s16 D_801D47D8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801D47D8 = 0; + D_801D4184 = 0; + D_801D4204 = D_80126B5E; + D_801D4206 = D_80126B62; + D_801D4208 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018D2A8[]; + extern s16 D_801D41FC; + extern s16 D_801D41F4; + 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_8018D2A8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018D2A8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D41FC; + s16 *p78C = &D_801D41F4; + *(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_801D47D8 = 1; + D_801D4184 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D41A4; + extern SV4_8017B368 D_801D41AC; + extern s16 D_801D41FC; + extern s16 D_801D41F4; + extern u16 D_8018D2A8; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801D41A4; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801D41AC; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018D2A8)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018D2A8)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801D41FC) = loc0; + (*(SV4_8017B368 *)&D_801D41F4) = loc1; + D_801D47D8 = 1; + D_801D4184 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018D2A8[]; + extern s16 D_801D41FC; + extern s16 D_801D41FE; + extern s16 D_801D4200; + extern s16 D_801D41F4; + extern s16 D_801D41F6; + extern s16 D_801D41F8; + 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_8018D2A8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018D2A8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D41FC; + s16 *p78C = &D_801D41F4; + *(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_801D41FE; + v798 = D_801D4200; + v78C = *p78C; + v78E = D_801D41F6; + v790 = D_801D41F8; + __asm__ __volatile__(""); + D_801D47D8 = 1; + D_801D4184 = 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_801D4184; +extern s16 D_801D41FC; +extern s16 D_801D41FE; +extern s16 D_801D4200; +extern s16 D_801D41F4; +extern s16 D_801D41F6; +extern s16 D_801D41F8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801D4184 = 0; + D_801D41FC = (s16) D_80114F30; + D_801D41FE = (s16) D_80114F34; + D_801D4200 = (s16) D_80114F38; + D_801D41F4 = (s16) D_80114F24; + D_801D41F6 = (s16) D_80114F28; + D_801D41F8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801D4214; +extern s16 D_801D4216; +extern s16 D_801D4218; +extern s16 D_801D421C; +extern s16 D_801D421E; +extern s16 D_801D4220; + +void func_8017B824(void) { + D_801D4214 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801D4216 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801D4218 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801D421C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801D421E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801D4220 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801D4214; +extern s16 D_801D4216; +extern s16 D_801D4218; +extern s16 D_801D421C; +extern s16 D_801D421E; +extern s16 D_801D4220; + +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_801D4214; + D_80114F34 = D_801D4216; + D_80114F38 = D_801D4218; + D_80114F24 = D_801D421C; + D_80114F28 = D_801D421E; + D_80114F2C = D_801D4220; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801D41FC), src[8..15] -> (*(S8_8017B8E8 *)&D_801D41F4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801D41FC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801D41F4) = ((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_801D4204; +extern u16 D_801D4206; +extern u16 D_801D4208; + +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_801D4184; +extern short D_801D420C; +extern short D_801D420E; +extern short D_801D4210; +extern s16 D_801D41FC; +extern s16 D_801D41FE; +extern s16 D_801D4200; +extern s16 D_801D41F4; +extern s16 D_801D41F6; +extern s16 D_801D41F8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D4204); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D4206); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D4208); + (*(s16 *)&D_801D420C) = buf[0]; + (*(s16 *)&D_801D420E) = buf[1]; + (*(s16 *)&D_801D4210) = buf[2]; + D_801D41FC = D_80114F30 + buf[0]; + D_801D4184 = 0; + D_801D41FE = D_80114F34 + buf[1]; + D_801D4200 = D_80114F38 + buf[2]; + D_801D41F4 = D_80114F24 + buf[0]; + D_801D41F6 = D_80114F28 + buf[1]; + D_801D41F8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801D41A4; +extern SV4 D_801D41AC; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D41AC) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801D41A4 = 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_801D41AC = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D41AC)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801D41A4) = 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_801D41AC) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801D41CC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801D41CC; + 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_801D4184; +extern s16 D_801D47D8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801D4184 = D_801D4184 + 1; + if (D_801D4184 >= 0x1F) { + D_801D47D8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801D4184; +extern s16 D_801D47D8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801D4184 = D_801D4184 + 1; + if (0x18 < D_801D4184) { + func_8012A4BC(); + D_801D47D8 = 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_801D4184; +extern void (*D_801D41C8)(void); +extern short D_801D420C; +extern short D_801D420E; +extern short D_801D4210; +extern s16 D_801D47D8; + +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_801D4184 = D_801D4184 + 1; + if (D_801D4184 >= 0x19) { + if (D_801D41C8 != 0) { + (*D_801D41C8)(); + } else { + D_80114F30 = D_80114F30 + D_801D420C; + D_80114F34 = D_80114F34 + D_801D420E; + D_80114F38 = D_80114F38 + D_801D4210; + D_80114F24 = D_80114F24 + D_801D420C; + D_80114F28 = D_80114F28 + D_801D420E; + D_80114F2C = D_80114F2C + D_801D4210; + func_8012A4BC(); + } + D_801D47D8 = 0; + } +} + + + +extern void (*D_8018D348[])(void); + +void func_8017BE60(void *a0) { + D_8018D348[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017BEBC); + + +extern void (*D_8018D354[])(void); + +void func_8017BEE4(void *a0) { + D_8018D354[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017BF20); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017BF58); + +DEFINE_func_8017BF98() /* dedup: shared engine-core @0x8017BF98 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017BFA0); + + +extern void (*D_8018D360[])(void); + +void func_8017BFC8(void *a0) { + D_8018D360[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017C004); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017C03C); + +DEFINE_func_8017C07C() /* dedup: shared engine-core @0x8017C07C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017C084); + + +extern void (*D_8018D420[])(void); + +void func_8017C0C8(void *a0) { + D_8018D420[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017C104); + +extern void func_8017C154(void); +void func_8017C12C(void) { + func_8017C154(); +} + + +DEFINE_func_8017C14C() /* dedup: shared engine-core @0x8017C14C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017C154); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017C290); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017C624); + + +extern void (*D_8018D460[])(void); + +void func_8017C664(void *a0) { + D_8018D460[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017C6A0); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017C814); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017C8FC); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017CC44); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017CCC4); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017CD10); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017CE10); + + +extern void (*D_8018D480[])(void); + +void func_8017CE54(void *a0) { + D_8018D480[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017CE90); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017CFBC); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017D098); + + +extern void (*D_8018D490[])(void); + +void func_8017D0DC(void *a0) { + D_8018D490[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017D118); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017D194); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017D1E0); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017D318); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017D5F8); + + +extern void (*D_8018D49C[])(void); + +void func_8017D63C(void *a0) { + D_8018D49C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017D678); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017D75C); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017D804); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017D890); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017D900); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017D9C8); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017DA98); + + +extern void (*D_8018D620[])(void); + +void func_8017DB00(void *a0) { + D_8018D620[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017DB3C); + +extern s32 func_80171CC4(void *a0, void *a1); +extern void func_80171A1C(u8 *a0); +extern s16 D_80126B36; +void func_8017DB74(u8 *a0) { + s16 *p = &D_80126B36; + if (*p != 0) { + if (func_80171CC4(a0, p - 3) == 0) { + return; + } + } + func_80171A1C(a0); +} + + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017DBC4); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017DC28); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017DC4C); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017DCC0); + +DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017DD7C); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017DDBC); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017DE24); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017DE8C); + +DEFINE_func_8017DF7C() /* dedup: shared engine-core @0x8017DF7C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017DF84); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017E120); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017E324); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017E718); + + +extern void (*D_8018D920[])(void); + +void func_8017E898(void *a0) { + D_8018D920[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017E8D4); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017E948); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017EA24); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017EC38); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017ED0C); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017EDDC); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017EE34); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017EF2C); + + +extern void (*D_8018D95C[])(void); + +void func_8017EF6C(void *a0) { + D_8018D95C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017EFA8); + +extern void func_80146C3C(void); +void func_8017F16C(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_8018D964[])(void); + +void func_8017F200(void *a0) { + D_8018D964[*(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_8018D950; + +void func_8017F23C(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_8018D950, 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_8017F2E0(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; + } +} + + + +extern void (*D_8018DA1C[])(void); + +void func_8017F344(void *a0) { + D_8018DA1C[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017F380); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017F3C0); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017F43C); + +DEFINE_func_8017F49C() /* dedup: shared engine-core @0x8017F49C (src/shared) */ + +DEFINE_func_8017F4A4() /* dedup: shared engine-core @0x8017F4A4 (src/shared) */ + + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017F4CC); + +extern s16 D_80126B0C; + s32 func_8017F4E8(void) { + return D_80126B0C; + } + + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017F4F8); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017F558); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017F624); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017F7F0); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017F84C); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017F8A8); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017F90C); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017F9BC); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017FA80); + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017FB40); + diff --git a/src/ov_SC03_119/ov_SC03_119_jr_8017A4AC.c b/src/ov_SC03_119/ov_SC03_119_jr_8017A4AC.c index de27b5747..c18d13476 100644 --- a/src/ov_SC03_119/ov_SC03_119_jr_8017A4AC.c +++ b/src/ov_SC03_119/ov_SC03_119_jr_8017A4AC.c @@ -2939,921 +2939,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801D41FC; - extern s16 D_801D41FE; - extern s16 D_801D4200; - extern s16 D_801D41F4; - extern s16 D_801D41F6; - extern s16 D_801D41F8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D41FC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D41FE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D4200, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D41F4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D41F6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D41F8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801D4184; -extern u16 D_801D4204; -extern u16 D_801D4206; -extern u16 D_801D4208; -extern s16 D_801D47D8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801D47D8 = 0; - D_801D4184 = 0; - D_801D4204 = D_80126B5E; - D_801D4206 = D_80126B62; - D_801D4208 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018D2A8[]; - extern s16 D_801D41FC; - extern s16 D_801D41F4; - 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_8018D2A8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018D2A8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D41FC; - s16 *p78C = &D_801D41F4; - *(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_801D47D8 = 1; - D_801D4184 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D41A4; - extern SV4_8017B368 D_801D41AC; - extern s16 D_801D41FC; - extern s16 D_801D41F4; - extern u16 D_8018D2A8; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801D41A4; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801D41AC; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018D2A8)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018D2A8)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801D41FC) = loc0; - (*(SV4_8017B368 *)&D_801D41F4) = loc1; - D_801D47D8 = 1; - D_801D4184 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018D2A8[]; - extern s16 D_801D41FC; - extern s16 D_801D41FE; - extern s16 D_801D4200; - extern s16 D_801D41F4; - extern s16 D_801D41F6; - extern s16 D_801D41F8; - 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_8018D2A8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018D2A8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D41FC; - s16 *p78C = &D_801D41F4; - *(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_801D41FE; - v798 = D_801D4200; - v78C = *p78C; - v78E = D_801D41F6; - v790 = D_801D41F8; - __asm__ __volatile__(""); - D_801D47D8 = 1; - D_801D4184 = 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_801D4184; -extern s16 D_801D41FC; -extern s16 D_801D41FE; -extern s16 D_801D4200; -extern s16 D_801D41F4; -extern s16 D_801D41F6; -extern s16 D_801D41F8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801D4184 = 0; - D_801D41FC = (s16) D_80114F30; - D_801D41FE = (s16) D_80114F34; - D_801D4200 = (s16) D_80114F38; - D_801D41F4 = (s16) D_80114F24; - D_801D41F6 = (s16) D_80114F28; - D_801D41F8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801D4214; -extern s16 D_801D4216; -extern s16 D_801D4218; -extern s16 D_801D421C; -extern s16 D_801D421E; -extern s16 D_801D4220; - -void func_8017B824(void) { - D_801D4214 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801D4216 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801D4218 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801D421C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801D421E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801D4220 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801D4214; -extern s16 D_801D4216; -extern s16 D_801D4218; -extern s16 D_801D421C; -extern s16 D_801D421E; -extern s16 D_801D4220; - -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_801D4214; - D_80114F34 = D_801D4216; - D_80114F38 = D_801D4218; - D_80114F24 = D_801D421C; - D_80114F28 = D_801D421E; - D_80114F2C = D_801D4220; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801D41FC), src[8..15] -> (*(S8_8017B8E8 *)&D_801D41F4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801D41FC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801D41F4) = ((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_801D4204; -extern u16 D_801D4206; -extern u16 D_801D4208; - -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_801D4184; -extern short D_801D420C; -extern short D_801D420E; -extern short D_801D4210; -extern s16 D_801D41FC; -extern s16 D_801D41FE; -extern s16 D_801D4200; -extern s16 D_801D41F4; -extern s16 D_801D41F6; -extern s16 D_801D41F8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D4204); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D4206); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D4208); - (*(s16 *)&D_801D420C) = buf[0]; - (*(s16 *)&D_801D420E) = buf[1]; - (*(s16 *)&D_801D4210) = buf[2]; - D_801D41FC = D_80114F30 + buf[0]; - D_801D4184 = 0; - D_801D41FE = D_80114F34 + buf[1]; - D_801D4200 = D_80114F38 + buf[2]; - D_801D41F4 = D_80114F24 + buf[0]; - D_801D41F6 = D_80114F28 + buf[1]; - D_801D41F8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801D41A4; -extern SV4 D_801D41AC; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D41AC) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801D41A4 = 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_801D41AC = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D41AC)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801D41A4) = 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_801D41AC) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801D41CC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801D41CC; - 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_801D4184; -extern s16 D_801D47D8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801D4184 = D_801D4184 + 1; - if (D_801D4184 >= 0x1F) { - D_801D47D8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801D4184; -extern s16 D_801D47D8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801D4184 = D_801D4184 + 1; - if (0x18 < D_801D4184) { - func_8012A4BC(); - D_801D47D8 = 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_801D4184; -extern void (*D_801D41C8)(void); -extern short D_801D420C; -extern short D_801D420E; -extern short D_801D4210; -extern s16 D_801D47D8; - -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_801D4184 = D_801D4184 + 1; - if (D_801D4184 >= 0x19) { - if (D_801D41C8 != 0) { - (*D_801D41C8)(); - } else { - D_80114F30 = D_80114F30 + D_801D420C; - D_80114F34 = D_80114F34 + D_801D420E; - D_80114F38 = D_80114F38 + D_801D4210; - D_80114F24 = D_80114F24 + D_801D420C; - D_80114F28 = D_80114F28 + D_801D420E; - D_80114F2C = D_80114F2C + D_801D4210; - func_8012A4BC(); - } - D_801D47D8 = 0; - } -} - - - -extern void (*D_8018D348[])(void); - -void func_8017BE60(void *a0) { - D_8018D348[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017BEBC); - - -extern void (*D_8018D354[])(void); - -void func_8017BEE4(void *a0) { - D_8018D354[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017BF20); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017BF58); - -DEFINE_func_8017BF98() /* dedup: shared engine-core @0x8017BF98 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017BFA0); - - -extern void (*D_8018D360[])(void); - -void func_8017BFC8(void *a0) { - D_8018D360[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017C004); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017C03C); - -DEFINE_func_8017C07C() /* dedup: shared engine-core @0x8017C07C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017C084); - - -extern void (*D_8018D420[])(void); - -void func_8017C0C8(void *a0) { - D_8018D420[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017C104); - -extern void func_8017C154(void); -void func_8017C12C(void) { - func_8017C154(); -} - - -DEFINE_func_8017C14C() /* dedup: shared engine-core @0x8017C14C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017C154); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017C290); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017C624); - - -extern void (*D_8018D460[])(void); - -void func_8017C664(void *a0) { - D_8018D460[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017C6A0); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017C814); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017C8FC); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017CC44); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017CCC4); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017CD10); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017CE10); - - -extern void (*D_8018D480[])(void); - -void func_8017CE54(void *a0) { - D_8018D480[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017CE90); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017CFBC); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017D098); - - -extern void (*D_8018D490[])(void); - -void func_8017D0DC(void *a0) { - D_8018D490[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017D118); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017D194); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017D1E0); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017D318); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017D5F8); - - -extern void (*D_8018D49C[])(void); - -void func_8017D63C(void *a0) { - D_8018D49C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017D678); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017D75C); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017D804); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017D890); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017D900); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017D9C8); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017DA98); - - -extern void (*D_8018D620[])(void); - -void func_8017DB00(void *a0) { - D_8018D620[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017DB3C); - -extern s32 func_80171CC4(void *a0, void *a1); -extern void func_80171A1C(u8 *a0); -extern s16 D_80126B36; -void func_8017DB74(u8 *a0) { - s16 *p = &D_80126B36; - if (*p != 0) { - if (func_80171CC4(a0, p - 3) == 0) { - return; - } - } - func_80171A1C(a0); -} - - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017DBC4); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017DC28); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017DC4C); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017DCC0); - -DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017DD7C); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017DDBC); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017DE24); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017DE8C); - -DEFINE_func_8017DF7C() /* dedup: shared engine-core @0x8017DF7C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017DF84); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017E120); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017E324); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017E718); - - -extern void (*D_8018D920[])(void); - -void func_8017E898(void *a0) { - D_8018D920[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017E8D4); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017E948); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017EA24); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017EC38); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017ED0C); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017EDDC); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017EE34); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017EF2C); - - -extern void (*D_8018D95C[])(void); - -void func_8017EF6C(void *a0) { - D_8018D95C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017EFA8); - -extern void func_80146C3C(void); -void func_8017F16C(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_8018D964[])(void); - -void func_8017F200(void *a0) { - D_8018D964[*(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_8018D950; - -void func_8017F23C(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_8018D950, 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_8017F2E0(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; - } -} - - - -extern void (*D_8018DA1C[])(void); - -void func_8017F344(void *a0) { - D_8018DA1C[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017F380); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017F3C0); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017F43C); - -DEFINE_func_8017F49C() /* dedup: shared engine-core @0x8017F49C (src/shared) */ - -DEFINE_func_8017F4A4() /* dedup: shared engine-core @0x8017F4A4 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017F4CC); - -extern s16 D_80126B0C; -s16 func_8017F4E8(void) { - return D_80126B0C; -} - - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017F4F8); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017F558); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017F624); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017F7F0); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017F84C); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017F8A8); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017F90C); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017F9BC); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017FA80); - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017A4AC", func_8017FB40); diff --git a/src/ov_SC03_119/ov_SC03_119_jr_8017AE2C.c b/src/ov_SC03_119/ov_SC03_119_jr_8017AE2C.c new file mode 100644 index 000000000..6ceb8cca6 --- /dev/null +++ b/src/ov_SC03_119/ov_SC03_119_jr_8017AE2C.c @@ -0,0 +1,3792 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018BEA0; +extern u8 D_8018BE10; +extern u8 D_8018BDEC; +extern u8 D_8018BDC8; +extern u8 D_8018BE7C; +extern u8 D_8018BE58; +extern u8 D_8018BE34; +extern u8 D_8018BDA4; +extern void func_80145934(void); +extern u8 D_8018BF30; +extern u8 D_8018BF0C; +extern u8 D_8018BEE8; +extern u8 D_8018BEC4; +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_8018B328[]; +extern unsigned char D_8018B358[]; +extern unsigned char D_8018B3A8[]; +extern unsigned char D_8018B3D8[]; +extern unsigned char D_8018B408[]; +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(void); +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_8018B458[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018B520[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018B5A8[]; +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_8018B5B0; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801D3080; +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_801D3084; +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_8018B5E0; +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 void 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_8018B688[])(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_8018B6AC[])(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_8018B69C; +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_8018B6C0[])(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_8018B6CC[]; +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_8018B6DC[])(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_8018B6F4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018B6E4; +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_8018B708[])(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_8018B724[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018B714; +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_8018B738[])(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_8018B74C[])(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_8018B760; +extern void (*D_8018B788[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018B768; +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_8018B7D4[])(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_8018B7D8[])(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(void *a0); +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_8018BC3C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018BC4C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801D30B8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018BC74[])(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_8018BC54; +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_8018BC64; +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_8018BCB4[])(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_8018BCBC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018BC88; +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_8018BCC8[])(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_8018BC98; +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_801D30C0; +extern s32 D_801D30CC; +extern s32 D_801D30D0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018BD04[])(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_8018BCD8[]; +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_801D30C8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018BF54[])(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_8018BD74[]; +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_8018BFF8[])(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_8018C14C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018BF68; +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_8018C154[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018BF78; +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_8018BF98; +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_8018C15C[])(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(void); +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_8018C184[])(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_8018C190[])(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_8018C004[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018C234; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018B318[]; +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_8018C248[]; +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_8018C284[]; +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_8018C2CC; +extern u16 D_8018C2CE; +extern u16 D_8018C2D0; +extern s32 D_8018C2D4; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018C2DC; +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_8018BFE8; +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_8018C360[]; +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_8018C410[])(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_8018C440[]; +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_8018C4A4; +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_801D30D8[]; +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_8018C4C8[])(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_801D3130[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018C510[])(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_8018C500; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801D28E4[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_8018C518[])(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_8018C56C[])(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_8018C534; +extern s16 D_8018C568; +extern s16 D_8018C566; +extern s16 D_8018C564; +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_8018C578[])(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_801D3190; +extern u8 D_801D3191; +extern u8 D_801D3192; +extern u8 D_801D3193; +extern u8 D_801D3194; +extern u8 D_801D3195; +extern u8 D_801D3196; +extern u8 D_801D3197; +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_8018C588[])(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_801D31D0; +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_8018C5CC[])(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_8018C648[]; +extern s32 D_8018C668[]; +extern u8 D_8018C6E4[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018C704[]; +extern u8 D_8018C724[]; +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_8018C7C0[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018C83C[])(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_801D28F4; +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_8018C848[])(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_8018C850[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018C918[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018C928[])(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_8018C938[])(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_8018C944[])(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_8018C8A4[]; +extern u8 D_8018C8B8[]; +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_8018C95C[])(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_8018C964[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018C96C[])(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_8018C974[])(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_8018C97C[])(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_8018C984[])(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_8018C98C[])(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_8018CA40[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018CA48[])(void); +extern void func_80169F00(void *a0); +extern char D_8018C9F8[]; +extern char D_8018C9B8[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018CA80[])(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_8018CA8C[])(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_8018CAD4[])(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_8018CB50[])(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_801D34F0; +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_8018CB44[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018CB88[]; +extern unsigned short D_8018CB90[]; +extern unsigned short D_8018CB98[]; +extern unsigned char D_801D34F8[]; +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_801D34F0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018CBA0[])(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_801D362C; +extern M2C_UNK D_801D3630; +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_801D35B8; +extern void (*D_8018CBD0[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801D3634[]; +extern u8 D_801D363C[]; +extern u8 D_801D35EC[]; +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_8018CBD8[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018CBF4[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018CBFC[])(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_8018CC64[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018CC08; +extern u8 D_8018CC14; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018CC98[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018CCA0[])(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_8018CCF4[])(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_8018CD28[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018CD18[]; +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_8018CD44; +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); +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_8018CDBC[])(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_8018CDC4[])(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_8018CDCC[])(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_8018CDD4[])(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_8018CDDC[])(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_8018CDE4[])(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_8018CDF0[])(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_8018CDFC[])(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_8018CE08[])(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_8018CE18[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018CE28[])(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_8018CE30[])(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_8018CE38[])(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_8018CE40[])(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_8018CE48[])(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_8018CE50[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018CE58[])(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_8018CE60[])(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_8018CE68[])(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_8018CE70[])(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_8018CE78[])(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_8018CE80[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018CE88[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018CE90[])(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_8018CE98[])(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_8018CEA0[])(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_8018CEA8[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018CEB0[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018CEB8[])(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_8018CEC0[])(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_8018CEC8[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018CED0[])(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_8018CED8[])(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_8018CF1C[])(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_8018CEE0; +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_8018CF4C[])(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_8018CF88[])(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(s32); +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_8018CFE0[])(); +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_8018CFF0[])(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_8018CFF8[])(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_8018D160[])(); +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_8018D16C[])(); +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_801D2B3C; +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 int func_801789AC(void); +extern s16 D_801D47D8; +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_801D3D70; +extern short D_801D484C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801D419C; +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_801D41C4; +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_801D4180; +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_801D47A8; +extern s16 D_801D47AA; +extern s16 D_801D47B4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801D47A8; + + 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_801D47B4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801D47A8+0xC == &D_801D47B4; 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_801D47A8 + 0xC)) < 0x101) { + D_801D47A8 = 0; + D_801D47AA = 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_801D47B4); + 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_801D47A8 + 0xC)) < 0x101) { + D_801D47A8 = 0; + D_801D47AA = 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_801D41FC; + extern s16 D_801D41FE; + extern s16 D_801D4200; + extern s16 D_801D41F4; + extern s16 D_801D41F6; + extern s16 D_801D41F8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D41FC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D41FE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D4200, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D41F4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D41F6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D41F8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801D4184; +extern u16 D_801D4204; +extern u16 D_801D4206; +extern u16 D_801D4208; +extern s16 D_801D47D8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801D47D8 = 0; + D_801D4184 = 0; + D_801D4204 = D_80126B5E; + D_801D4206 = D_80126B62; + D_801D4208 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018D2A8[]; + extern s16 D_801D41FC; + extern s16 D_801D41F4; + 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_8018D2A8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018D2A8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D41FC; + s16 *p78C = &D_801D41F4; + *(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_801D47D8 = 1; + D_801D4184 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D41A4; + extern SV4_8017B368 D_801D41AC; + extern s16 D_801D41FC; + extern s16 D_801D41F4; + extern u16 D_8018D2A8; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801D41A4; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801D41AC; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018D2A8)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018D2A8)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801D41FC) = loc0; + (*(SV4_8017B368 *)&D_801D41F4) = loc1; + D_801D47D8 = 1; + D_801D4184 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018D2A8[]; + extern s16 D_801D41FC; + extern s16 D_801D41FE; + extern s16 D_801D4200; + extern s16 D_801D41F4; + extern s16 D_801D41F6; + extern s16 D_801D41F8; + 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_8018D2A8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018D2A8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D41FC; + s16 *p78C = &D_801D41F4; + *(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_801D41FE; + v798 = D_801D4200; + v78C = *p78C; + v78E = D_801D41F6; + v790 = D_801D41F8; + __asm__ __volatile__(""); + D_801D47D8 = 1; + D_801D4184 = 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_801D4184; +extern s16 D_801D41FC; +extern s16 D_801D41FE; +extern s16 D_801D4200; +extern s16 D_801D41F4; +extern s16 D_801D41F6; +extern s16 D_801D41F8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801D4184 = 0; + D_801D41FC = (s16) D_80114F30; + D_801D41FE = (s16) D_80114F34; + D_801D4200 = (s16) D_80114F38; + D_801D41F4 = (s16) D_80114F24; + D_801D41F6 = (s16) D_80114F28; + D_801D41F8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801D4214; +extern s16 D_801D4216; +extern s16 D_801D4218; +extern s16 D_801D421C; +extern s16 D_801D421E; +extern s16 D_801D4220; + +void func_8017B824(void) { + D_801D4214 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801D4216 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801D4218 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801D421C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801D421E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801D4220 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801D4214; +extern s16 D_801D4216; +extern s16 D_801D4218; +extern s16 D_801D421C; +extern s16 D_801D421E; +extern s16 D_801D4220; + +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_801D4214; + D_80114F34 = D_801D4216; + D_80114F38 = D_801D4218; + D_80114F24 = D_801D421C; + D_80114F28 = D_801D421E; + D_80114F2C = D_801D4220; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801D41FC), src[8..15] -> (*(S8_8017B8E8 *)&D_801D41F4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801D41FC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801D41F4) = ((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_801D4204; +extern u16 D_801D4206; +extern u16 D_801D4208; + +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_801D4184; +extern short D_801D420C; +extern short D_801D420E; +extern short D_801D4210; +extern s16 D_801D41FC; +extern s16 D_801D41FE; +extern s16 D_801D4200; +extern s16 D_801D41F4; +extern s16 D_801D41F6; +extern s16 D_801D41F8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D4204); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D4206); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D4208); + (*(s16 *)&D_801D420C) = buf[0]; + (*(s16 *)&D_801D420E) = buf[1]; + (*(s16 *)&D_801D4210) = buf[2]; + D_801D41FC = D_80114F30 + buf[0]; + D_801D4184 = 0; + D_801D41FE = D_80114F34 + buf[1]; + D_801D4200 = D_80114F38 + buf[2]; + D_801D41F4 = D_80114F24 + buf[0]; + D_801D41F6 = D_80114F28 + buf[1]; + D_801D41F8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801D41A4; +extern SV4 D_801D41AC; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D41AC) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801D41A4 = 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_801D41AC = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D41AC)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801D41A4) = 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_801D41AC) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801D41CC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801D41CC; + 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_801D4184; +extern s16 D_801D47D8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801D4184 = D_801D4184 + 1; + if (D_801D4184 >= 0x1F) { + D_801D47D8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801D4184; +extern s16 D_801D47D8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801D4184 = D_801D4184 + 1; + if (0x18 < D_801D4184) { + func_8012A4BC(); + D_801D47D8 = 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_801D4184; +extern void (*D_801D41C8)(void); +extern short D_801D420C; +extern short D_801D420E; +extern short D_801D4210; +extern s16 D_801D47D8; + +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_801D4184 = D_801D4184 + 1; + if (D_801D4184 >= 0x19) { + if (D_801D41C8 != 0) { + (*D_801D41C8)(); + } else { + D_80114F30 = D_80114F30 + D_801D420C; + D_80114F34 = D_80114F34 + D_801D420E; + D_80114F38 = D_80114F38 + D_801D4210; + D_80114F24 = D_80114F24 + D_801D420C; + D_80114F28 = D_80114F28 + D_801D420E; + D_80114F2C = D_80114F2C + D_801D4210; + func_8012A4BC(); + } + D_801D47D8 = 0; + } +} + + + +extern void (*D_8018D348[])(void); + +void func_8017BE60(void *a0) { + D_8018D348[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017BEBC); + + +extern void (*D_8018D354[])(void); + +void func_8017BEE4(void *a0) { + D_8018D354[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017BF20); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017BF58); + +DEFINE_func_8017BF98() /* dedup: shared engine-core @0x8017BF98 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017BFA0); + + +extern void (*D_8018D360[])(void); + +void func_8017BFC8(void *a0) { + D_8018D360[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017C004); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017C03C); + +DEFINE_func_8017C07C() /* dedup: shared engine-core @0x8017C07C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017C084); + + +extern void (*D_8018D420[])(void); + +void func_8017C0C8(void *a0) { + D_8018D420[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017C104); + +extern void func_8017C154(void); +void func_8017C12C(void) { + func_8017C154(); +} + + +DEFINE_func_8017C14C() /* dedup: shared engine-core @0x8017C14C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017C154); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017C290); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017C624); + + +extern void (*D_8018D460[])(void); + +void func_8017C664(void *a0) { + D_8018D460[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017C6A0); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017C814); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017C8FC); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017CC44); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017CCC4); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017CD10); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017CE10); + + +extern void (*D_8018D480[])(void); + +void func_8017CE54(void *a0) { + D_8018D480[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017CE90); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017CFBC); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017D098); + + +extern void (*D_8018D490[])(void); + +void func_8017D0DC(void *a0) { + D_8018D490[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017D118); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017D194); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017D1E0); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017D318); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017D5F8); + + +extern void (*D_8018D49C[])(void); + +void func_8017D63C(void *a0) { + D_8018D49C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017D678); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017D75C); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017D804); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017D890); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017D900); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017D9C8); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017DA98); + + +extern void (*D_8018D620[])(void); + +void func_8017DB00(void *a0) { + D_8018D620[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017DB3C); + +extern s32 func_80171CC4(void *a0, void *a1); +extern void func_80171A1C(u8 *a0); +extern s16 D_80126B36; +void func_8017DB74(u8 *a0) { + s16 *p = &D_80126B36; + if (*p != 0) { + if (func_80171CC4(a0, p - 3) == 0) { + return; + } + } + func_80171A1C(a0); +} + + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017DBC4); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017DC28); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017DC4C); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017DCC0); + +DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017DD7C); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017DDBC); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017DE24); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017DE8C); + +DEFINE_func_8017DF7C() /* dedup: shared engine-core @0x8017DF7C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017DF84); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017E120); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017E324); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017E718); + + +extern void (*D_8018D920[])(void); + +void func_8017E898(void *a0) { + D_8018D920[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017E8D4); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017E948); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017EA24); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017EC38); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017ED0C); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017EDDC); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017EE34); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017EF2C); + + +extern void (*D_8018D95C[])(void); + +void func_8017EF6C(void *a0) { + D_8018D95C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017EFA8); + +extern void func_80146C3C(void); +void func_8017F16C(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_8018D964[])(void); + +void func_8017F200(void *a0) { + D_8018D964[*(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_8018D950; + +void func_8017F23C(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_8018D950, 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_8017F2E0(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; + } +} + + + +extern void (*D_8018DA1C[])(void); + +void func_8017F344(void *a0) { + D_8018DA1C[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017F380); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017F3C0); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017F43C); + +DEFINE_func_8017F49C() /* dedup: shared engine-core @0x8017F49C (src/shared) */ + +DEFINE_func_8017F4A4() /* dedup: shared engine-core @0x8017F4A4 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017F4CC); + +extern s16 D_80126B0C; +s16 func_8017F4E8(void) { + return D_80126B0C; +} + + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017F4F8); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017F558); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017F624); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017F7F0); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017F84C); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017F8A8); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017F90C); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017F9BC); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017FA80); + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017FB40); + diff --git a/src/ov_SC03_121/ov_SC03_121_jr_8017A4AC.c b/src/ov_SC03_121/ov_SC03_121_jr_8017A4AC.c index 4138fbdbc..f2dc69275 100644 --- a/src/ov_SC03_121/ov_SC03_121_jr_8017A4AC.c +++ b/src/ov_SC03_121/ov_SC03_121_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801AECA4; - extern s16 D_801AECA6; - extern s16 D_801AECA8; - extern s16 D_801AEC9C; - extern s16 D_801AEC9E; - extern s16 D_801AECA0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801AECA4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801AECA6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801AECA8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801AEC9C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801AEC9E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801AECA0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801AEC2C; -extern u16 D_801AECAC; -extern u16 D_801AECAE; -extern u16 D_801AECB0; -extern s16 D_801AEF38; - -void func_8017B1D8(void) { - func_8012A418(); - D_801AEF38 = 0; - D_801AEC2C = 0; - D_801AECAC = D_80126B5E; - D_801AECAE = D_80126B62; - D_801AECB0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80185AC4[]; - extern s16 D_801AECA4; - extern s16 D_801AEC9C; - 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_80185AC4[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80185AC4[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801AECA4; - s16 *p78C = &D_801AEC9C; - *(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_801AEF38 = 1; - D_801AEC2C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801AEC4C; - extern SV4_8017B368 D_801AEC54; - extern s16 D_801AECA4; - extern s16 D_801AEC9C; - extern u16 D_80185AC4; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801AEC4C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801AEC54; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80185AC4)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80185AC4)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801AECA4) = loc0; - (*(SV4_8017B368 *)&D_801AEC9C) = loc1; - D_801AEF38 = 1; - D_801AEC2C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80185AC4[]; - extern s16 D_801AECA4; - extern s16 D_801AECA6; - extern s16 D_801AECA8; - extern s16 D_801AEC9C; - extern s16 D_801AEC9E; - extern s16 D_801AECA0; - 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_80185AC4[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80185AC4[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801AECA4; - s16 *p78C = &D_801AEC9C; - *(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_801AECA6; - v798 = D_801AECA8; - v78C = *p78C; - v78E = D_801AEC9E; - v790 = D_801AECA0; - __asm__ __volatile__(""); - D_801AEF38 = 1; - D_801AEC2C = 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_801AEC2C; -extern s16 D_801AECA4; -extern s16 D_801AECA6; -extern s16 D_801AECA8; -extern s16 D_801AEC9C; -extern s16 D_801AEC9E; -extern s16 D_801AECA0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801AEC2C = 0; - D_801AECA4 = (s16) D_80114F30; - D_801AECA6 = (s16) D_80114F34; - D_801AECA8 = (s16) D_80114F38; - D_801AEC9C = (s16) D_80114F24; - D_801AEC9E = (s16) D_80114F28; - D_801AECA0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801AECBC; -extern s16 D_801AECBE; -extern s16 D_801AECC0; -extern s16 D_801AECC4; -extern s16 D_801AECC6; -extern s16 D_801AECC8; - -void func_8017B824(void) { - D_801AECBC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801AECBE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801AECC0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801AECC4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801AECC6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801AECC8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801AECBC; -extern s16 D_801AECBE; -extern s16 D_801AECC0; -extern s16 D_801AECC4; -extern s16 D_801AECC6; -extern s16 D_801AECC8; - -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_801AECBC; - D_80114F34 = D_801AECBE; - D_80114F38 = D_801AECC0; - D_80114F24 = D_801AECC4; - D_80114F28 = D_801AECC6; - D_80114F2C = D_801AECC8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801AECA4), src[8..15] -> (*(S8_8017B8E8 *)&D_801AEC9C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801AECA4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801AEC9C) = ((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_801AECAC; -extern u16 D_801AECAE; -extern u16 D_801AECB0; - -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_801AEC2C; -extern short D_801AECB4; -extern short D_801AECB6; -extern short D_801AECB8; -extern s16 D_801AECA4; -extern s16 D_801AECA6; -extern s16 D_801AECA8; -extern s16 D_801AEC9C; -extern s16 D_801AEC9E; -extern s16 D_801AECA0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801AECAC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801AECAE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801AECB0); - (*(s16 *)&D_801AECB4) = buf[0]; - (*(s16 *)&D_801AECB6) = buf[1]; - (*(s16 *)&D_801AECB8) = buf[2]; - D_801AECA4 = D_80114F30 + buf[0]; - D_801AEC2C = 0; - D_801AECA6 = D_80114F34 + buf[1]; - D_801AECA8 = D_80114F38 + buf[2]; - D_801AEC9C = D_80114F24 + buf[0]; - D_801AEC9E = D_80114F28 + buf[1]; - D_801AECA0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801AEC4C; -extern SV4 D_801AEC54; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801AEC54) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801AEC4C = 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_801AEC54 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801AEC54)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801AEC4C) = 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_801AEC54) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801AEC74[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801AEC74; - 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_801AEC2C; -extern s16 D_801AEF38; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801AEC2C = D_801AEC2C + 1; - if (D_801AEC2C >= 0x1F) { - D_801AEF38 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801AEC2C; -extern s16 D_801AEF38; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801AEC2C = D_801AEC2C + 1; - if (0x18 < D_801AEC2C) { - func_8012A4BC(); - D_801AEF38 = 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_801AEC2C; -extern void (*D_801AEC70)(void); -extern short D_801AECB4; -extern short D_801AECB6; -extern short D_801AECB8; -extern s16 D_801AEF38; - -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_801AEC2C = D_801AEC2C + 1; - if (D_801AEC2C >= 0x19) { - if (D_801AEC70 != 0) { - (*D_801AEC70)(); - } else { - D_80114F30 = D_80114F30 + D_801AECB4; - D_80114F34 = D_80114F34 + D_801AECB6; - D_80114F38 = D_80114F38 + D_801AECB8; - D_80114F24 = D_80114F24 + D_801AECB4; - D_80114F28 = D_80114F28 + D_801AECB6; - D_80114F2C = D_80114F2C + D_801AECB8; - func_8012A4BC(); - } - D_801AEF38 = 0; - } -} - - - -extern void (*D_80185B64[])(void); - -void func_8017BE60(void *a0) { - D_80185B64[*(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) */ diff --git a/src/ov_SC03_121/ov_SC03_121_jr_8017AE2C.c b/src/ov_SC03_121/ov_SC03_121_jr_8017AE2C.c new file mode 100644 index 000000000..87855d5dd --- /dev/null +++ b/src/ov_SC03_121/ov_SC03_121_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801846BC; +extern u8 D_8018462C; +extern u8 D_80184608; +extern u8 D_801845E4; +extern u8 D_80184698; +extern u8 D_80184674; +extern u8 D_80184650; +extern u8 D_801845C0; +extern void func_80145934(void); +extern u8 D_8018474C; +extern u8 D_80184728; +extern u8 D_80184704; +extern u8 D_801846E0; +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_80183B44[]; +extern unsigned char D_80183B74[]; +extern unsigned char D_80183BC4[]; +extern unsigned char D_80183BF4[]; +extern unsigned char D_80183C24[]; +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(void); +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_80183C74[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80183D3C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80183DC4[]; +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_80183DCC; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801ADB28; +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_801ADB2C; +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_80183DFC; +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 void 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_80183EA4[])(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_80183EC8[])(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_80183EB8; +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_80183EDC[])(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_80183EE8[]; +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_80183EF8[])(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_80183F10[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80183F00; +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_80183F24[])(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_80183F40[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80183F30; +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_80183F54[])(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_80183F68[])(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_80183F7C; +extern void (*D_80183FA4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80183F84; +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_80183FF0[])(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_80183FF4[])(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(void *a0); +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_80184458[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80184468[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801ADB60; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184490[])(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_80184470; +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_80184480; +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_801844D0[])(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_801844D8[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801844A4; +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_801844E4[])(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_801844B4; +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_801ADB68; +extern s32 D_801ADB74; +extern s32 D_801ADB78; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80184520[])(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_801844F4[]; +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_801ADB70; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80184770[])(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_80184590[]; +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_80184814[])(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_80184968[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80184784; +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_80184970[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80184794; +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_801847B4; +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_80184978[])(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(void); +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_801849A0[])(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_801849AC[])(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_80184820[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80184A50; +extern void func_8015D380(s32 a0); +extern unsigned char D_80183B34[]; +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_80184A64[]; +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_80184AA0[]; +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_80184AE8; +extern u16 D_80184AEA; +extern u16 D_80184AEC; +extern s32 D_80184AF0; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80184AF8; +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_80184804; +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_80184B7C[]; +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_80184C2C[])(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_80184C5C[]; +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_80184CC0; +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_801ADB80[]; +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_80184CE4[])(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_801ADBD8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80184D2C[])(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_80184D1C; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801AD3EC[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_80184D34[])(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_80184D88[])(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_80184D50; +extern s16 D_80184D84; +extern s16 D_80184D82; +extern s16 D_80184D80; +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_80184D94[])(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_801ADC38; +extern u8 D_801ADC39; +extern u8 D_801ADC3A; +extern u8 D_801ADC3B; +extern u8 D_801ADC3C; +extern u8 D_801ADC3D; +extern u8 D_801ADC3E; +extern u8 D_801ADC3F; +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_80184DA4[])(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_801ADC78; +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_80184DE8[])(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_80184E64[]; +extern s32 D_80184E84[]; +extern u8 D_80184F00[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80184F20[]; +extern u8 D_80184F40[]; +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_80184FDC[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80185058[])(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_801AD3FC; +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_80185064[])(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_8018506C[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80185134[])(void); +extern void func_80166618(void *a0); +extern void (*D_80185144[])(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_80185154[])(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_80185160[])(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_801850C0[]; +extern u8 D_801850D4[]; +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_80185178[])(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_80185180[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80185188[])(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_80185190[])(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_80185198[])(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_801851A0[])(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_801851A8[])(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_8018525C[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80185264[])(void); +extern void func_80169F00(void *a0); +extern char D_80185214[]; +extern char D_801851D4[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018529C[])(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_801852A8[])(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_801852F0[])(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_8018536C[])(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_801ADF98; +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_80185360[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_801853A4[]; +extern unsigned short D_801853AC[]; +extern unsigned short D_801853B4[]; +extern unsigned char D_801ADFA0[]; +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_801ADF98; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801853BC[])(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_801AE0D4; +extern M2C_UNK D_801AE0D8; +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_801AE060; +extern void (*D_801853EC[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801AE0DC[]; +extern u8 D_801AE0E4[]; +extern u8 D_801AE094[]; +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_801853F4[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80185410[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80185418[])(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_80185480[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80185424; +extern u8 D_80185430; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801854B4[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801854BC[])(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_80185510[])(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_80185544[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80185534[]; +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_80185560; +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); +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_801855D8[])(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_801855E0[])(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_801855E8[])(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_801855F0[])(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_801855F8[])(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_80185600[])(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_8018560C[])(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_80185618[])(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_80185624[])(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_80185634[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80185644[])(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_8018564C[])(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_80185654[])(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_8018565C[])(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_80185664[])(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_8018566C[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80185674[])(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_8018567C[])(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_80185684[])(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_8018568C[])(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_80185694[])(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_8018569C[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801856A4[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801856AC[])(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_801856B4[])(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_801856BC[])(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_801856C4[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801856CC[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801856D4[])(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_801856DC[])(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_801856E4[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801856EC[])(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_801856F4[])(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_80185738[])(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_801856FC; +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_80185768[])(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_801857A4[])(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(s32); +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_801857FC[])(); +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_8018580C[])(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_80185814[])(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_8018597C[])(); +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_80185988[])(); +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_801AD644; +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 int func_801789AC(void); +extern s16 D_801AEF38; +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_801AE818; +extern short D_801AEFAC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801AEC44; +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_801AEC6C; +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_801AEC28; +extern s32 func_8017A3B0(void); +extern short D_801AEC64; +extern short D_801AEC60; +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_801AEF08; +extern s16 D_801AEF0A; +extern s16 D_801AEF14; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801AEF08; + + 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_801AEF14); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801AEF08+0xC == &D_801AEF14; 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_801AEF08 + 0xC)) < 0x101) { + D_801AEF08 = 0; + D_801AEF0A = 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_801AEF14); + 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_801AEF08 + 0xC)) < 0x101) { + D_801AEF08 = 0; + D_801AEF0A = 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_801AECA4; + extern s16 D_801AECA6; + extern s16 D_801AECA8; + extern s16 D_801AEC9C; + extern s16 D_801AEC9E; + extern s16 D_801AECA0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801AECA4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801AECA6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801AECA8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801AEC9C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801AEC9E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801AECA0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801AEC2C; +extern u16 D_801AECAC; +extern u16 D_801AECAE; +extern u16 D_801AECB0; +extern s16 D_801AEF38; + +void func_8017B1D8(void) { + func_8012A418(); + D_801AEF38 = 0; + D_801AEC2C = 0; + D_801AECAC = D_80126B5E; + D_801AECAE = D_80126B62; + D_801AECB0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80185AC4[]; + extern s16 D_801AECA4; + extern s16 D_801AEC9C; + 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_80185AC4[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80185AC4[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801AECA4; + s16 *p78C = &D_801AEC9C; + *(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_801AEF38 = 1; + D_801AEC2C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801AEC4C; + extern SV4_8017B368 D_801AEC54; + extern s16 D_801AECA4; + extern s16 D_801AEC9C; + extern u16 D_80185AC4; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801AEC4C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801AEC54; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80185AC4)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80185AC4)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801AECA4) = loc0; + (*(SV4_8017B368 *)&D_801AEC9C) = loc1; + D_801AEF38 = 1; + D_801AEC2C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80185AC4[]; + extern s16 D_801AECA4; + extern s16 D_801AECA6; + extern s16 D_801AECA8; + extern s16 D_801AEC9C; + extern s16 D_801AEC9E; + extern s16 D_801AECA0; + 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_80185AC4[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80185AC4[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801AECA4; + s16 *p78C = &D_801AEC9C; + *(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_801AECA6; + v798 = D_801AECA8; + v78C = *p78C; + v78E = D_801AEC9E; + v790 = D_801AECA0; + __asm__ __volatile__(""); + D_801AEF38 = 1; + D_801AEC2C = 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_801AEC2C; +extern s16 D_801AECA4; +extern s16 D_801AECA6; +extern s16 D_801AECA8; +extern s16 D_801AEC9C; +extern s16 D_801AEC9E; +extern s16 D_801AECA0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801AEC2C = 0; + D_801AECA4 = (s16) D_80114F30; + D_801AECA6 = (s16) D_80114F34; + D_801AECA8 = (s16) D_80114F38; + D_801AEC9C = (s16) D_80114F24; + D_801AEC9E = (s16) D_80114F28; + D_801AECA0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801AECBC; +extern s16 D_801AECBE; +extern s16 D_801AECC0; +extern s16 D_801AECC4; +extern s16 D_801AECC6; +extern s16 D_801AECC8; + +void func_8017B824(void) { + D_801AECBC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801AECBE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801AECC0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801AECC4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801AECC6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801AECC8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801AECBC; +extern s16 D_801AECBE; +extern s16 D_801AECC0; +extern s16 D_801AECC4; +extern s16 D_801AECC6; +extern s16 D_801AECC8; + +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_801AECBC; + D_80114F34 = D_801AECBE; + D_80114F38 = D_801AECC0; + D_80114F24 = D_801AECC4; + D_80114F28 = D_801AECC6; + D_80114F2C = D_801AECC8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801AECA4), src[8..15] -> (*(S8_8017B8E8 *)&D_801AEC9C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801AECA4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801AEC9C) = ((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_801AECAC; +extern u16 D_801AECAE; +extern u16 D_801AECB0; + +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_801AEC2C; +extern short D_801AECB4; +extern short D_801AECB6; +extern short D_801AECB8; +extern s16 D_801AECA4; +extern s16 D_801AECA6; +extern s16 D_801AECA8; +extern s16 D_801AEC9C; +extern s16 D_801AEC9E; +extern s16 D_801AECA0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801AECAC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801AECAE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801AECB0); + (*(s16 *)&D_801AECB4) = buf[0]; + (*(s16 *)&D_801AECB6) = buf[1]; + (*(s16 *)&D_801AECB8) = buf[2]; + D_801AECA4 = D_80114F30 + buf[0]; + D_801AEC2C = 0; + D_801AECA6 = D_80114F34 + buf[1]; + D_801AECA8 = D_80114F38 + buf[2]; + D_801AEC9C = D_80114F24 + buf[0]; + D_801AEC9E = D_80114F28 + buf[1]; + D_801AECA0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801AEC4C; +extern SV4 D_801AEC54; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801AEC54) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801AEC4C = 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_801AEC54 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801AEC54)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801AEC4C) = 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_801AEC54) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801AEC74[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801AEC74; + 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_801AEC2C; +extern s16 D_801AEF38; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801AEC2C = D_801AEC2C + 1; + if (D_801AEC2C >= 0x1F) { + D_801AEF38 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801AEC2C; +extern s16 D_801AEF38; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801AEC2C = D_801AEC2C + 1; + if (0x18 < D_801AEC2C) { + func_8012A4BC(); + D_801AEF38 = 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_801AEC2C; +extern void (*D_801AEC70)(void); +extern short D_801AECB4; +extern short D_801AECB6; +extern short D_801AECB8; +extern s16 D_801AEF38; + +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_801AEC2C = D_801AEC2C + 1; + if (D_801AEC2C >= 0x19) { + if (D_801AEC70 != 0) { + (*D_801AEC70)(); + } else { + D_80114F30 = D_80114F30 + D_801AECB4; + D_80114F34 = D_80114F34 + D_801AECB6; + D_80114F38 = D_80114F38 + D_801AECB8; + D_80114F24 = D_80114F24 + D_801AECB4; + D_80114F28 = D_80114F28 + D_801AECB6; + D_80114F2C = D_80114F2C + D_801AECB8; + func_8012A4BC(); + } + D_801AEF38 = 0; + } +} + + + +extern void (*D_80185B64[])(void); + +void func_8017BE60(void *a0) { + D_80185B64[*(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) */ + diff --git a/src/ov_SC03_124/ov_SC03_124_jr_8017A4AC.c b/src/ov_SC03_124/ov_SC03_124_jr_8017A4AC.c index 00fe553f3..b3861f920 100644 --- a/src/ov_SC03_124/ov_SC03_124_jr_8017A4AC.c +++ b/src/ov_SC03_124/ov_SC03_124_jr_8017A4AC.c @@ -2944,2104 +2944,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801E17CC; - extern s16 D_801E17CE; - extern s16 D_801E17D0; - extern s16 D_801E17C4; - extern s16 D_801E17C6; - extern s16 D_801E17C8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801E17CC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801E17CE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801E17D0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801E17C4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801E17C6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801E17C8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801E1754; -extern u16 D_801E17D4; -extern u16 D_801E17D6; -extern u16 D_801E17D8; -extern s16 D_801E2570; - -void func_8017B1D8(void) { - func_8012A418(); - D_801E2570 = 0; - D_801E1754 = 0; - D_801E17D4 = D_80126B5E; - D_801E17D6 = D_80126B62; - D_801E17D8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018E4F0[]; - extern s16 D_801E17CC; - extern s16 D_801E17C4; - 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_8018E4F0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018E4F0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E17CC; - s16 *p78C = &D_801E17C4; - *(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_801E2570 = 1; - D_801E1754 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801E1774; - extern SV4_8017B368 D_801E177C; - extern s16 D_801E17CC; - extern s16 D_801E17C4; - extern u16 D_8018E4F0; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801E1774; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801E177C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018E4F0)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018E4F0)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801E17CC) = loc0; - (*(SV4_8017B368 *)&D_801E17C4) = loc1; - D_801E2570 = 1; - D_801E1754 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018E4F0[]; - extern s16 D_801E17CC; - extern s16 D_801E17CE; - extern s16 D_801E17D0; - extern s16 D_801E17C4; - extern s16 D_801E17C6; - extern s16 D_801E17C8; - 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_8018E4F0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018E4F0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E17CC; - s16 *p78C = &D_801E17C4; - *(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_801E17CE; - v798 = D_801E17D0; - v78C = *p78C; - v78E = D_801E17C6; - v790 = D_801E17C8; - __asm__ __volatile__(""); - D_801E2570 = 1; - D_801E1754 = 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_801E1754; -extern s16 D_801E17CC; -extern s16 D_801E17CE; -extern s16 D_801E17D0; -extern s16 D_801E17C4; -extern s16 D_801E17C6; -extern s16 D_801E17C8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801E1754 = 0; - D_801E17CC = (s16) D_80114F30; - D_801E17CE = (s16) D_80114F34; - D_801E17D0 = (s16) D_80114F38; - D_801E17C4 = (s16) D_80114F24; - D_801E17C6 = (s16) D_80114F28; - D_801E17C8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801E17E4; -extern s16 D_801E17E6; -extern s16 D_801E17E8; -extern s16 D_801E17EC; -extern s16 D_801E17EE; -extern s16 D_801E17F0; - -void func_8017B824(void) { - D_801E17E4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801E17E6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801E17E8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801E17EC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801E17EE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801E17F0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801E17E4; -extern s16 D_801E17E6; -extern s16 D_801E17E8; -extern s16 D_801E17EC; -extern s16 D_801E17EE; -extern s16 D_801E17F0; - -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_801E17E4; - D_80114F34 = D_801E17E6; - D_80114F38 = D_801E17E8; - D_80114F24 = D_801E17EC; - D_80114F28 = D_801E17EE; - D_80114F2C = D_801E17F0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801E17CC), src[8..15] -> (*(S8_8017B8E8 *)&D_801E17C4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801E17CC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801E17C4) = ((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_801E17D4; -extern u16 D_801E17D6; -extern u16 D_801E17D8; - -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_801E1754; -extern short D_801E17DC; -extern short D_801E17DE; -extern short D_801E17E0; -extern s16 D_801E17CC; -extern s16 D_801E17CE; -extern s16 D_801E17D0; -extern s16 D_801E17C4; -extern s16 D_801E17C6; -extern s16 D_801E17C8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801E17D4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801E17D6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801E17D8); - (*(s16 *)&D_801E17DC) = buf[0]; - (*(s16 *)&D_801E17DE) = buf[1]; - (*(s16 *)&D_801E17E0) = buf[2]; - D_801E17CC = D_80114F30 + buf[0]; - D_801E1754 = 0; - D_801E17CE = D_80114F34 + buf[1]; - D_801E17D0 = D_80114F38 + buf[2]; - D_801E17C4 = D_80114F24 + buf[0]; - D_801E17C6 = D_80114F28 + buf[1]; - D_801E17C8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801E1774; -extern SV4 D_801E177C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801E177C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801E1774 = 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_801E177C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801E177C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801E1774) = 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_801E177C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801E179C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801E179C; - 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_801E1754; -extern s16 D_801E2570; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801E1754 = D_801E1754 + 1; - if (D_801E1754 >= 0x1F) { - D_801E2570 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801E1754; -extern s16 D_801E2570; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801E1754 = D_801E1754 + 1; - if (0x18 < D_801E1754) { - func_8012A4BC(); - D_801E2570 = 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_801E1754; -extern void (*D_801E1798)(void); -extern short D_801E17DC; -extern short D_801E17DE; -extern short D_801E17E0; -extern s16 D_801E2570; - -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_801E1754 = D_801E1754 + 1; - if (D_801E1754 >= 0x19) { - if (D_801E1798 != 0) { - (*D_801E1798)(); - } else { - D_80114F30 = D_80114F30 + D_801E17DC; - D_80114F34 = D_80114F34 + D_801E17DE; - D_80114F38 = D_80114F38 + D_801E17E0; - D_80114F24 = D_80114F24 + D_801E17DC; - D_80114F28 = D_80114F28 + D_801E17DE; - D_80114F2C = D_80114F2C + D_801E17E0; - func_8012A4BC(); - } - D_801E2570 = 0; - } -} - - - -extern void (*D_8018E590[])(void); - -void func_8017BE60(void *a0) { - D_8018E590[*(u8 *)((s32)a0 + 0x4)](); -} - - - -extern void (*D_8018E630[])(void); - -void func_8017BE9C(void *a0) { - D_8018E630[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_8018E638[])(void); - -void func_8017BED8(void *a0) { - D_8018E638[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_8018E640[])(void); - -void func_8017BF14(void *a0) { - D_8018E640[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017BF50); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017C094); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017C100); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017C1AC); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017C1EC); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017C2B0); - - -extern void (*D_8018E660[])(void); - -void func_8017C338(void *a0) { - D_8018E660[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017C374); - -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); - } -} - - - -extern void (*D_8018E668[])(void); - -void func_8017C5CC(void *a0) { - D_8018E668[*(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_8018E654; - -void func_8017C608(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_8018E654, 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; - } -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017C710); - - -// @class: plumbing -// @stuck: none — MATCH (simple two-call wrapper, $s0 holds param across calls by default regalloc) - -extern void func_8017D990(void *arg0); -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_800167B8(s32 a0); - -s32 func_8017D5F0(s32 param_1) -{ - ((void (*)(void *, s32))func_8016EDEC)(func_8017D990, 0x1000000); - func_800167B8(0); - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - return 0; -} - - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017D640(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017D664); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017D6D4); - -extern void func_800D1EBC(void); -void func_8017D784(void) { - func_800D1EBC(); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017D7A4); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017D7F8); - - -extern void (*D_8018E670[])(void); - -void func_8017D88C(void *a0) { - D_8018E670[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void (*D_8018E678[])(void); - -void func_8017D8C8(void *a0) { - D_8018E678[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void (*D_8018E684[])(void); - -void func_8017D904(void *a0) { - D_8018E684[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void (*D_8018E690[])(void); - -void func_8017D940(void *a0) { - D_8018E690[*(u8 *)((s32)a0 + 0x15)](); -} - - -extern s32 D_80127050; - void func_8017D97C(void) { - D_80127050 = 0x1; - } - - - -extern void (*D_8018E944[])(void); - -void func_8017D990(void *a0) { - D_8018E944[*(u8 *)((s32)a0 + 0x214)](); -} - - -void func_8017D9CC(u8 *a0) { - *(u8 *)(a0 + 0x214) += 1; - } - - -extern void func_80175414(s32 arg0); - extern void func_8016F0E4(void); - extern void func_80165770(void); - void func_8017D9E0(s32 arg0) { - func_80175414(arg0); - ((s32 (*)(s32))func_8016F0E4)(arg0); - ((void (*)(s32))func_80165770)(arg0); - } - - - -extern void (*D_8018E94C[])(void); - -void func_8017DA18(void *a0) { - D_8018E94C[*(u8 *)((s32)a0 + 0x214)](); -} - - -void func_8017DA54(void *a0) { - *(u8 *)((s32)a0 + 0x214) += 1; - } - - -extern void func_8016F0E4(void); - void func_8017DA68(void) { - ((s32 (*)(void))func_8016F0E4)(); - } - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017DA88); - - -extern void (*D_8018E954[])(void); - -void func_8017DB4C(void *a0) { - D_8018E954[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017DB88); - -void func_8017DBBC(s32 *a0) { - *(s8*)((s32)a0 + 0xA0) = 0; -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017DBC4); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017DD04); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017DEF8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017DFE4); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017E048); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017E098); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017E228); - - -extern void (*D_8018F01C[])(void); - -void func_8017E380(void *a0) { - D_8018F01C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017E3BC); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017E408); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017E4E4); - -extern s32 func_8012E544(s32 arg); - void func_8017E510(void) { - s32 r = func_8012E544(0x17B); - *(s16 *)(r + 0xFC) = 0x2; - } - - - -extern s32 func_8012E544(s32 arg); - void func_8017E534(void) { - s32 r = func_8012E544(0x17B); - *(s16 *)(r + 0xFC) = 0x1; - } - - - -extern s32 func_8012E544(s32 arg); - void func_8017E558(void) { - s32 r = func_8012E544(0x17B); - *(s16 *)(r + 0xFC) = 0x4; - } - - - -extern s32 func_8012E544(s32 arg); - void func_8017E57C(void) { - s32 r = func_8012E544(0x17B); - *(s16 *)(r + 0xFC) = 0x3; - } - - - -extern s32 func_8012E544(s32 arg); - void func_8017E5A0(void) { - s32 r = func_8012E544(0x17B); - *(s16 *)(r + 0xFC) = 0x5; - } - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017E5C4); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017E62C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017E694); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017E738); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017E7E0); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017E880); - - -extern void (*D_8018F1C8[])(void); - -void func_8017E8AC(void *a0) { - D_8018F1C8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017E8E8); - -extern void func_80029514(int); -void func_8017E914(void) { - func_80029514(0xdc); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017E934); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017EA10); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017EA5C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017EAB4); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017EB04); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017EB84); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017EBEC); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017EC50); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017ECA0); - -extern void func_801843E0(void *a0, s32 a1); - extern short D_8018F1DC; - void func_8017ECFC(s16 *a0) { - *(short *)((char *)a0 + 0x2) = 0x7; - func_801843E0(a0, &D_8018F1DC); - } - - - -extern void (*D_8018F330[])(void); - -void func_8017ED28(void *a0) { - D_8018F330[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017ED64); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017ED90); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017EDE8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017EED4); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017EF90); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017F054); - -void func_8017F09C(void) { -} - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017F0A4); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017F1A0); - - -extern void (*D_8018F46C[])(void); - -void func_8017F20C(void *a0) { - D_8018F46C[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_80029514(int); -void func_8017F248(void) { - func_80029514(0x186); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017F268); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017F2A8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017F2E8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017F380); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017F3BC); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017F40C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017F438); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017F5CC); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017F63C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017F768); - -void func_8017F840(void) { -} - - -extern void (*D_8018FBE4[])(void); - -void func_8017F848(void *a0) { - D_8018FBE4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017F884); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017F90C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017F9D8); - -extern void func_80029514(int); -void func_8017FA34(void) { - func_80029514(0x190); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017FA54); - -extern s32 D_801E1A18; - -void func_8017FA84(void) { - D_801E1A18 = 1; -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017FA98); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017FB04); - -extern void func_8017F768(void); -void func_8017FB54(void) { - func_8017F768(); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017FB74); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017FC58); - -extern void func_801851D8(s32 arg); - void func_8017FCE4(void) { - func_801851D8(0x7); - } - - -extern void func_80185238(s32 arg); - void func_8017FD04(void) { - func_80185238(0x7); - } - - -extern s32 func_8012E57C(s32 arg0, s32 arg1); - void func_8017FD24(void) { - s32 r; - s32 p; - r = func_8012E57C(0x61, 0x7); - if (r != 0) { - *(s16 *)(r + 0xE8) = 1; - } - } - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017FD58); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017FD70); - -void func_8017FE10(void) { -} - -extern s32 func_8012C588(s32 a0, s32 a1); - void func_8017FE18(u8 *a0) { - ((void (*)(s32, s32))func_8012C588)(0x3D7, (s32)a0); - } - - - -extern s32 func_8012E544(s32 arg); - void func_8017FE3C(void) { - s32 p = func_8012E544(0x224); - if (p != 0) { - *(u16*)(p + 0x34) += 1; - } - } - - -extern s32 func_8012E544(s32 arg); - void func_8017FE78(void) { - s32 p = func_8012E544(0x224); - if (p != 0) { - *(u16*)(p + 0x34) += 1; - } - } - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017FEB4); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017FF64); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8017FFC8); - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80180020); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018004C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018009C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801801B0); - - -extern void (*D_8018FC14[])(void); - -void func_801801F4(void *a0) { - D_8018FC14[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_80180230(void *a0) { - *(short *)((char *)a0 + 0x2) = 0x5; - } - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018023C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801802A8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80180334); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801803CC); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80180478); - -void func_801804B8(void) { -} - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801804C0); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801805AC); - -void func_80180684(void) { -} - - -extern void (*D_8018FDFC[])(void); - -void func_8018068C(void *a0) { - D_8018FDFC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801806C8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801806E0); - -extern void func_800D1724(s32 a0); - extern s32 D_8018E894; - void func_80180704(void) { - ((void (*)(void *))func_800D1724)(&D_8018E894); - } - - -void func_8018072C(void) { -} - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80180734); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801807D8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80180828); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80180868); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801808B8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018095C); - - -extern void (*D_8018FE1C[])(void); - -void func_80180A24(void *a0) { - D_8018FE1C[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_8012E8E0(s32 a0, s32 a1); -extern s32 D_8018FE14; - -void func_80180A60(void * arg0) { - func_8012E8E0((s32)arg0, (s32)&D_8018FE14); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80180A88); - -extern void (*D_8018FEA4[])(void); - -void func_80180B40(void *a0) { - D_8018FEA4[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_80180B7C(void) { -} - -extern void func_80178CBC(s32 *a0, s32 a1); - extern short D_8018FE4C; - void func_80180B84(short *param_1) { - *(short *)((char *)param_1 + 0x2) = 0x3; - func_80178CBC((s32 *)param_1, (s32)&D_8018FE4C); - } - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80180BB0); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80180C0C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80180CC8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80180D48); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80180E40); - - -extern void (*D_8018FF38[])(void); - -void func_80181040(void *a0) { - D_8018FF38[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018107C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801810E4); - - -extern void (*D_8019003C[])(void); - -void func_801812D0(void *a0) { - D_8019003C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018130C); - - -extern void (*D_80190088[])(void); - -void func_801814A4(void *a0) { - D_80190088[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801814E0); - -extern s32 func_8018107C(void); - void func_8018156C(void) { - func_8018107C(); - } - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018158C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80181644); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801816C8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801817AC); - -extern void func_8012B2CC(s32 a0); - void func_80181810(void * arg0) { - s32 *p = *(s32 **)((char *)arg0 + 0x20); - *(short *)((char *)arg0 + 0x2) = 0x2; - *(short *)((char *)p + 0x12) = -0x600; - func_8012B2CC((s32)arg0); - } - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80181840); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80181870); - - -extern void (*D_801901D0[])(void); - -void func_801819E0(void *a0) { - D_801901D0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80181A1C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80181A98); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80181B08); - -extern void func_8002D4C8(s32 arg0, s32 arg1); - void func_80181B20(void) { - func_8002D4C8(0x7E0, 0); - } - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80181B44); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80181C78); - -void func_80181CE0(void) { -} - -void func_80181CE8(void) { -} - -s32 func_80181CF0(void) { - return 0x27; - } - - -void func_80181CF8(void *a0) { - *(short *)((char *)a0 + 0x2) = 0x2; - } - - - -extern void (*D_801901EC[])(void); - -void func_80181D04(void *a0) { - D_801901EC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80181D40); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80181DA8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80181DF4); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80181E34); - -void func_80181E7C(void *a0) { - *(short *)((char *)a0 + 0x2) = 0x2; - } - - - -extern void (*D_80190200[])(void); - -void func_80181E88(void *a0) { - D_80190200[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80181EC4); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80181F2C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80181F90); - -void func_80181FFC(s32 *a0) { - *(s16 *)((s32)a0 + 0x2) = 0x2; - } - - - -extern void (*D_80190214[])(void); - -void func_80182008(void *a0) { - D_80190214[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80182044); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80182098); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801820DC); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018211C); - -void func_80182164(void *a0) { - M2C_FIELD(a0, s16 *, 0x2) = 2; - } - - - -extern void (*D_80190228[])(void); - -void func_80182170(void *a0) { - D_80190228[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801821AC); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80182214); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80182278); - - -extern void (*D_80190234[])(void); - -void func_801822E4(void *a0) { - D_80190234[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_80182320(void *a0) { - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; - } - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80182330); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018236C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80182420); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80182488); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801824DC); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80182598); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80182980); - -extern void (*D_8019067C[])(void); - -void func_801829F8(void *a0) { - D_8019067C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80182A34); - - -extern void (*D_801906A8[])(void); - -void func_80182B50(void *a0) { - D_801906A8[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801906B0[])(void); - -void func_80182B8C(void *a0) { - D_801906B0[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801906C0[])(void); - -void func_80182BC8(void *a0) { - D_801906C0[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801906D0[])(void); - -void func_80182C04(void *a0) { - D_801906D0[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_80182C40(void) { -} - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80182C48); - - -extern void (*D_801906E0[])(void); - -void func_80182DF4(void *a0) { - D_801906E0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80182E30); - -extern s32 D_8019037C; -extern void *D_801E1BC8; -extern void func_80182420(s32 arg0, s32 arg1); - -void func_80182F8C(void) { - *(void **)&D_801E1BC8 = &D_8019037C; - func_80182420(0x474, 0x4B0); -} - - -extern void func_80182420(s32 arg0, s32 arg1); - extern s32 D_801903B4; - extern void *D_801E1BC8; - void func_80182FC0(void) { - D_801E1BC8 = &D_801903B4; - func_80182420(0x474, 0x4EC); - } - - -extern s32 D_801903EC; -extern void *D_801E1BC8; -extern void func_80182420(s32 arg0, s32 arg1); - -void func_80182FF4(void) { - *(void **)&D_801E1BC8 = &D_801903EC; - func_80182420(0x474, 0x4B0); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183028); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018305C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183090); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183104); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183138); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183184); - -extern void func_80182420(s32 arg0, s32 arg1); - extern s32 D_8019056C; - extern void *D_801E1BC8; - void func_801831B8(void) { - D_801E1BC8 = &D_8019056C; - func_80182420(0x474, 0x4B0); - } - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801831EC); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183220); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018326C); - -extern s32 func_801832A0(void); - -s32 func_801832A0(void) { - return -1; -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801832A8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183364); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183410); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183454); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183570); - - -extern void func_8012B414(int a0); - void func_8018360C(s32 arg0) { - s32 temp_v1 = *(s32 *)(arg0 + 0x20); - *(s16 *)(temp_v1 + 0x14) += 0x8; - ((void (*)(void))func_8012B414)(); - } - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183640); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801836B8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183700); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801837A4); - - -extern void (*D_80190700[])(void); - -void func_8018381C(void *a0) { - D_80190700[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32, s32); -extern u32 D_801906F0; - -void func_80183858(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_801906F0 | 0x40000000; - *(s16*)((u8*)(*(s32*)((u8*)arg0 + 0x20)) + 0x12) = *(u16*)((u8*)arg0 + 0xFC); - } -} - - -void func_801838D4(void) { -} - - -extern void (*D_80190738[])(void); - -void func_801838DC(void *a0) { - D_80190738[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183918); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801839A8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183BE4); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183C34); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183CF0); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183E08); - - -// @class: regalloc-order -// @stuck: none — MATCH - -extern u32 D_801E1C60; -extern u16 D_80190740[]; -extern u16 D_801E1C64[]; -extern s32 D_80190760; - -extern void func_800183E0(s32 a0); - -void func_80183E38(void) -{ - u32 i; - u16 *p; - u32 base; - u16 *tbl; - - i = 0; - tbl = D_80190740; - base = D_801E1C60 >> 8; - p = D_801E1C64; - do { - *p = tbl[(base + i) & 0xF] | 0x8000; - i = i + 1; - p = p + 1; - } while (i < 0x10); - func_800183E0((s32)&D_80190760); - D_801E1C60 = D_801E1C60 + 0x100; -} - - -void func_80183EC4(void *a0) { - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; - } - - - -void func_80183ED4(void *a0) { - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 2; - } - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183EE4); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183F80); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183FAC); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80183FD8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80184004); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80184088); - - -extern s32 func_80184088(s32 arg); -extern void func_801841EC(void *a0); - -void func_801841B8(void *a0) { - *(s32 *)((char *)a0 + 0xe0) = func_80184088((s32)a0); - func_801841EC(a0); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801841EC); - - -extern short D_800BA2BA; - s32 func_8018422C(s32 arg0) { - return *(short *)((char *)&D_800BA2BA + (*(short *)(*(s32 *)(arg0 + 0xd0) + 0x10) << 2)); - } - - - -extern void (*D_801BBE68[])(void); - -void func_80184254(void *a0) { - D_801BBE68[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_80184290(void) { -} - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80184298); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801842D4); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801842F8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80184350); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801843B8); - -void func_801843D8(void *a0) { - *(s16 *)((s32)a0 + 0x5C) = 0; - } - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801843E0); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80184428); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80184484); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801844F8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018456C); - - -extern s32 func_80029504(void); - extern void func_80029514(s32 arg0); - void func_801845C8(void) { - if (((s32 (*)(void))func_80029504)() == 0x3A2) { - ((void (*)(s32))func_80029514)(0x3AC); - } - } - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801845FC); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801846CC); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80184894); - - -extern void (*D_801BBE88[])(void); - -void func_801848DC(void *a0) { - D_801BBE88[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_80184918(void) { -} - -void func_80184920(void) { -} - -void func_80184928(void) { -} - -void func_80184930(void) { -} - -void func_80184938(void) { -} - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80184940); - -void func_80184984(void) { -} - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018498C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80184A14); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80184BEC); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80184D8C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80184E08); - -extern void func_80185614(void); - void func_80184ED4(void) { - func_80185614(); - } - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80184EF4); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80184FC4); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018502C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801850A0); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80185100); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80185180); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801851D8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80185238); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80185280); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801852D0); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80185308); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80185394); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80185438); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80185498); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80185614); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80185648); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018567C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801856E0); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80185754); - - -extern void (*D_801BC184[])(void); - -void func_801857AC(void *a0) { - D_801BC184[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801857E8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80185864); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80185984); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801859D0); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80185ADC); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80185B38); - -s16 func_80185B78(void) { - - extern s16 D_801E1C88; - return D_801E1C88; -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80185B88); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80185BD4); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80185C44); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80185C98); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018654C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80186ED8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80187010); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80187814); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80187B50); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80187EA0); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801880E0); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801882AC); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80188544); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018893C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80188C68); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80189504); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018953C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018957C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_801895C8); - - -extern void (*D_801D52BC[])(void); - -void func_801897DC(void *a0) { - D_801D52BC[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: iv-combine -// @stuck: none — MATCH (49 ins). gcc folds (v0+0x1800)-0x1000 -> v0+0x800; re-tie barrier on the WORKING reg v0 (NOT a saved local) forces the target chain v0=base+0x1800; s2=copy; v0-=0x1000; s1=v0<<5. NO register pins (pins re-trigger the lhu/lh dual-load CSE collapse and shrink the frame; natural alloc gives s0-s3 + frame 0x38). -extern int rand(void); -extern u8 *func_8012913C(s32 a0); - -extern unsigned short D_801D529C[]; - -void func_80189818(s32 param_1, s32 param_2) -{ - int s3; - unsigned short s0; - int s2; - int s1; - int v0; - int iVar3; - - s0 = D_801D529C[*(short *)(param_1 + 0xfc)]; - s3 = param_2; - if (((short *)D_801D529C)[*(short *)(param_1 + 0xfc)] == 0) { - *(short *)(param_1 + 0xfc) = 0; - s0 = D_801D529C[0]; - } - *(short *)(param_1 + 0xfc) = *(short *)(param_1 + 0xfc) + 1; - v0 = (rand() & 3) * 0x400 + 0x1800; - s2 = v0; - __asm__ __volatile__("" : "=r"(v0) : "0"(v0)); - s1 = (v0 - 0x1000) * 0x20; - iVar3 = ((int (*)(int))func_8012913C)(4); - if (iVar3 != 0) { - *(short *)(iVar3 + 6) = s3; - *(short *)(iVar3 + 0xa) = s0; - *(short *)(iVar3 + 0xe) = 0; - *(int *)(iVar3 + 0x10) = s1; - *(short *)(iVar3 + 0x2c) = s2; - } -} - - - -extern void (*D_801D52D0[])(void); - -void func_801898DC(void *a0) { - D_801D52D0[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH - -extern void func_80189818(s32, s32); -extern s32 func_8012AD50(void *a0); - -void func_80189918(int param_1) { - short uVar1; - - *(short *)(param_1 + 0xfc) = 0; - *(int *)(param_1 + 0x1c) = 1; - uVar1 = *(unsigned short *)(param_1 + 0x70) & 7; - *(short *)(param_1 + 0xfe) = (uVar1 < 2) ? 0x1e : 0xf; - if (uVar1 != 0) { - func_80189818(param_1, -0x80); - func_80189818(param_1, -0x30); - func_80189818(param_1, 0x20); - func_80189818(param_1, 0x70); - func_80189818(param_1, 0xc0); - } - if (1 < uVar1) { - func_80189818(param_1, -0x58); - func_80189818(param_1, -0x8); - func_80189818(param_1, 0x48); - func_80189818(param_1, 0x98); - func_80189818(param_1, 0xe8); - } - ((void (*)(int))func_8012AD50)(param_1); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (param_1 naturally lands in $s0 across the call, mirrors sibling func_80184AEC) - -extern s32 func_8012BEE8(s32 a0); -extern void func_80189818(s32, s32); - -void func_80189A00(s32 arg0) { - if (func_8012BEE8(arg0)) { - *(s32 *)(arg0 + 0x1c) = (s32)*(s16 *)(arg0 + 0xfe); - func_80189818(arg0, 0x110); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (expected) -extern void func_8001CB00(int param_1, void *src, int len, int n); - -extern unsigned char D_801D52C4; - -void func_80189A40(int param_1) -{ - unsigned short uVar1; - int iVar2; - - iVar2 = *(int *)(param_1 + 0x20); - func_8001CB00(iVar2, &D_801D52C4, 0x280, 0x100); - *(unsigned int *)(iVar2 + 4) = *(unsigned int *)(iVar2 + 4) | 0x70000000; - uVar1 = *(unsigned short *)(param_1 + 0x2c); - *(unsigned char *)(iVar2 + 0x27) = 0x9e; - *(unsigned short *)(iVar2 + 0x2c) = 4; - *(unsigned short *)(iVar2 + 0x1c) = uVar1; - *(unsigned short *)(iVar2 + 0x1a) = uVar1; - *(unsigned short *)(iVar2 + 0x18) = uVar1; - *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + 1; - return; -} - - - -extern void func_801292C8(u8 *a0); - -void func_80189AC8(u8 *a0) { - *(s32 *)(a0 + 0x4) = *(s32 *)(a0 + 0x4) - *(s32 *)(a0 + 0x10); - if (*(s16 *)(a0 + 0x6) < -0x110) { - func_801292C8(a0); - } -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80189B10); - - -extern void (*D_801DE38C[])(void); - -void func_80189BBC(void *a0) { - D_801DE38C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80189BF8); - -void func_80189C5C(void) { -} - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80189C64); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80189CB0); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80189CF0); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80189D4C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_80189F00); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018A250); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018A3C8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018A470); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018A4B8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018A594); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018A5B8); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018A61C); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018A698); - -void func_8018A6B8(void) { -} - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018A6C0); - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017A4AC", func_8018A788); - - - diff --git a/src/ov_SC03_124/ov_SC03_124_jr_8017AE2C.c b/src/ov_SC03_124/ov_SC03_124_jr_8017AE2C.c new file mode 100644 index 000000000..6491f0d7c --- /dev/null +++ b/src/ov_SC03_124/ov_SC03_124_jr_8017AE2C.c @@ -0,0 +1,4979 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018D0E8; +extern u8 D_8018D058; +extern u8 D_8018D034; +extern u8 D_8018D010; +extern u8 D_8018D0C4; +extern u8 D_8018D0A0; +extern u8 D_8018D07C; +extern u8 D_8018CFEC; +extern void func_80145934(void); +extern u8 D_8018D178; +extern u8 D_8018D154; +extern u8 D_8018D130; +extern u8 D_8018D10C; +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_8018C570[]; +extern unsigned char D_8018C5A0[]; +extern unsigned char D_8018C5F0[]; +extern unsigned char D_8018C620[]; +extern unsigned char D_8018C650[]; +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(void); +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_8018C6A0[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018C768[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018C7F0[]; +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_8018C7F8; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801E0650; +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_801E0654; +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_8018C828; +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 void 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_8018C8D0[])(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_8018C8F4[])(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_8018C8E4; +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_8018C908[])(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_8018C914[]; +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_8018C924[])(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_8018C93C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018C92C; +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_8018C950[])(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_8018C96C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018C95C; +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_8018C980[])(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_8018C994[])(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_8018C9A8; +extern void (*D_8018C9D0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018C9B0; +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_8018CA1C[])(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_8018CA20[])(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(void *a0); +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_8018CE84[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018CE94[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801E0688; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018CEBC[])(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_8018CE9C; +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_8018CEAC; +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_8018CEFC[])(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_8018CF04[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018CED0; +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_8018CF10[])(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_8018CEE0; +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_801E0690; +extern s32 D_801E069C; +extern s32 D_801E06A0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018CF4C[])(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_8018CF20[]; +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_801E0698; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018D19C[])(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_8018CFBC[]; +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_8018D240[])(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_8018D394[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018D1B0; +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_8018D39C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018D1C0; +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_8018D1E0; +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_8018D3A4[])(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(void); +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_8018D3CC[])(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_8018D3D8[])(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_8018D24C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018D47C; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018C560[]; +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_8018D490[]; +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_8018D4CC[]; +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_8018D514; +extern u16 D_8018D516; +extern u16 D_8018D518; +extern s32 D_8018D51C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018D524; +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_8018D230; +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_8018D5A8[]; +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_8018D658[])(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_8018D688[]; +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_8018D6EC; +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_801E06A8[]; +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_8018D710[])(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_801E0700[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018D758[])(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_8018D748; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801DFB40[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_8018D760[])(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_8018D7B4[])(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_8018D77C; +extern s16 D_8018D7B0; +extern s16 D_8018D7AE; +extern s16 D_8018D7AC; +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_8018D7C0[])(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_801E0760; +extern u8 D_801E0761; +extern u8 D_801E0762; +extern u8 D_801E0763; +extern u8 D_801E0764; +extern u8 D_801E0765; +extern u8 D_801E0766; +extern u8 D_801E0767; +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_8018D7D0[])(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_801E07A0; +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_8018D814[])(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_8018D890[]; +extern s32 D_8018D8B0[]; +extern u8 D_8018D92C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018D94C[]; +extern u8 D_8018D96C[]; +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_8018DA08[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018DA84[])(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_801DFB50; +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_8018DA90[])(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_8018DA98[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018DB60[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018DB70[])(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_8018DB80[])(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_8018DB8C[])(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_8018DAEC[]; +extern u8 D_8018DB00[]; +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_8018DBA4[])(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_8018DBAC[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018DBB4[])(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_8018DBBC[])(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_8018DBC4[])(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_8018DBCC[])(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_8018DBD4[])(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_8018DC88[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018DC90[])(void); +extern void func_80169F00(void *a0); +extern char D_8018DC40[]; +extern char D_8018DC00[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018DCC8[])(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_8018DCD4[])(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_8018DD1C[])(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_8018DD98[])(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_801E0AC0; +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_8018DD8C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018DDD0[]; +extern unsigned short D_8018DDD8[]; +extern unsigned short D_8018DDE0[]; +extern unsigned char D_801E0AC8[]; +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_801E0AC0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018DDE8[])(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_801E0BFC; +extern M2C_UNK D_801E0C00; +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_801E0B88; +extern void (*D_8018DE18[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801E0C04[]; +extern u8 D_801E0C0C[]; +extern u8 D_801E0BBC[]; +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_8018DE20[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018DE3C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018DE44[])(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_8018DEAC[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018DE50; +extern u8 D_8018DE5C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018DEE0[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018DEE8[])(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_8018DF3C[])(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_8018DF70[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018DF60[]; +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_8018DF8C; +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); +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_8018E004[])(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_8018E00C[])(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_8018E014[])(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_8018E01C[])(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_8018E024[])(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_8018E02C[])(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_8018E038[])(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_8018E044[])(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_8018E050[])(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_8018E060[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018E070[])(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_8018E078[])(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_8018E080[])(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_8018E088[])(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_8018E090[])(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_8018E098[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018E0A0[])(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_8018E0A8[])(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_8018E0B0[])(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_8018E0B8[])(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_8018E0C0[])(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_8018E0C8[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018E0D0[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018E0D8[])(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_8018E0E0[])(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_8018E0E8[])(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_8018E0F0[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018E0F8[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018E100[])(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_8018E108[])(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_8018E110[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018E118[])(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_8018E120[])(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_8018E164[])(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_8018E128; +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_8018E194[])(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_8018E1D0[])(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(s32); +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_8018E228[])(); +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_8018E238[])(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_8018E240[])(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_8018E3A8[])(); +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_8018E3B4[])(); +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_801DFD98; +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 int func_801789AC(void); +extern s16 D_801E2570; +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 short D_801E25E4; +extern void func_80178D18(void); +extern s32 func_80178D40(s32 arg0, s32 arg1); +extern void func_80179B28(s32 a0); +extern void func_80179B74(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801E176C; +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_801E1794; +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_801E1750; +extern s32 func_8017A3B0(void); +extern short D_801E178C; +extern short D_801E1788; +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_801E2528; +extern s16 D_801E252A; +extern s16 D_801E2534; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801E2528; + + 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_801E2534); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801E2528+0xC == &D_801E2534; 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_801E2528 + 0xC)) < 0x101) { + D_801E2528 = 0; + D_801E252A = 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_801E2534); + 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_801E2528 + 0xC)) < 0x101) { + D_801E2528 = 0; + D_801E252A = 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_801E17CC; + extern s16 D_801E17CE; + extern s16 D_801E17D0; + extern s16 D_801E17C4; + extern s16 D_801E17C6; + extern s16 D_801E17C8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801E17CC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801E17CE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801E17D0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801E17C4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801E17C6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801E17C8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801E1754; +extern u16 D_801E17D4; +extern u16 D_801E17D6; +extern u16 D_801E17D8; +extern s16 D_801E2570; + +void func_8017B1D8(void) { + func_8012A418(); + D_801E2570 = 0; + D_801E1754 = 0; + D_801E17D4 = D_80126B5E; + D_801E17D6 = D_80126B62; + D_801E17D8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018E4F0[]; + extern s16 D_801E17CC; + extern s16 D_801E17C4; + 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_8018E4F0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018E4F0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801E17CC; + s16 *p78C = &D_801E17C4; + *(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_801E2570 = 1; + D_801E1754 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801E1774; + extern SV4_8017B368 D_801E177C; + extern s16 D_801E17CC; + extern s16 D_801E17C4; + extern u16 D_8018E4F0; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801E1774; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801E177C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018E4F0)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018E4F0)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801E17CC) = loc0; + (*(SV4_8017B368 *)&D_801E17C4) = loc1; + D_801E2570 = 1; + D_801E1754 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018E4F0[]; + extern s16 D_801E17CC; + extern s16 D_801E17CE; + extern s16 D_801E17D0; + extern s16 D_801E17C4; + extern s16 D_801E17C6; + extern s16 D_801E17C8; + 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_8018E4F0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018E4F0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801E17CC; + s16 *p78C = &D_801E17C4; + *(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_801E17CE; + v798 = D_801E17D0; + v78C = *p78C; + v78E = D_801E17C6; + v790 = D_801E17C8; + __asm__ __volatile__(""); + D_801E2570 = 1; + D_801E1754 = 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_801E1754; +extern s16 D_801E17CC; +extern s16 D_801E17CE; +extern s16 D_801E17D0; +extern s16 D_801E17C4; +extern s16 D_801E17C6; +extern s16 D_801E17C8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801E1754 = 0; + D_801E17CC = (s16) D_80114F30; + D_801E17CE = (s16) D_80114F34; + D_801E17D0 = (s16) D_80114F38; + D_801E17C4 = (s16) D_80114F24; + D_801E17C6 = (s16) D_80114F28; + D_801E17C8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801E17E4; +extern s16 D_801E17E6; +extern s16 D_801E17E8; +extern s16 D_801E17EC; +extern s16 D_801E17EE; +extern s16 D_801E17F0; + +void func_8017B824(void) { + D_801E17E4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801E17E6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801E17E8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801E17EC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801E17EE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801E17F0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801E17E4; +extern s16 D_801E17E6; +extern s16 D_801E17E8; +extern s16 D_801E17EC; +extern s16 D_801E17EE; +extern s16 D_801E17F0; + +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_801E17E4; + D_80114F34 = D_801E17E6; + D_80114F38 = D_801E17E8; + D_80114F24 = D_801E17EC; + D_80114F28 = D_801E17EE; + D_80114F2C = D_801E17F0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801E17CC), src[8..15] -> (*(S8_8017B8E8 *)&D_801E17C4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801E17CC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801E17C4) = ((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_801E17D4; +extern u16 D_801E17D6; +extern u16 D_801E17D8; + +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_801E1754; +extern short D_801E17DC; +extern short D_801E17DE; +extern short D_801E17E0; +extern s16 D_801E17CC; +extern s16 D_801E17CE; +extern s16 D_801E17D0; +extern s16 D_801E17C4; +extern s16 D_801E17C6; +extern s16 D_801E17C8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801E17D4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801E17D6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801E17D8); + (*(s16 *)&D_801E17DC) = buf[0]; + (*(s16 *)&D_801E17DE) = buf[1]; + (*(s16 *)&D_801E17E0) = buf[2]; + D_801E17CC = D_80114F30 + buf[0]; + D_801E1754 = 0; + D_801E17CE = D_80114F34 + buf[1]; + D_801E17D0 = D_80114F38 + buf[2]; + D_801E17C4 = D_80114F24 + buf[0]; + D_801E17C6 = D_80114F28 + buf[1]; + D_801E17C8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801E1774; +extern SV4 D_801E177C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801E177C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801E1774 = 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_801E177C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801E177C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801E1774) = 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_801E177C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801E179C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801E179C; + 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_801E1754; +extern s16 D_801E2570; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801E1754 = D_801E1754 + 1; + if (D_801E1754 >= 0x1F) { + D_801E2570 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801E1754; +extern s16 D_801E2570; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801E1754 = D_801E1754 + 1; + if (0x18 < D_801E1754) { + func_8012A4BC(); + D_801E2570 = 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_801E1754; +extern void (*D_801E1798)(void); +extern short D_801E17DC; +extern short D_801E17DE; +extern short D_801E17E0; +extern s16 D_801E2570; + +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_801E1754 = D_801E1754 + 1; + if (D_801E1754 >= 0x19) { + if (D_801E1798 != 0) { + (*D_801E1798)(); + } else { + D_80114F30 = D_80114F30 + D_801E17DC; + D_80114F34 = D_80114F34 + D_801E17DE; + D_80114F38 = D_80114F38 + D_801E17E0; + D_80114F24 = D_80114F24 + D_801E17DC; + D_80114F28 = D_80114F28 + D_801E17DE; + D_80114F2C = D_80114F2C + D_801E17E0; + func_8012A4BC(); + } + D_801E2570 = 0; + } +} + + + +extern void (*D_8018E590[])(void); + +void func_8017BE60(void *a0) { + D_8018E590[*(u8 *)((s32)a0 + 0x4)](); +} + + + +extern void (*D_8018E630[])(void); + +void func_8017BE9C(void *a0) { + D_8018E630[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_8018E638[])(void); + +void func_8017BED8(void *a0) { + D_8018E638[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_8018E640[])(void); + +void func_8017BF14(void *a0) { + D_8018E640[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017BF50); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017C094); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017C100); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017C1AC); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017C1EC); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017C2B0); + + +extern void (*D_8018E660[])(void); + +void func_8017C338(void *a0) { + D_8018E660[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017C374); + +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); + } +} + + + +extern void (*D_8018E668[])(void); + +void func_8017C5CC(void *a0) { + D_8018E668[*(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_8018E654; + +void func_8017C608(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_8018E654, 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; + } +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017C710); + + +// @class: plumbing +// @stuck: none — MATCH (simple two-call wrapper, $s0 holds param across calls by default regalloc) + +extern void func_8017D990(void *arg0); +extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); +extern void func_800167B8(s32 a0); + +s32 func_8017D5F0(s32 param_1) +{ + ((void (*)(void *, s32))func_8016EDEC)(func_8017D990, 0x1000000); + func_800167B8(0); + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + return 0; +} + + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017D640(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017D664); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017D6D4); + +extern void func_800D1EBC(void); +void func_8017D784(void) { + func_800D1EBC(); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017D7A4); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017D7F8); + + +extern void (*D_8018E670[])(void); + +void func_8017D88C(void *a0) { + D_8018E670[*(u8 *)((s32)a0 + 0x15)](); +} + + + +extern void (*D_8018E678[])(void); + +void func_8017D8C8(void *a0) { + D_8018E678[*(u8 *)((s32)a0 + 0x15)](); +} + + + +extern void (*D_8018E684[])(void); + +void func_8017D904(void *a0) { + D_8018E684[*(u8 *)((s32)a0 + 0x15)](); +} + + + +extern void (*D_8018E690[])(void); + +void func_8017D940(void *a0) { + D_8018E690[*(u8 *)((s32)a0 + 0x15)](); +} + + +extern s32 D_80127050; + void func_8017D97C(void) { + D_80127050 = 0x1; + } + + + +extern void (*D_8018E944[])(void); + +void func_8017D990(void *a0) { + D_8018E944[*(u8 *)((s32)a0 + 0x214)](); +} + + +void func_8017D9CC(u8 *a0) { + *(u8 *)(a0 + 0x214) += 1; + } + + +extern void func_80175414(s32 arg0); + extern void func_8016F0E4(void); + extern void func_80165770(void); + void func_8017D9E0(s32 arg0) { + func_80175414(arg0); + ((s32 (*)(s32))func_8016F0E4)(arg0); + ((void (*)(s32))func_80165770)(arg0); + } + + + +extern void (*D_8018E94C[])(void); + +void func_8017DA18(void *a0) { + D_8018E94C[*(u8 *)((s32)a0 + 0x214)](); +} + + +void func_8017DA54(void *a0) { + *(u8 *)((s32)a0 + 0x214) += 1; + } + + +extern void func_8016F0E4(void); + void func_8017DA68(void) { + ((s32 (*)(void))func_8016F0E4)(); + } + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017DA88); + + +extern void (*D_8018E954[])(void); + +void func_8017DB4C(void *a0) { + D_8018E954[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017DB88); + +void func_8017DBBC(s32 *a0) { + *(s8*)((s32)a0 + 0xA0) = 0; +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017DBC4); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017DD04); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017DEF8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017DFE4); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017E048); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017E098); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017E228); + + +extern void (*D_8018F01C[])(void); + +void func_8017E380(void *a0) { + D_8018F01C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017E3BC); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017E408); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017E4E4); + +extern s32 func_8012E544(s32 arg); + void func_8017E510(void) { + s32 r = func_8012E544(0x17B); + *(s16 *)(r + 0xFC) = 0x2; + } + + + +extern s32 func_8012E544(s32 arg); + void func_8017E534(void) { + s32 r = func_8012E544(0x17B); + *(s16 *)(r + 0xFC) = 0x1; + } + + + +extern s32 func_8012E544(s32 arg); + void func_8017E558(void) { + s32 r = func_8012E544(0x17B); + *(s16 *)(r + 0xFC) = 0x4; + } + + + +extern s32 func_8012E544(s32 arg); + void func_8017E57C(void) { + s32 r = func_8012E544(0x17B); + *(s16 *)(r + 0xFC) = 0x3; + } + + + +extern s32 func_8012E544(s32 arg); + void func_8017E5A0(void) { + s32 r = func_8012E544(0x17B); + *(s16 *)(r + 0xFC) = 0x5; + } + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017E5C4); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017E62C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017E694); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017E738); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017E7E0); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017E880); + + +extern void (*D_8018F1C8[])(void); + +void func_8017E8AC(void *a0) { + D_8018F1C8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017E8E8); + +extern void func_80029514(int); +void func_8017E914(void) { + func_80029514(0xdc); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017E934); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017EA10); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017EA5C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017EAB4); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017EB04); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017EB84); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017EBEC); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017EC50); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017ECA0); + +extern void func_801843E0(void *a0, s32 a1); + extern short D_8018F1DC; + void func_8017ECFC(s16 *a0) { + *(short *)((char *)a0 + 0x2) = 0x7; + func_801843E0(a0, &D_8018F1DC); + } + + + +extern void (*D_8018F330[])(void); + +void func_8017ED28(void *a0) { + D_8018F330[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017ED64); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017ED90); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017EDE8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017EED4); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017EF90); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017F054); + +void func_8017F09C(void) { +} + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017F0A4); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017F1A0); + + +extern void (*D_8018F46C[])(void); + +void func_8017F20C(void *a0) { + D_8018F46C[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_80029514(int); +void func_8017F248(void) { + func_80029514(0x186); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017F268); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017F2A8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017F2E8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017F380); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017F3BC); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017F40C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017F438); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017F5CC); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017F63C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017F768); + +void func_8017F840(void) { +} + + +extern void (*D_8018FBE4[])(void); + +void func_8017F848(void *a0) { + D_8018FBE4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017F884); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017F90C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017F9D8); + +extern void func_80029514(int); +void func_8017FA34(void) { + func_80029514(0x190); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017FA54); + +extern s32 D_801E1A18; + +void func_8017FA84(void) { + D_801E1A18 = 1; +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017FA98); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017FB04); + +extern void func_8017F768(void); +void func_8017FB54(void) { + func_8017F768(); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017FB74); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017FC58); + +extern void func_801851D8(s32 arg); + void func_8017FCE4(void) { + func_801851D8(0x7); + } + + +extern void func_80185238(s32 arg); + void func_8017FD04(void) { + func_80185238(0x7); + } + + +extern s32 func_8012E57C(s32 arg0, s32 arg1); + void func_8017FD24(void) { + s32 r; + s32 p; + r = func_8012E57C(0x61, 0x7); + if (r != 0) { + *(s16 *)(r + 0xE8) = 1; + } + } + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017FD58); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017FD70); + +void func_8017FE10(void) { +} + +extern s32 func_8012C588(s32 a0, s32 a1); + void func_8017FE18(u8 *a0) { + ((void (*)(s32, s32))func_8012C588)(0x3D7, (s32)a0); + } + + + +extern s32 func_8012E544(s32 arg); + void func_8017FE3C(void) { + s32 p = func_8012E544(0x224); + if (p != 0) { + *(u16*)(p + 0x34) += 1; + } + } + + +extern s32 func_8012E544(s32 arg); + void func_8017FE78(void) { + s32 p = func_8012E544(0x224); + if (p != 0) { + *(u16*)(p + 0x34) += 1; + } + } + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017FEB4); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017FF64); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017FFC8); + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80180020); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018004C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018009C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801801B0); + + +extern void (*D_8018FC14[])(void); + +void func_801801F4(void *a0) { + D_8018FC14[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_80180230(void *a0) { + *(short *)((char *)a0 + 0x2) = 0x5; + } + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018023C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801802A8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80180334); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801803CC); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80180478); + +void func_801804B8(void) { +} + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801804C0); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801805AC); + +void func_80180684(void) { +} + + +extern void (*D_8018FDFC[])(void); + +void func_8018068C(void *a0) { + D_8018FDFC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801806C8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801806E0); + +extern void func_800D1724(s32 a0); + extern s32 D_8018E894; + void func_80180704(void) { + ((void (*)(void *))func_800D1724)(&D_8018E894); + } + + +void func_8018072C(void) { +} + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80180734); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801807D8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80180828); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80180868); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801808B8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018095C); + + +extern void (*D_8018FE1C[])(void); + +void func_80180A24(void *a0) { + D_8018FE1C[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_8012E8E0(s32 a0, s32 a1); +extern s32 D_8018FE14; + +void func_80180A60(void * arg0) { + func_8012E8E0((s32)arg0, (s32)&D_8018FE14); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80180A88); + +extern void (*D_8018FEA4[])(void); + +void func_80180B40(void *a0) { + D_8018FEA4[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_80180B7C(void) { +} + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_8018FE4C; + void func_80180B84(short *param_1) { + *(short *)((char *)param_1 + 0x2) = 0x3; + func_80178CBC((s32 *)param_1, (s32)&D_8018FE4C); + } + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80180BB0); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80180C0C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80180CC8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80180D48); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80180E40); + + +extern void (*D_8018FF38[])(void); + +void func_80181040(void *a0) { + D_8018FF38[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018107C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801810E4); + + +extern void (*D_8019003C[])(void); + +void func_801812D0(void *a0) { + D_8019003C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018130C); + + +extern void (*D_80190088[])(void); + +void func_801814A4(void *a0) { + D_80190088[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801814E0); + +extern s32 func_8018107C(void); + void func_8018156C(void) { + func_8018107C(); + } + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018158C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80181644); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801816C8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801817AC); + +extern void func_8012B2CC(s32 a0); + void func_80181810(void * arg0) { + s32 *p = *(s32 **)((char *)arg0 + 0x20); + *(short *)((char *)arg0 + 0x2) = 0x2; + *(short *)((char *)p + 0x12) = -0x600; + func_8012B2CC((s32)arg0); + } + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80181840); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80181870); + + +extern void (*D_801901D0[])(void); + +void func_801819E0(void *a0) { + D_801901D0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80181A1C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80181A98); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80181B08); + +extern void func_8002D4C8(s32 arg0, s32 arg1); + void func_80181B20(void) { + func_8002D4C8(0x7E0, 0); + } + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80181B44); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80181C78); + +void func_80181CE0(void) { +} + +void func_80181CE8(void) { +} + +s32 func_80181CF0(void) { + return 0x27; + } + + +void func_80181CF8(void *a0) { + *(short *)((char *)a0 + 0x2) = 0x2; + } + + + +extern void (*D_801901EC[])(void); + +void func_80181D04(void *a0) { + D_801901EC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80181D40); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80181DA8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80181DF4); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80181E34); + +void func_80181E7C(void *a0) { + *(short *)((char *)a0 + 0x2) = 0x2; + } + + + +extern void (*D_80190200[])(void); + +void func_80181E88(void *a0) { + D_80190200[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80181EC4); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80181F2C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80181F90); + +void func_80181FFC(s32 *a0) { + *(s16 *)((s32)a0 + 0x2) = 0x2; + } + + + +extern void (*D_80190214[])(void); + +void func_80182008(void *a0) { + D_80190214[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80182044); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80182098); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801820DC); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018211C); + +void func_80182164(void *a0) { + M2C_FIELD(a0, s16 *, 0x2) = 2; + } + + + +extern void (*D_80190228[])(void); + +void func_80182170(void *a0) { + D_80190228[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801821AC); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80182214); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80182278); + + +extern void (*D_80190234[])(void); + +void func_801822E4(void *a0) { + D_80190234[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_80182320(void *a0) { + *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; + } + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80182330); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018236C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80182420); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80182488); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801824DC); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80182598); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80182980); + +extern void (*D_8019067C[])(void); + +void func_801829F8(void *a0) { + D_8019067C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80182A34); + + +extern void (*D_801906A8[])(void); + +void func_80182B50(void *a0) { + D_801906A8[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_801906B0[])(void); + +void func_80182B8C(void *a0) { + D_801906B0[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_801906C0[])(void); + +void func_80182BC8(void *a0) { + D_801906C0[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_801906D0[])(void); + +void func_80182C04(void *a0) { + D_801906D0[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_80182C40(void) { +} + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80182C48); + + +extern void (*D_801906E0[])(void); + +void func_80182DF4(void *a0) { + D_801906E0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80182E30); + +extern s32 D_8019037C; +extern void *D_801E1BC8; +extern void func_80182420(s32 arg0, s32 arg1); + +void func_80182F8C(void) { + *(void **)&D_801E1BC8 = &D_8019037C; + func_80182420(0x474, 0x4B0); +} + + +extern void func_80182420(s32 arg0, s32 arg1); + extern s32 D_801903B4; + extern void *D_801E1BC8; + void func_80182FC0(void) { + D_801E1BC8 = &D_801903B4; + func_80182420(0x474, 0x4EC); + } + + +extern s32 D_801903EC; +extern void *D_801E1BC8; +extern void func_80182420(s32 arg0, s32 arg1); + +void func_80182FF4(void) { + *(void **)&D_801E1BC8 = &D_801903EC; + func_80182420(0x474, 0x4B0); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183028); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018305C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183090); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183104); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183138); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183184); + +extern void func_80182420(s32 arg0, s32 arg1); + extern s32 D_8019056C; + extern void *D_801E1BC8; + void func_801831B8(void) { + D_801E1BC8 = &D_8019056C; + func_80182420(0x474, 0x4B0); + } + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801831EC); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183220); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018326C); + +extern s32 func_801832A0(void); + +s32 func_801832A0(void) { + return -1; +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801832A8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183364); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183410); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183454); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183570); + + +extern void func_8012B414(int a0); + void func_8018360C(s32 arg0) { + s32 temp_v1 = *(s32 *)(arg0 + 0x20); + *(s16 *)(temp_v1 + 0x14) += 0x8; + ((void (*)(void))func_8012B414)(); + } + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183640); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801836B8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183700); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801837A4); + + +extern void (*D_80190700[])(void); + +void func_8018381C(void *a0) { + D_80190700[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32, s32); +extern u32 D_801906F0; + +void func_80183858(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_801906F0 | 0x40000000; + *(s16*)((u8*)(*(s32*)((u8*)arg0 + 0x20)) + 0x12) = *(u16*)((u8*)arg0 + 0xFC); + } +} + + +void func_801838D4(void) { +} + + +extern void (*D_80190738[])(void); + +void func_801838DC(void *a0) { + D_80190738[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183918); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801839A8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183BE4); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183C34); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183CF0); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183E08); + + +// @class: regalloc-order +// @stuck: none — MATCH + +extern u32 D_801E1C60; +extern u16 D_80190740[]; +extern u16 D_801E1C64[]; +extern s32 D_80190760; + +extern void func_800183E0(s32 a0); + +void func_80183E38(void) +{ + u32 i; + u16 *p; + u32 base; + u16 *tbl; + + i = 0; + tbl = D_80190740; + base = D_801E1C60 >> 8; + p = D_801E1C64; + do { + *p = tbl[(base + i) & 0xF] | 0x8000; + i = i + 1; + p = p + 1; + } while (i < 0x10); + func_800183E0((s32)&D_80190760); + D_801E1C60 = D_801E1C60 + 0x100; +} + + +void func_80183EC4(void *a0) { + *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; + } + + + +void func_80183ED4(void *a0) { + *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 2; + } + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183EE4); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183F80); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183FAC); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80183FD8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80184004); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80184088); + + +extern s32 func_80184088(s32 arg); +extern void func_801841EC(void *a0); + +void func_801841B8(void *a0) { + *(s32 *)((char *)a0 + 0xe0) = func_80184088((s32)a0); + func_801841EC(a0); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801841EC); + + +extern short D_800BA2BA; + s32 func_8018422C(s32 arg0) { + return *(short *)((char *)&D_800BA2BA + (*(short *)(*(s32 *)(arg0 + 0xd0) + 0x10) << 2)); + } + + + +extern void (*D_801BBE68[])(void); + +void func_80184254(void *a0) { + D_801BBE68[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_80184290(void) { +} + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80184298); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801842D4); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801842F8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80184350); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801843B8); + +void func_801843D8(void *a0) { + *(s16 *)((s32)a0 + 0x5C) = 0; + } + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801843E0); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80184428); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80184484); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801844F8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018456C); + + +extern s32 func_80029504(void); + extern void func_80029514(s32 arg0); + void func_801845C8(void) { + if (((s32 (*)(void))func_80029504)() == 0x3A2) { + ((void (*)(s32))func_80029514)(0x3AC); + } + } + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801845FC); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801846CC); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80184894); + + +extern void (*D_801BBE88[])(void); + +void func_801848DC(void *a0) { + D_801BBE88[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_80184918(void) { +} + +void func_80184920(void) { +} + +void func_80184928(void) { +} + +void func_80184930(void) { +} + +void func_80184938(void) { +} + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80184940); + +void func_80184984(void) { +} + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018498C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80184A14); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80184BEC); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80184D8C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80184E08); + +extern void func_80185614(void); + void func_80184ED4(void) { + func_80185614(); + } + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80184EF4); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80184FC4); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018502C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801850A0); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80185100); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80185180); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801851D8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80185238); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80185280); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801852D0); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80185308); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80185394); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80185438); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80185498); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80185614); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80185648); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018567C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801856E0); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80185754); + + +extern void (*D_801BC184[])(void); + +void func_801857AC(void *a0) { + D_801BC184[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801857E8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80185864); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80185984); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801859D0); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80185ADC); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80185B38); + +s16 func_80185B78(void) { + + extern s16 D_801E1C88; + return D_801E1C88; +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80185B88); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80185BD4); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80185C44); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80185C98); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018654C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80186ED8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80187010); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80187814); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80187B50); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80187EA0); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801880E0); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801882AC); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80188544); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018893C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80188C68); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80189504); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018953C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018957C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_801895C8); + + +extern void (*D_801D52BC[])(void); + +void func_801897DC(void *a0) { + D_801D52BC[*(u16 *)((s32)a0 + 0x2)](); +} + + + +// @class: iv-combine +// @stuck: none — MATCH (49 ins). gcc folds (v0+0x1800)-0x1000 -> v0+0x800; re-tie barrier on the WORKING reg v0 (NOT a saved local) forces the target chain v0=base+0x1800; s2=copy; v0-=0x1000; s1=v0<<5. NO register pins (pins re-trigger the lhu/lh dual-load CSE collapse and shrink the frame; natural alloc gives s0-s3 + frame 0x38). +extern int rand(void); +extern u8 *func_8012913C(s32 a0); + +extern unsigned short D_801D529C[]; + +void func_80189818(s32 param_1, s32 param_2) +{ + int s3; + unsigned short s0; + int s2; + int s1; + int v0; + int iVar3; + + s0 = D_801D529C[*(short *)(param_1 + 0xfc)]; + s3 = param_2; + if (((short *)D_801D529C)[*(short *)(param_1 + 0xfc)] == 0) { + *(short *)(param_1 + 0xfc) = 0; + s0 = D_801D529C[0]; + } + *(short *)(param_1 + 0xfc) = *(short *)(param_1 + 0xfc) + 1; + v0 = (rand() & 3) * 0x400 + 0x1800; + s2 = v0; + __asm__ __volatile__("" : "=r"(v0) : "0"(v0)); + s1 = (v0 - 0x1000) * 0x20; + iVar3 = ((int (*)(int))func_8012913C)(4); + if (iVar3 != 0) { + *(short *)(iVar3 + 6) = s3; + *(short *)(iVar3 + 0xa) = s0; + *(short *)(iVar3 + 0xe) = 0; + *(int *)(iVar3 + 0x10) = s1; + *(short *)(iVar3 + 0x2c) = s2; + } +} + + + +extern void (*D_801D52D0[])(void); + +void func_801898DC(void *a0) { + D_801D52D0[*(u16 *)((s32)a0 + 0x2)](); +} + + + +// @class: regalloc-order +// @stuck: none — MATCH + +extern void func_80189818(s32, s32); +extern s32 func_8012AD50(void *a0); + +void func_80189918(int param_1) { + short uVar1; + + *(short *)(param_1 + 0xfc) = 0; + *(int *)(param_1 + 0x1c) = 1; + uVar1 = *(unsigned short *)(param_1 + 0x70) & 7; + *(short *)(param_1 + 0xfe) = (uVar1 < 2) ? 0x1e : 0xf; + if (uVar1 != 0) { + func_80189818(param_1, -0x80); + func_80189818(param_1, -0x30); + func_80189818(param_1, 0x20); + func_80189818(param_1, 0x70); + func_80189818(param_1, 0xc0); + } + if (1 < uVar1) { + func_80189818(param_1, -0x58); + func_80189818(param_1, -0x8); + func_80189818(param_1, 0x48); + func_80189818(param_1, 0x98); + func_80189818(param_1, 0xe8); + } + ((void (*)(int))func_8012AD50)(param_1); +} + + + +// @class: regalloc-order +// @stuck: none — MATCH (param_1 naturally lands in $s0 across the call, mirrors sibling func_80184AEC) + +extern s32 func_8012BEE8(s32 a0); +extern void func_80189818(s32, s32); + +void func_80189A00(s32 arg0) { + if (func_8012BEE8(arg0)) { + *(s32 *)(arg0 + 0x1c) = (s32)*(s16 *)(arg0 + 0xfe); + func_80189818(arg0, 0x110); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (expected) +extern void func_8001CB00(int param_1, void *src, int len, int n); + +extern unsigned char D_801D52C4; + +void func_80189A40(int param_1) +{ + unsigned short uVar1; + int iVar2; + + iVar2 = *(int *)(param_1 + 0x20); + func_8001CB00(iVar2, &D_801D52C4, 0x280, 0x100); + *(unsigned int *)(iVar2 + 4) = *(unsigned int *)(iVar2 + 4) | 0x70000000; + uVar1 = *(unsigned short *)(param_1 + 0x2c); + *(unsigned char *)(iVar2 + 0x27) = 0x9e; + *(unsigned short *)(iVar2 + 0x2c) = 4; + *(unsigned short *)(iVar2 + 0x1c) = uVar1; + *(unsigned short *)(iVar2 + 0x1a) = uVar1; + *(unsigned short *)(iVar2 + 0x18) = uVar1; + *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + 1; + return; +} + + + +extern void func_801292C8(u8 *a0); + +void func_80189AC8(u8 *a0) { + *(s32 *)(a0 + 0x4) = *(s32 *)(a0 + 0x4) - *(s32 *)(a0 + 0x10); + if (*(s16 *)(a0 + 0x6) < -0x110) { + func_801292C8(a0); + } +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80189B10); + + +extern void (*D_801DE38C[])(void); + +void func_80189BBC(void *a0) { + D_801DE38C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80189BF8); + +void func_80189C5C(void) { +} + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80189C64); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80189CB0); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80189CF0); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80189D4C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80189F00); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018A250); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018A3C8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018A470); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018A4B8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018A594); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018A5B8); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018A61C); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018A698); + +void func_8018A6B8(void) { +} + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018A6C0); + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018A788); + + + + diff --git a/src/ov_SC03_125/ov_SC03_125_jr_8017A4AC.c b/src/ov_SC03_125/ov_SC03_125_jr_8017A4AC.c index dec95b031..8eb30938a 100644 --- a/src/ov_SC03_125/ov_SC03_125_jr_8017A4AC.c +++ b/src/ov_SC03_125/ov_SC03_125_jr_8017A4AC.c @@ -2946,654 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801C40C4; - extern s16 D_801C40C6; - extern s16 D_801C40C8; - extern s16 D_801C40BC; - extern s16 D_801C40BE; - extern s16 D_801C40C0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C40C4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C40C6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C40C8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C40BC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C40BE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C40C0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801C404C; -extern u16 D_801C40CC; -extern u16 D_801C40CE; -extern u16 D_801C40D0; -extern s16 D_801C44C8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801C44C8 = 0; - D_801C404C = 0; - D_801C40CC = D_80126B5E; - D_801C40CE = D_80126B62; - D_801C40D0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_801876C0[]; - extern s16 D_801C40C4; - extern s16 D_801C40BC; - 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_801876C0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801876C0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C40C4; - s16 *p78C = &D_801C40BC; - *(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_801C44C8 = 1; - D_801C404C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C406C; - extern SV4_8017B368 D_801C4074; - extern s16 D_801C40C4; - extern s16 D_801C40BC; - extern u16 D_801876C0; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801C406C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801C4074; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_801876C0)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_801876C0)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801C40C4) = loc0; - (*(SV4_8017B368 *)&D_801C40BC) = loc1; - D_801C44C8 = 1; - D_801C404C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_801876C0[]; - extern s16 D_801C40C4; - extern s16 D_801C40C6; - extern s16 D_801C40C8; - extern s16 D_801C40BC; - extern s16 D_801C40BE; - extern s16 D_801C40C0; - 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_801876C0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801876C0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C40C4; - s16 *p78C = &D_801C40BC; - *(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_801C40C6; - v798 = D_801C40C8; - v78C = *p78C; - v78E = D_801C40BE; - v790 = D_801C40C0; - __asm__ __volatile__(""); - D_801C44C8 = 1; - D_801C404C = 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_801C404C; -extern s16 D_801C40C4; -extern s16 D_801C40C6; -extern s16 D_801C40C8; -extern s16 D_801C40BC; -extern s16 D_801C40BE; -extern s16 D_801C40C0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801C404C = 0; - D_801C40C4 = (s16) D_80114F30; - D_801C40C6 = (s16) D_80114F34; - D_801C40C8 = (s16) D_80114F38; - D_801C40BC = (s16) D_80114F24; - D_801C40BE = (s16) D_80114F28; - D_801C40C0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801C40DC; -extern s16 D_801C40DE; -extern s16 D_801C40E0; -extern s16 D_801C40E4; -extern s16 D_801C40E6; -extern s16 D_801C40E8; - -void func_8017B824(void) { - D_801C40DC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801C40DE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801C40E0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801C40E4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801C40E6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801C40E8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801C40DC; -extern s16 D_801C40DE; -extern s16 D_801C40E0; -extern s16 D_801C40E4; -extern s16 D_801C40E6; -extern s16 D_801C40E8; - -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_801C40DC; - D_80114F34 = D_801C40DE; - D_80114F38 = D_801C40E0; - D_80114F24 = D_801C40E4; - D_80114F28 = D_801C40E6; - D_80114F2C = D_801C40E8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801C40C4), src[8..15] -> (*(S8_8017B8E8 *)&D_801C40BC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801C40C4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801C40BC) = ((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_801C40CC; -extern u16 D_801C40CE; -extern u16 D_801C40D0; - -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_801C404C; -extern short D_801C40D4; -extern short D_801C40D6; -extern short D_801C40D8; -extern s16 D_801C40C4; -extern s16 D_801C40C6; -extern s16 D_801C40C8; -extern s16 D_801C40BC; -extern s16 D_801C40BE; -extern s16 D_801C40C0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C40CC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C40CE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C40D0); - (*(s16 *)&D_801C40D4) = buf[0]; - (*(s16 *)&D_801C40D6) = buf[1]; - (*(s16 *)&D_801C40D8) = buf[2]; - D_801C40C4 = D_80114F30 + buf[0]; - D_801C404C = 0; - D_801C40C6 = D_80114F34 + buf[1]; - D_801C40C8 = D_80114F38 + buf[2]; - D_801C40BC = D_80114F24 + buf[0]; - D_801C40BE = D_80114F28 + buf[1]; - D_801C40C0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801C406C; -extern SV4 D_801C4074; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C4074) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801C406C = 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_801C4074 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C4074)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801C406C) = 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_801C4074) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801C4094[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801C4094; - 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_801C404C; -extern s16 D_801C44C8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801C404C = D_801C404C + 1; - if (D_801C404C >= 0x1F) { - D_801C44C8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801C404C; -extern s16 D_801C44C8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801C404C = D_801C404C + 1; - if (0x18 < D_801C404C) { - func_8012A4BC(); - D_801C44C8 = 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_801C404C; -extern void (*D_801C4090)(void); -extern short D_801C40D4; -extern short D_801C40D6; -extern short D_801C40D8; -extern s16 D_801C44C8; - -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_801C404C = D_801C404C + 1; - if (D_801C404C >= 0x19) { - if (D_801C4090 != 0) { - (*D_801C4090)(); - } else { - D_80114F30 = D_80114F30 + D_801C40D4; - D_80114F34 = D_80114F34 + D_801C40D6; - D_80114F38 = D_80114F38 + D_801C40D8; - D_80114F24 = D_80114F24 + D_801C40D4; - D_80114F28 = D_80114F28 + D_801C40D6; - D_80114F2C = D_80114F2C + D_801C40D8; - func_8012A4BC(); - } - D_801C44C8 = 0; - } -} - - - -extern void (*D_80187760[])(void); - -void func_8017BE60(void *a0) { - D_80187760[*(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) */ - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017BF88); - - -extern void (*D_80187778[])(void); - -void func_8017C0E4(void *a0) { - D_80187778[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017C120); - - -extern void (*D_80187814[])(void); - -void func_8017C180(void *a0) { - D_80187814[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_8018781C[])(void); - -void func_8017C1BC(void *a0) { - D_8018781C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80187824[])(void); - -void func_8017C1F8(void *a0) { - D_80187824[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017C234); - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017C378); - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017C3E4); - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017C490); - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017C4D0); - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017C594); - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017C61C); - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017C7B8); - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017C9BC); - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017CDB0); - - -extern void (*D_80187B00[])(void); - -void func_8017CF30(void *a0) { - D_80187B00[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017CF6C); - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017CFE0); - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017D0BC); - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017D2D0); - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017D3A4); - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017D474); - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017D4CC); - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017A4AC", func_8017D5C4); diff --git a/src/ov_SC03_125/ov_SC03_125_jr_8017AE2C.c b/src/ov_SC03_125/ov_SC03_125_jr_8017AE2C.c new file mode 100644 index 000000000..6dbaf2177 --- /dev/null +++ b/src/ov_SC03_125/ov_SC03_125_jr_8017AE2C.c @@ -0,0 +1,3531 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801862B8; +extern u8 D_80186228; +extern u8 D_80186204; +extern u8 D_801861E0; +extern u8 D_80186294; +extern u8 D_80186270; +extern u8 D_8018624C; +extern u8 D_801861BC; +extern void func_80145934(void); +extern u8 D_80186348; +extern u8 D_80186324; +extern u8 D_80186300; +extern u8 D_801862DC; +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_80185740[]; +extern unsigned char D_80185770[]; +extern unsigned char D_801857C0[]; +extern unsigned char D_801857F0[]; +extern unsigned char D_80185820[]; +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(void); +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_80185870[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80185938[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801859C0[]; +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_801859C8; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801C2F48; +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_801C2F4C; +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_801859F8; +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 void 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_80185AA0[])(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_80185AC4[])(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_80185AB4; +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_80185AD8[])(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_80185AE4[]; +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_80185AF4[])(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_80185B0C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80185AFC; +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_80185B20[])(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_80185B3C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80185B2C; +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_80185B50[])(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_80185B64[])(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_80185B78; +extern void (*D_80185BA0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80185B80; +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_80185BEC[])(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_80185BF0[])(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(void *a0); +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_80186054[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80186064[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801C2F80; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018608C[])(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_8018606C; +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_8018607C; +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_801860CC[])(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_801860D4[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801860A0; +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_801860E0[])(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_801860B0; +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_801C2F88; +extern s32 D_801C2F94; +extern s32 D_801C2F98; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018611C[])(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_801860F0[]; +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_801C2F90; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018636C[])(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_8018618C[]; +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_80186410[])(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_80186564[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80186380; +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_8018656C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80186390; +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_801863B0; +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_80186574[])(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(void); +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_8018659C[])(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_801865A8[])(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_8018641C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018664C; +extern void func_8015D380(s32 a0); +extern unsigned char D_80185730[]; +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_80186660[]; +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_8018669C[]; +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_801866E4; +extern u16 D_801866E6; +extern u16 D_801866E8; +extern s32 D_801866EC; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_801866F4; +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_80186400; +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_80186778[]; +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_80186828[])(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_80186858[]; +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_801868BC; +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_801C2FA0[]; +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_801868E0[])(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_801C2FF8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80186928[])(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_80186918; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801C282C[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_80186930[])(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_80186984[])(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_8018694C; +extern s16 D_80186980; +extern s16 D_8018697E; +extern s16 D_8018697C; +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_80186990[])(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_801C3058; +extern u8 D_801C3059; +extern u8 D_801C305A; +extern u8 D_801C305B; +extern u8 D_801C305C; +extern u8 D_801C305D; +extern u8 D_801C305E; +extern u8 D_801C305F; +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_801869A0[])(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_801C3098; +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_801869E4[])(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_80186A60[]; +extern s32 D_80186A80[]; +extern u8 D_80186AFC[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80186B1C[]; +extern u8 D_80186B3C[]; +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_80186BD8[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80186C54[])(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_801C283C; +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_80186C60[])(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_80186C68[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80186D30[])(void); +extern void func_80166618(void *a0); +extern void (*D_80186D40[])(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_80186D50[])(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_80186D5C[])(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_80186CBC[]; +extern u8 D_80186CD0[]; +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_80186D74[])(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_80186D7C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80186D84[])(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_80186D8C[])(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_80186D94[])(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_80186D9C[])(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_80186DA4[])(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_80186E58[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80186E60[])(void); +extern void func_80169F00(void *a0); +extern char D_80186E10[]; +extern char D_80186DD0[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80186E98[])(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_80186EA4[])(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_80186EEC[])(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_80186F68[])(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_801C33B8; +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_80186F5C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80186FA0[]; +extern unsigned short D_80186FA8[]; +extern unsigned short D_80186FB0[]; +extern unsigned char D_801C33C0[]; +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_801C33B8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80186FB8[])(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_801C34F4; +extern M2C_UNK D_801C34F8; +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_801C3480; +extern void (*D_80186FE8[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801C34FC[]; +extern u8 D_801C3504[]; +extern u8 D_801C34B4[]; +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_80186FF0[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018700C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80187014[])(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_8018707C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80187020; +extern u8 D_8018702C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801870B0[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801870B8[])(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_8018710C[])(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_80187140[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80187130[]; +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_8018715C; +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); +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_801871D4[])(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_801871DC[])(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_801871E4[])(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_801871EC[])(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_801871F4[])(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_801871FC[])(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_80187208[])(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_80187214[])(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_80187220[])(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_80187230[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80187240[])(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_80187248[])(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_80187250[])(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_80187258[])(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_80187260[])(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_80187268[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80187270[])(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_80187278[])(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_80187280[])(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_80187288[])(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_80187290[])(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_80187298[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801872A0[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801872A8[])(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_801872B0[])(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_801872B8[])(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_801872C0[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801872C8[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801872D0[])(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_801872D8[])(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_801872E0[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801872E8[])(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_801872F0[])(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_80187334[])(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_801872F8; +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_80187364[])(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_801873A0[])(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(s32); +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_801873F8[])(); +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_80187408[])(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_80187410[])(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_80187578[])(); +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_80187584[])(); +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_801C2A84; +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 int func_801789AC(void); +extern s16 D_801C44C8; +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_801C3C38; +extern short D_801C453C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801C4064; +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_801C408C; +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_801C4048; +extern s32 func_8017A3B0(void); +extern short D_801C4084; +extern short D_801C4080; +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_801C4480; +extern s16 D_801C4482; +extern s16 D_801C448C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801C4480; + + 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_801C448C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801C4480+0xC == &D_801C448C; 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_801C4480 + 0xC)) < 0x101) { + D_801C4480 = 0; + D_801C4482 = 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_801C448C); + 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_801C4480 + 0xC)) < 0x101) { + D_801C4480 = 0; + D_801C4482 = 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_801C40C4; + extern s16 D_801C40C6; + extern s16 D_801C40C8; + extern s16 D_801C40BC; + extern s16 D_801C40BE; + extern s16 D_801C40C0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C40C4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C40C6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C40C8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C40BC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C40BE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C40C0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801C404C; +extern u16 D_801C40CC; +extern u16 D_801C40CE; +extern u16 D_801C40D0; +extern s16 D_801C44C8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801C44C8 = 0; + D_801C404C = 0; + D_801C40CC = D_80126B5E; + D_801C40CE = D_80126B62; + D_801C40D0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_801876C0[]; + extern s16 D_801C40C4; + extern s16 D_801C40BC; + 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_801876C0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801876C0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C40C4; + s16 *p78C = &D_801C40BC; + *(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_801C44C8 = 1; + D_801C404C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C406C; + extern SV4_8017B368 D_801C4074; + extern s16 D_801C40C4; + extern s16 D_801C40BC; + extern u16 D_801876C0; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801C406C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801C4074; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_801876C0)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_801876C0)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801C40C4) = loc0; + (*(SV4_8017B368 *)&D_801C40BC) = loc1; + D_801C44C8 = 1; + D_801C404C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_801876C0[]; + extern s16 D_801C40C4; + extern s16 D_801C40C6; + extern s16 D_801C40C8; + extern s16 D_801C40BC; + extern s16 D_801C40BE; + extern s16 D_801C40C0; + 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_801876C0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801876C0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C40C4; + s16 *p78C = &D_801C40BC; + *(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_801C40C6; + v798 = D_801C40C8; + v78C = *p78C; + v78E = D_801C40BE; + v790 = D_801C40C0; + __asm__ __volatile__(""); + D_801C44C8 = 1; + D_801C404C = 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_801C404C; +extern s16 D_801C40C4; +extern s16 D_801C40C6; +extern s16 D_801C40C8; +extern s16 D_801C40BC; +extern s16 D_801C40BE; +extern s16 D_801C40C0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801C404C = 0; + D_801C40C4 = (s16) D_80114F30; + D_801C40C6 = (s16) D_80114F34; + D_801C40C8 = (s16) D_80114F38; + D_801C40BC = (s16) D_80114F24; + D_801C40BE = (s16) D_80114F28; + D_801C40C0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801C40DC; +extern s16 D_801C40DE; +extern s16 D_801C40E0; +extern s16 D_801C40E4; +extern s16 D_801C40E6; +extern s16 D_801C40E8; + +void func_8017B824(void) { + D_801C40DC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801C40DE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801C40E0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801C40E4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801C40E6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801C40E8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801C40DC; +extern s16 D_801C40DE; +extern s16 D_801C40E0; +extern s16 D_801C40E4; +extern s16 D_801C40E6; +extern s16 D_801C40E8; + +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_801C40DC; + D_80114F34 = D_801C40DE; + D_80114F38 = D_801C40E0; + D_80114F24 = D_801C40E4; + D_80114F28 = D_801C40E6; + D_80114F2C = D_801C40E8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801C40C4), src[8..15] -> (*(S8_8017B8E8 *)&D_801C40BC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801C40C4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801C40BC) = ((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_801C40CC; +extern u16 D_801C40CE; +extern u16 D_801C40D0; + +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_801C404C; +extern short D_801C40D4; +extern short D_801C40D6; +extern short D_801C40D8; +extern s16 D_801C40C4; +extern s16 D_801C40C6; +extern s16 D_801C40C8; +extern s16 D_801C40BC; +extern s16 D_801C40BE; +extern s16 D_801C40C0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C40CC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C40CE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C40D0); + (*(s16 *)&D_801C40D4) = buf[0]; + (*(s16 *)&D_801C40D6) = buf[1]; + (*(s16 *)&D_801C40D8) = buf[2]; + D_801C40C4 = D_80114F30 + buf[0]; + D_801C404C = 0; + D_801C40C6 = D_80114F34 + buf[1]; + D_801C40C8 = D_80114F38 + buf[2]; + D_801C40BC = D_80114F24 + buf[0]; + D_801C40BE = D_80114F28 + buf[1]; + D_801C40C0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801C406C; +extern SV4 D_801C4074; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C4074) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801C406C = 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_801C4074 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C4074)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801C406C) = 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_801C4074) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801C4094[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801C4094; + 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_801C404C; +extern s16 D_801C44C8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801C404C = D_801C404C + 1; + if (D_801C404C >= 0x1F) { + D_801C44C8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801C404C; +extern s16 D_801C44C8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801C404C = D_801C404C + 1; + if (0x18 < D_801C404C) { + func_8012A4BC(); + D_801C44C8 = 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_801C404C; +extern void (*D_801C4090)(void); +extern short D_801C40D4; +extern short D_801C40D6; +extern short D_801C40D8; +extern s16 D_801C44C8; + +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_801C404C = D_801C404C + 1; + if (D_801C404C >= 0x19) { + if (D_801C4090 != 0) { + (*D_801C4090)(); + } else { + D_80114F30 = D_80114F30 + D_801C40D4; + D_80114F34 = D_80114F34 + D_801C40D6; + D_80114F38 = D_80114F38 + D_801C40D8; + D_80114F24 = D_80114F24 + D_801C40D4; + D_80114F28 = D_80114F28 + D_801C40D6; + D_80114F2C = D_80114F2C + D_801C40D8; + func_8012A4BC(); + } + D_801C44C8 = 0; + } +} + + + +extern void (*D_80187760[])(void); + +void func_8017BE60(void *a0) { + D_80187760[*(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) */ + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017BF88); + + +extern void (*D_80187778[])(void); + +void func_8017C0E4(void *a0) { + D_80187778[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017C120); + + +extern void (*D_80187814[])(void); + +void func_8017C180(void *a0) { + D_80187814[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_8018781C[])(void); + +void func_8017C1BC(void *a0) { + D_8018781C[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80187824[])(void); + +void func_8017C1F8(void *a0) { + D_80187824[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017C234); + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017C378); + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017C3E4); + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017C490); + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017C4D0); + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017C594); + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017C61C); + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017C7B8); + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017C9BC); + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017CDB0); + + +extern void (*D_80187B00[])(void); + +void func_8017CF30(void *a0) { + D_80187B00[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017CF6C); + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017CFE0); + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017D0BC); + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017D2D0); + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017D3A4); + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017D474); + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017D4CC); + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017AE2C", func_8017D5C4); + diff --git a/src/ov_SC03_126/ov_SC03_126_jr_8017A4AC.c b/src/ov_SC03_126/ov_SC03_126_jr_8017A4AC.c index d99941bbb..cf28c8b64 100644 --- a/src/ov_SC03_126/ov_SC03_126_jr_8017A4AC.c +++ b/src/ov_SC03_126/ov_SC03_126_jr_8017A4AC.c @@ -2946,654 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8018F98C; - extern s16 D_8018F98E; - extern s16 D_8018F990; - extern s16 D_8018F984; - extern s16 D_8018F986; - extern s16 D_8018F988; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8018F98C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8018F98E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8018F990, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8018F984, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8018F986, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8018F988, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8018F914; -extern u16 D_8018F994; -extern u16 D_8018F996; -extern u16 D_8018F998; -extern s16 D_8018FAB0; - -void func_8017B1D8(void) { - func_8012A418(); - D_8018FAB0 = 0; - D_8018F914 = 0; - D_8018F994 = D_80126B5E; - D_8018F996 = D_80126B62; - D_8018F998 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80182BB8[]; - extern s16 D_8018F98C; - extern s16 D_8018F984; - 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_80182BB8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182BB8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8018F98C; - s16 *p78C = &D_8018F984; - *(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_8018FAB0 = 1; - D_8018F914 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8018F934; - extern SV4_8017B368 D_8018F93C; - extern s16 D_8018F98C; - extern s16 D_8018F984; - extern u16 D_80182BB8; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8018F934; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8018F93C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80182BB8)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80182BB8)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8018F98C) = loc0; - (*(SV4_8017B368 *)&D_8018F984) = loc1; - D_8018FAB0 = 1; - D_8018F914 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80182BB8[]; - extern s16 D_8018F98C; - extern s16 D_8018F98E; - extern s16 D_8018F990; - extern s16 D_8018F984; - extern s16 D_8018F986; - extern s16 D_8018F988; - 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_80182BB8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182BB8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8018F98C; - s16 *p78C = &D_8018F984; - *(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_8018F98E; - v798 = D_8018F990; - v78C = *p78C; - v78E = D_8018F986; - v790 = D_8018F988; - __asm__ __volatile__(""); - D_8018FAB0 = 1; - D_8018F914 = 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_8018F914; -extern s16 D_8018F98C; -extern s16 D_8018F98E; -extern s16 D_8018F990; -extern s16 D_8018F984; -extern s16 D_8018F986; -extern s16 D_8018F988; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8018F914 = 0; - D_8018F98C = (s16) D_80114F30; - D_8018F98E = (s16) D_80114F34; - D_8018F990 = (s16) D_80114F38; - D_8018F984 = (s16) D_80114F24; - D_8018F986 = (s16) D_80114F28; - D_8018F988 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8018F9A4; -extern s16 D_8018F9A6; -extern s16 D_8018F9A8; -extern s16 D_8018F9AC; -extern s16 D_8018F9AE; -extern s16 D_8018F9B0; - -void func_8017B824(void) { - D_8018F9A4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8018F9A6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8018F9A8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8018F9AC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8018F9AE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8018F9B0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8018F9A4; -extern s16 D_8018F9A6; -extern s16 D_8018F9A8; -extern s16 D_8018F9AC; -extern s16 D_8018F9AE; -extern s16 D_8018F9B0; - -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_8018F9A4; - D_80114F34 = D_8018F9A6; - D_80114F38 = D_8018F9A8; - D_80114F24 = D_8018F9AC; - D_80114F28 = D_8018F9AE; - D_80114F2C = D_8018F9B0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8018F98C), src[8..15] -> (*(S8_8017B8E8 *)&D_8018F984) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8018F98C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8018F984) = ((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_8018F994; -extern u16 D_8018F996; -extern u16 D_8018F998; - -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_8018F914; -extern short D_8018F99C; -extern short D_8018F99E; -extern short D_8018F9A0; -extern s16 D_8018F98C; -extern s16 D_8018F98E; -extern s16 D_8018F990; -extern s16 D_8018F984; -extern s16 D_8018F986; -extern s16 D_8018F988; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8018F994); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8018F996); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8018F998); - (*(s16 *)&D_8018F99C) = buf[0]; - (*(s16 *)&D_8018F99E) = buf[1]; - (*(s16 *)&D_8018F9A0) = buf[2]; - D_8018F98C = D_80114F30 + buf[0]; - D_8018F914 = 0; - D_8018F98E = D_80114F34 + buf[1]; - D_8018F990 = D_80114F38 + buf[2]; - D_8018F984 = D_80114F24 + buf[0]; - D_8018F986 = D_80114F28 + buf[1]; - D_8018F988 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8018F934; -extern SV4 D_8018F93C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8018F93C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8018F934 = 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_8018F93C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8018F93C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8018F934) = 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_8018F93C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8018F95C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8018F95C; - 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_8018F914; -extern s16 D_8018FAB0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8018F914 = D_8018F914 + 1; - if (D_8018F914 >= 0x1F) { - D_8018FAB0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8018F914; -extern s16 D_8018FAB0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8018F914 = D_8018F914 + 1; - if (0x18 < D_8018F914) { - func_8012A4BC(); - D_8018FAB0 = 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_8018F914; -extern void (*D_8018F958)(void); -extern short D_8018F99C; -extern short D_8018F99E; -extern short D_8018F9A0; -extern s16 D_8018FAB0; - -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_8018F914 = D_8018F914 + 1; - if (D_8018F914 >= 0x19) { - if (D_8018F958 != 0) { - (*D_8018F958)(); - } else { - D_80114F30 = D_80114F30 + D_8018F99C; - D_80114F34 = D_80114F34 + D_8018F99E; - D_80114F38 = D_80114F38 + D_8018F9A0; - D_80114F24 = D_80114F24 + D_8018F99C; - D_80114F28 = D_80114F28 + D_8018F99E; - D_80114F2C = D_80114F2C + D_8018F9A0; - func_8012A4BC(); - } - D_8018FAB0 = 0; - } -} - - - -extern void (*D_80182C58[])(void); - -void func_8017BE60(void *a0) { - D_80182C58[*(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 (*D_80182C70[])(void); - -void func_8017BEBC(void *a0) { - D_80182C70[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_8017A4AC", func_8017BEF8); - -INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_8017A4AC", func_8017BFA4); - -INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_8017A4AC", func_8017C014); - -extern void ReadRotMatrix(void *a0); -extern void PushMatrix(void); -extern void func_8004974C(void *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void PopMatrix(void); -void func_8017C3EC(u16 *a0, void *a1) { - s32 mat[8]; - s32 buf[8]; - s16 sv[4]; - ReadRotMatrix((void *)mat); - PushMatrix(); - sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); - sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); - sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); - func_8004974C((void *)mat, (void *)buf); - ApplyMatrixSV((void *)buf, (void *)sv, a1); - PopMatrix(); -} - - -int func_8017C490(short *param_1, short *param_2, short *param_3, int param_4) { - register int i2o __asm__("$5"); - register int i4o __asm__("$9"); - short sVar1; int rx, rz, uVar5; - i4o = param_2[1]; - __asm__ __volatile__("" : : "r"(i4o)); - i2o = param_1[1]; uVar5 = 0; - if (i2o >= i4o) { - rx = param_1[0] - i2o * (param_2[0] - param_1[0]); - rz = param_1[2] - i2o * (param_2[2] - param_1[2]); - } else { - register int den __asm__("$3"); - int p2x = param_2[0], p2z = param_2[2]; - den = i2o - i4o; - rx = p2x + i4o * (p2x - param_1[0]) / den; - rz = p2z + i4o * (p2z - param_1[2]) / den; - } - if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } - else i2o = -0x7fff; - *param_3 = (short)i2o; - if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } - else i2o = -0x7fff; - param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; - if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } - if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } - if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } - if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } - return uVar5; -} - - -extern void ReadGeomOffset(s32 *a0, s32 *a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8004921C(s32 a0, s32 a1); -void func_8017C688(s32 a0, s32 a1) { - s32 ofx; - s32 ofy; - s32 sxy; - s32 p; - ReadGeomOffset(&ofx, &ofy); - func_8004921C(0, 0); - RotTransPers(a0, a1, &sxy, &p); - func_8004921C(ofx, ofy); -} - - -INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_8017A4AC", func_8017C6F4); diff --git a/src/ov_SC03_126/ov_SC03_126_jr_8017AE2C.c b/src/ov_SC03_126/ov_SC03_126_jr_8017AE2C.c new file mode 100644 index 000000000..fddbcae2c --- /dev/null +++ b/src/ov_SC03_126/ov_SC03_126_jr_8017AE2C.c @@ -0,0 +1,3531 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801817B0; +extern u8 D_80181720; +extern u8 D_801816FC; +extern u8 D_801816D8; +extern u8 D_8018178C; +extern u8 D_80181768; +extern u8 D_80181744; +extern u8 D_801816B4; +extern void func_80145934(void); +extern u8 D_80181840; +extern u8 D_8018181C; +extern u8 D_801817F8; +extern u8 D_801817D4; +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_80180C38[]; +extern unsigned char D_80180C68[]; +extern unsigned char D_80180CB8[]; +extern unsigned char D_80180CE8[]; +extern unsigned char D_80180D18[]; +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(void); +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_80180D68[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80180E30[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80180EB8[]; +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_80180EC0; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8018E810; +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_8018E814; +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_80180EF0; +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 void 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_80180F98[])(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_80180FBC[])(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_80180FAC; +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_80180FD0[])(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_80180FDC[]; +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_80180FEC[])(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_80181004[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180FF4; +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_80181018[])(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_80181034[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181024; +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_80181048[])(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_8018105C[])(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_80181070; +extern void (*D_80181098[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80181078; +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_801810E4[])(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_801810E8[])(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(void *a0); +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_8018154C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018155C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8018E848; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80181584[])(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_80181564; +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_80181574; +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_801815C4[])(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_801815CC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80181598; +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_801815D8[])(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_801815A8; +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_8018E850; +extern s32 D_8018E85C; +extern s32 D_8018E860; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80181614[])(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_801815E8[]; +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_8018E858; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80181864[])(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_80181684[]; +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_80181908[])(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_80181A5C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80181878; +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_80181A64[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80181888; +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_801818A8; +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_80181A6C[])(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(void); +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_80181A94[])(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_80181AA0[])(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_80181914[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80181B44; +extern void func_8015D380(s32 a0); +extern unsigned char D_80180C28[]; +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_80181B58[]; +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_80181B94[]; +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_80181BDC; +extern u16 D_80181BDE; +extern u16 D_80181BE0; +extern s32 D_80181BE4; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80181BEC; +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_801818F8; +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_80181C70[]; +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_80181D20[])(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_80181D50[]; +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_80181DB4; +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_8018E868[]; +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_80181DD8[])(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_8018E8C0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80181E20[])(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_80181E10; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8018E118[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_80181E28[])(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_80181E7C[])(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_80181E44; +extern s16 D_80181E78; +extern s16 D_80181E76; +extern s16 D_80181E74; +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_80181E88[])(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_8018E920; +extern u8 D_8018E921; +extern u8 D_8018E922; +extern u8 D_8018E923; +extern u8 D_8018E924; +extern u8 D_8018E925; +extern u8 D_8018E926; +extern u8 D_8018E927; +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_80181E98[])(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_8018E960; +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_80181EDC[])(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_80181F58[]; +extern s32 D_80181F78[]; +extern u8 D_80181FF4[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80182014[]; +extern u8 D_80182034[]; +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_801820D0[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018214C[])(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_8018E128; +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_80182158[])(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_80182160[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80182228[])(void); +extern void func_80166618(void *a0); +extern void (*D_80182238[])(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_80182248[])(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_80182254[])(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_801821B4[]; +extern u8 D_801821C8[]; +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_8018226C[])(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_80182274[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018227C[])(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_80182284[])(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_8018228C[])(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_80182294[])(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_8018229C[])(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_80182350[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80182358[])(void); +extern void func_80169F00(void *a0); +extern char D_80182308[]; +extern char D_801822C8[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80182390[])(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_8018239C[])(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_801823E4[])(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_80182460[])(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_8018EC80; +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_80182454[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80182498[]; +extern unsigned short D_801824A0[]; +extern unsigned short D_801824A8[]; +extern unsigned char D_8018EC88[]; +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_8018EC80; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801824B0[])(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_8018EDBC; +extern M2C_UNK D_8018EDC0; +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_8018ED48; +extern void (*D_801824E0[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018EDC4[]; +extern u8 D_8018EDCC[]; +extern u8 D_8018ED7C[]; +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_801824E8[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80182504[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018250C[])(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_80182574[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80182518; +extern u8 D_80182524; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801825A8[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801825B0[])(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_80182604[])(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_80182638[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80182628[]; +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_80182654; +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); +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_801826CC[])(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_801826D4[])(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_801826DC[])(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_801826E4[])(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_801826EC[])(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_801826F4[])(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_80182700[])(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_8018270C[])(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_80182718[])(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_80182728[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80182738[])(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_80182740[])(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_80182748[])(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_80182750[])(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_80182758[])(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_80182760[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80182768[])(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_80182770[])(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_80182778[])(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_80182780[])(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_80182788[])(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_80182790[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80182798[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801827A0[])(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_801827A8[])(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_801827B0[])(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_801827B8[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801827C0[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801827C8[])(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_801827D0[])(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_801827D8[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801827E0[])(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_801827E8[])(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_8018282C[])(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_801827F0; +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_8018285C[])(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_80182898[])(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(s32); +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_801828F0[])(); +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_80182900[])(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_80182908[])(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_80182A70[])(); +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_80182A7C[])(); +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_8018E370; +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 int func_801789AC(void); +extern s16 D_8018FAB0; +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_8018F500; +extern short D_8018FB24; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8018F92C; +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_8018F954; +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_8018F910; +extern s32 func_8017A3B0(void); +extern short D_8018F94C; +extern short D_8018F948; +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_8018FA80; +extern s16 D_8018FA82; +extern s16 D_8018FA8C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_8018FA80; + + 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_8018FA8C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_8018FA80+0xC == &D_8018FA8C; 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_8018FA80 + 0xC)) < 0x101) { + D_8018FA80 = 0; + D_8018FA82 = 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_8018FA8C); + 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_8018FA80 + 0xC)) < 0x101) { + D_8018FA80 = 0; + D_8018FA82 = 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_8018F98C; + extern s16 D_8018F98E; + extern s16 D_8018F990; + extern s16 D_8018F984; + extern s16 D_8018F986; + extern s16 D_8018F988; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8018F98C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8018F98E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8018F990, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8018F984, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8018F986, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8018F988, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8018F914; +extern u16 D_8018F994; +extern u16 D_8018F996; +extern u16 D_8018F998; +extern s16 D_8018FAB0; + +void func_8017B1D8(void) { + func_8012A418(); + D_8018FAB0 = 0; + D_8018F914 = 0; + D_8018F994 = D_80126B5E; + D_8018F996 = D_80126B62; + D_8018F998 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80182BB8[]; + extern s16 D_8018F98C; + extern s16 D_8018F984; + 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_80182BB8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182BB8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8018F98C; + s16 *p78C = &D_8018F984; + *(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_8018FAB0 = 1; + D_8018F914 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8018F934; + extern SV4_8017B368 D_8018F93C; + extern s16 D_8018F98C; + extern s16 D_8018F984; + extern u16 D_80182BB8; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8018F934; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8018F93C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80182BB8)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80182BB8)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8018F98C) = loc0; + (*(SV4_8017B368 *)&D_8018F984) = loc1; + D_8018FAB0 = 1; + D_8018F914 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80182BB8[]; + extern s16 D_8018F98C; + extern s16 D_8018F98E; + extern s16 D_8018F990; + extern s16 D_8018F984; + extern s16 D_8018F986; + extern s16 D_8018F988; + 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_80182BB8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182BB8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8018F98C; + s16 *p78C = &D_8018F984; + *(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_8018F98E; + v798 = D_8018F990; + v78C = *p78C; + v78E = D_8018F986; + v790 = D_8018F988; + __asm__ __volatile__(""); + D_8018FAB0 = 1; + D_8018F914 = 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_8018F914; +extern s16 D_8018F98C; +extern s16 D_8018F98E; +extern s16 D_8018F990; +extern s16 D_8018F984; +extern s16 D_8018F986; +extern s16 D_8018F988; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8018F914 = 0; + D_8018F98C = (s16) D_80114F30; + D_8018F98E = (s16) D_80114F34; + D_8018F990 = (s16) D_80114F38; + D_8018F984 = (s16) D_80114F24; + D_8018F986 = (s16) D_80114F28; + D_8018F988 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8018F9A4; +extern s16 D_8018F9A6; +extern s16 D_8018F9A8; +extern s16 D_8018F9AC; +extern s16 D_8018F9AE; +extern s16 D_8018F9B0; + +void func_8017B824(void) { + D_8018F9A4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8018F9A6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8018F9A8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8018F9AC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8018F9AE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8018F9B0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8018F9A4; +extern s16 D_8018F9A6; +extern s16 D_8018F9A8; +extern s16 D_8018F9AC; +extern s16 D_8018F9AE; +extern s16 D_8018F9B0; + +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_8018F9A4; + D_80114F34 = D_8018F9A6; + D_80114F38 = D_8018F9A8; + D_80114F24 = D_8018F9AC; + D_80114F28 = D_8018F9AE; + D_80114F2C = D_8018F9B0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8018F98C), src[8..15] -> (*(S8_8017B8E8 *)&D_8018F984) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8018F98C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8018F984) = ((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_8018F994; +extern u16 D_8018F996; +extern u16 D_8018F998; + +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_8018F914; +extern short D_8018F99C; +extern short D_8018F99E; +extern short D_8018F9A0; +extern s16 D_8018F98C; +extern s16 D_8018F98E; +extern s16 D_8018F990; +extern s16 D_8018F984; +extern s16 D_8018F986; +extern s16 D_8018F988; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8018F994); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8018F996); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8018F998); + (*(s16 *)&D_8018F99C) = buf[0]; + (*(s16 *)&D_8018F99E) = buf[1]; + (*(s16 *)&D_8018F9A0) = buf[2]; + D_8018F98C = D_80114F30 + buf[0]; + D_8018F914 = 0; + D_8018F98E = D_80114F34 + buf[1]; + D_8018F990 = D_80114F38 + buf[2]; + D_8018F984 = D_80114F24 + buf[0]; + D_8018F986 = D_80114F28 + buf[1]; + D_8018F988 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8018F934; +extern SV4 D_8018F93C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8018F93C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8018F934 = 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_8018F93C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8018F93C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8018F934) = 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_8018F93C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8018F95C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8018F95C; + 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_8018F914; +extern s16 D_8018FAB0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8018F914 = D_8018F914 + 1; + if (D_8018F914 >= 0x1F) { + D_8018FAB0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8018F914; +extern s16 D_8018FAB0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8018F914 = D_8018F914 + 1; + if (0x18 < D_8018F914) { + func_8012A4BC(); + D_8018FAB0 = 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_8018F914; +extern void (*D_8018F958)(void); +extern short D_8018F99C; +extern short D_8018F99E; +extern short D_8018F9A0; +extern s16 D_8018FAB0; + +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_8018F914 = D_8018F914 + 1; + if (D_8018F914 >= 0x19) { + if (D_8018F958 != 0) { + (*D_8018F958)(); + } else { + D_80114F30 = D_80114F30 + D_8018F99C; + D_80114F34 = D_80114F34 + D_8018F99E; + D_80114F38 = D_80114F38 + D_8018F9A0; + D_80114F24 = D_80114F24 + D_8018F99C; + D_80114F28 = D_80114F28 + D_8018F99E; + D_80114F2C = D_80114F2C + D_8018F9A0; + func_8012A4BC(); + } + D_8018FAB0 = 0; + } +} + + + +extern void (*D_80182C58[])(void); + +void func_8017BE60(void *a0) { + D_80182C58[*(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 (*D_80182C70[])(void); + +void func_8017BEBC(void *a0) { + D_80182C70[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_8017AE2C", func_8017BEF8); + +INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_8017AE2C", func_8017BFA4); + +INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_8017AE2C", func_8017C014); + +extern void ReadRotMatrix(void *a0); +extern void PushMatrix(void); +extern void func_8004974C(void *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern void PopMatrix(void); +void func_8017C3EC(u16 *a0, void *a1) { + s32 mat[8]; + s32 buf[8]; + s16 sv[4]; + ReadRotMatrix((void *)mat); + PushMatrix(); + sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); + sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); + sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); + func_8004974C((void *)mat, (void *)buf); + ApplyMatrixSV((void *)buf, (void *)sv, a1); + PopMatrix(); +} + + +int func_8017C490(short *param_1, short *param_2, short *param_3, int param_4) { + register int i2o __asm__("$5"); + register int i4o __asm__("$9"); + short sVar1; int rx, rz, uVar5; + i4o = param_2[1]; + __asm__ __volatile__("" : : "r"(i4o)); + i2o = param_1[1]; uVar5 = 0; + if (i2o >= i4o) { + rx = param_1[0] - i2o * (param_2[0] - param_1[0]); + rz = param_1[2] - i2o * (param_2[2] - param_1[2]); + } else { + register int den __asm__("$3"); + int p2x = param_2[0], p2z = param_2[2]; + den = i2o - i4o; + rx = p2x + i4o * (p2x - param_1[0]) / den; + rz = p2z + i4o * (p2z - param_1[2]) / den; + } + if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } + else i2o = -0x7fff; + *param_3 = (short)i2o; + if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } + else i2o = -0x7fff; + param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; + if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } + if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } + if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } + if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } + return uVar5; +} + + +extern void ReadGeomOffset(s32 *a0, s32 *a1); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +extern void func_8004921C(s32 a0, s32 a1); +void func_8017C688(s32 a0, s32 a1) { + s32 ofx; + s32 ofy; + s32 sxy; + s32 p; + ReadGeomOffset(&ofx, &ofy); + func_8004921C(0, 0); + RotTransPers(a0, a1, &sxy, &p); + func_8004921C(ofx, ofy); +} + + +INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_8017AE2C", func_8017C6F4); + diff --git a/src/ov_SC04_000/ov_SC04_000_jr_8017A4AC.c b/src/ov_SC04_000/ov_SC04_000_jr_8017A4AC.c index 70fee7b4e..5eb2ef310 100644 --- a/src/ov_SC04_000/ov_SC04_000_jr_8017A4AC.c +++ b/src/ov_SC04_000/ov_SC04_000_jr_8017A4AC.c @@ -2944,572 +2944,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801A9A3C; - extern s16 D_801A9A3E; - extern s16 D_801A9A40; - extern s16 D_801A9A34; - extern s16 D_801A9A36; - extern s16 D_801A9A38; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A9A3C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A9A3E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A9A40, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A9A34, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A9A36, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A9A38, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801A99C4; -extern u16 D_801A9A44; -extern u16 D_801A9A46; -extern u16 D_801A9A48; -extern s16 D_801AAFE0; - -void func_8017B1D8(void) { - func_8012A418(); - D_801AAFE0 = 0; - D_801A99C4 = 0; - D_801A9A44 = D_80126B5E; - D_801A9A46 = D_80126B62; - D_801A9A48 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80186BC4[]; - extern s16 D_801A9A3C; - extern s16 D_801A9A34; - 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_80186BC4[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80186BC4[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A9A3C; - s16 *p78C = &D_801A9A34; - *(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_801AAFE0 = 1; - D_801A99C4 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A99E4; - extern SV4_8017B368 D_801A99EC; - extern s16 D_801A9A3C; - extern s16 D_801A9A34; - extern u16 D_80186BC4; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801A99E4; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801A99EC; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80186BC4)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80186BC4)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801A9A3C) = loc0; - (*(SV4_8017B368 *)&D_801A9A34) = loc1; - D_801AAFE0 = 1; - D_801A99C4 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80186BC4[]; - extern s16 D_801A9A3C; - extern s16 D_801A9A3E; - extern s16 D_801A9A40; - extern s16 D_801A9A34; - extern s16 D_801A9A36; - extern s16 D_801A9A38; - 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_80186BC4[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80186BC4[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A9A3C; - s16 *p78C = &D_801A9A34; - *(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_801A9A3E; - v798 = D_801A9A40; - v78C = *p78C; - v78E = D_801A9A36; - v790 = D_801A9A38; - __asm__ __volatile__(""); - D_801AAFE0 = 1; - D_801A99C4 = 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_801A99C4; -extern s16 D_801A9A3C; -extern s16 D_801A9A3E; -extern s16 D_801A9A40; -extern s16 D_801A9A34; -extern s16 D_801A9A36; -extern s16 D_801A9A38; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801A99C4 = 0; - D_801A9A3C = (s16) D_80114F30; - D_801A9A3E = (s16) D_80114F34; - D_801A9A40 = (s16) D_80114F38; - D_801A9A34 = (s16) D_80114F24; - D_801A9A36 = (s16) D_80114F28; - D_801A9A38 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801A9A54; -extern s16 D_801A9A56; -extern s16 D_801A9A58; -extern s16 D_801A9A5C; -extern s16 D_801A9A5E; -extern s16 D_801A9A60; - -void func_8017B824(void) { - D_801A9A54 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801A9A56 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801A9A58 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801A9A5C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801A9A5E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801A9A60 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801A9A54; -extern s16 D_801A9A56; -extern s16 D_801A9A58; -extern s16 D_801A9A5C; -extern s16 D_801A9A5E; -extern s16 D_801A9A60; - -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_801A9A54; - D_80114F34 = D_801A9A56; - D_80114F38 = D_801A9A58; - D_80114F24 = D_801A9A5C; - D_80114F28 = D_801A9A5E; - D_80114F2C = D_801A9A60; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801A9A3C), src[8..15] -> (*(S8_8017B8E8 *)&D_801A9A34) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801A9A3C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801A9A34) = ((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_801A9A44; -extern u16 D_801A9A46; -extern u16 D_801A9A48; - -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_801A99C4; -extern short D_801A9A4C; -extern short D_801A9A4E; -extern short D_801A9A50; -extern s16 D_801A9A3C; -extern s16 D_801A9A3E; -extern s16 D_801A9A40; -extern s16 D_801A9A34; -extern s16 D_801A9A36; -extern s16 D_801A9A38; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A9A44); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A9A46); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A9A48); - (*(s16 *)&D_801A9A4C) = buf[0]; - (*(s16 *)&D_801A9A4E) = buf[1]; - (*(s16 *)&D_801A9A50) = buf[2]; - D_801A9A3C = D_80114F30 + buf[0]; - D_801A99C4 = 0; - D_801A9A3E = D_80114F34 + buf[1]; - D_801A9A40 = D_80114F38 + buf[2]; - D_801A9A34 = D_80114F24 + buf[0]; - D_801A9A36 = D_80114F28 + buf[1]; - D_801A9A38 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801A99E4; -extern SV4 D_801A99EC; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A99EC) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801A99E4 = 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_801A99EC = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A99EC)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801A99E4) = 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_801A99EC) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801A9A0C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801A9A0C; - 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_801A99C4; -extern s16 D_801AAFE0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801A99C4 = D_801A99C4 + 1; - if (D_801A99C4 >= 0x1F) { - D_801AAFE0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801A99C4; -extern s16 D_801AAFE0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801A99C4 = D_801A99C4 + 1; - if (0x18 < D_801A99C4) { - func_8012A4BC(); - D_801AAFE0 = 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_801A99C4; -extern void (*D_801A9A08)(void); -extern short D_801A9A4C; -extern short D_801A9A4E; -extern short D_801A9A50; -extern s16 D_801AAFE0; - -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_801A99C4 = D_801A99C4 + 1; - if (D_801A99C4 >= 0x19) { - if (D_801A9A08 != 0) { - (*D_801A9A08)(); - } else { - D_80114F30 = D_80114F30 + D_801A9A4C; - D_80114F34 = D_80114F34 + D_801A9A4E; - D_80114F38 = D_80114F38 + D_801A9A50; - D_80114F24 = D_80114F24 + D_801A9A4C; - D_80114F28 = D_80114F28 + D_801A9A4E; - D_80114F2C = D_80114F2C + D_801A9A50; - func_8012A4BC(); - } - D_801AAFE0 = 0; - } -} - - - -extern void (*D_80186C64[])(void); - -void func_8017BE60(void *a0) { - D_80186C64[*(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) */ diff --git a/src/ov_SC04_000/ov_SC04_000_jr_8017AE2C.c b/src/ov_SC04_000/ov_SC04_000_jr_8017AE2C.c new file mode 100644 index 000000000..ea1f3c8da --- /dev/null +++ b/src/ov_SC04_000/ov_SC04_000_jr_8017AE2C.c @@ -0,0 +1,3447 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801857BC; +extern u8 D_8018572C; +extern u8 D_80185708; +extern u8 D_801856E4; +extern u8 D_80185798; +extern u8 D_80185774; +extern u8 D_80185750; +extern u8 D_801856C0; +extern void func_80145934(void); +extern u8 D_8018584C; +extern u8 D_80185828; +extern u8 D_80185804; +extern u8 D_801857E0; +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_80184C44[]; +extern unsigned char D_80184C74[]; +extern unsigned char D_80184CC4[]; +extern unsigned char D_80184CF4[]; +extern unsigned char D_80184D24[]; +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(void); +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_80184D74[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80184E3C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80184EC4[]; +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_80184ECC; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801A88C0; +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_801A88C4; +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_80184EFC; +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 void 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_80184FA4[])(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_80184FC8[])(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_80184FB8; +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_80184FDC[])(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_80184FE8[]; +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_80184FF8[])(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_80185010[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80185000; +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_80185024[])(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_80185040[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80185030; +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_80185054[])(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_80185068[])(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_8018507C; +extern void (*D_801850A4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80185084; +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_801850F0[])(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_801850F4[])(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(void *a0); +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_80185558[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80185568[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801A88F8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80185590[])(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_80185570; +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_80185580; +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_801855D0[])(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_801855D8[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801855A4; +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_801855E4[])(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_801855B4; +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_801A8900; +extern s32 D_801A890C; +extern s32 D_801A8910; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80185620[])(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_801855F4[]; +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_801A8908; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80185870[])(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_80185690[]; +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_80185914[])(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_80185A68[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80185884; +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_80185A70[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80185894; +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_801858B4; +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_80185A78[])(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(void); +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_80185AA0[])(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_80185AAC[])(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_80185920[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80185B50; +extern void func_8015D380(s32 a0); +extern unsigned char D_80184C34[]; +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_80185B64[]; +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_80185BA0[]; +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_80185BE8; +extern u16 D_80185BEA; +extern u16 D_80185BEC; +extern s32 D_80185BF0; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80185BF8; +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_80185904; +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_80185C7C[]; +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_80185D2C[])(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_80185D5C[]; +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_80185DC0; +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_801A8918[]; +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_80185DE4[])(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_801A8970[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80185E2C[])(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_80185E1C; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801A8194[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_80185E34[])(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_80185E88[])(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_80185E50; +extern s16 D_80185E84; +extern s16 D_80185E82; +extern s16 D_80185E80; +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_80185E94[])(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_801A89D0; +extern u8 D_801A89D1; +extern u8 D_801A89D2; +extern u8 D_801A89D3; +extern u8 D_801A89D4; +extern u8 D_801A89D5; +extern u8 D_801A89D6; +extern u8 D_801A89D7; +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_80185EA4[])(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_801A8A10; +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_80185EE8[])(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_80185F64[]; +extern s32 D_80185F84[]; +extern u8 D_80186000[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80186020[]; +extern u8 D_80186040[]; +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_801860DC[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80186158[])(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_801A81A4; +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_80186164[])(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_8018616C[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80186234[])(void); +extern void func_80166618(void *a0); +extern void (*D_80186244[])(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_80186254[])(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_80186260[])(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_801861C0[]; +extern u8 D_801861D4[]; +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_80186278[])(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_80186280[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80186288[])(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_80186290[])(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_80186298[])(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_801862A0[])(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_801862A8[])(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_8018635C[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80186364[])(void); +extern void func_80169F00(void *a0); +extern char D_80186314[]; +extern char D_801862D4[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018639C[])(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_801863A8[])(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_801863F0[])(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_8018646C[])(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_801A8D30; +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_80186460[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_801864A4[]; +extern unsigned short D_801864AC[]; +extern unsigned short D_801864B4[]; +extern unsigned char D_801A8D38[]; +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_801A8D30; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801864BC[])(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_801A8E6C; +extern M2C_UNK D_801A8E70; +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_801A8DF8; +extern void (*D_801864EC[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801A8E74[]; +extern u8 D_801A8E7C[]; +extern u8 D_801A8E2C[]; +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_801864F4[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80186510[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80186518[])(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_80186580[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80186524; +extern u8 D_80186530; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801865B4[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801865BC[])(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_80186610[])(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_80186644[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80186634[]; +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_80186660; +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); +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_801866D8[])(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_801866E0[])(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_801866E8[])(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_801866F0[])(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_801866F8[])(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_80186700[])(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_8018670C[])(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_80186718[])(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_80186724[])(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_80186734[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80186744[])(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_8018674C[])(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_80186754[])(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_8018675C[])(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_80186764[])(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_8018676C[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80186774[])(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_8018677C[])(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_80186784[])(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_8018678C[])(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_80186794[])(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_8018679C[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801867A4[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801867AC[])(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_801867B4[])(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_801867BC[])(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_801867C4[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801867CC[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801867D4[])(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_801867DC[])(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_801867E4[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801867EC[])(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_801867F4[])(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_80186838[])(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_801867FC; +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_80186868[])(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_801868A4[])(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(s32); +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_801868FC[])(); +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_8018690C[])(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_80186914[])(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_80186A7C[])(); +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_80186A88[])(); +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_801A83EC; +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 int func_801789AC(void); +extern s16 D_801AAFE0; +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 short D_801AB054; +extern void func_80178D18(void); +extern s32 func_80178D40(s32 arg0, s32 arg1); +extern void func_80179B28(s32 a0); +extern void func_80179B74(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801A99DC; +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_801A9A04; +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_801A99C0; +extern s32 func_8017A3B0(void); +extern short D_801A99FC; +extern short D_801A99F8; +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_801AAFB0; +extern s16 D_801AAFB2; +extern s16 D_801AAFBC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801AAFB0; + + 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_801AAFBC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801AAFB0+0xC == &D_801AAFBC; 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_801AAFB0 + 0xC)) < 0x101) { + D_801AAFB0 = 0; + D_801AAFB2 = 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_801AAFBC); + 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_801AAFB0 + 0xC)) < 0x101) { + D_801AAFB0 = 0; + D_801AAFB2 = 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_801A9A3C; + extern s16 D_801A9A3E; + extern s16 D_801A9A40; + extern s16 D_801A9A34; + extern s16 D_801A9A36; + extern s16 D_801A9A38; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A9A3C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A9A3E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A9A40, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A9A34, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A9A36, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A9A38, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801A99C4; +extern u16 D_801A9A44; +extern u16 D_801A9A46; +extern u16 D_801A9A48; +extern s16 D_801AAFE0; + +void func_8017B1D8(void) { + func_8012A418(); + D_801AAFE0 = 0; + D_801A99C4 = 0; + D_801A9A44 = D_80126B5E; + D_801A9A46 = D_80126B62; + D_801A9A48 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80186BC4[]; + extern s16 D_801A9A3C; + extern s16 D_801A9A34; + 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_80186BC4[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80186BC4[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A9A3C; + s16 *p78C = &D_801A9A34; + *(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_801AAFE0 = 1; + D_801A99C4 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A99E4; + extern SV4_8017B368 D_801A99EC; + extern s16 D_801A9A3C; + extern s16 D_801A9A34; + extern u16 D_80186BC4; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801A99E4; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801A99EC; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80186BC4)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80186BC4)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801A9A3C) = loc0; + (*(SV4_8017B368 *)&D_801A9A34) = loc1; + D_801AAFE0 = 1; + D_801A99C4 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80186BC4[]; + extern s16 D_801A9A3C; + extern s16 D_801A9A3E; + extern s16 D_801A9A40; + extern s16 D_801A9A34; + extern s16 D_801A9A36; + extern s16 D_801A9A38; + 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_80186BC4[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80186BC4[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A9A3C; + s16 *p78C = &D_801A9A34; + *(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_801A9A3E; + v798 = D_801A9A40; + v78C = *p78C; + v78E = D_801A9A36; + v790 = D_801A9A38; + __asm__ __volatile__(""); + D_801AAFE0 = 1; + D_801A99C4 = 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_801A99C4; +extern s16 D_801A9A3C; +extern s16 D_801A9A3E; +extern s16 D_801A9A40; +extern s16 D_801A9A34; +extern s16 D_801A9A36; +extern s16 D_801A9A38; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801A99C4 = 0; + D_801A9A3C = (s16) D_80114F30; + D_801A9A3E = (s16) D_80114F34; + D_801A9A40 = (s16) D_80114F38; + D_801A9A34 = (s16) D_80114F24; + D_801A9A36 = (s16) D_80114F28; + D_801A9A38 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801A9A54; +extern s16 D_801A9A56; +extern s16 D_801A9A58; +extern s16 D_801A9A5C; +extern s16 D_801A9A5E; +extern s16 D_801A9A60; + +void func_8017B824(void) { + D_801A9A54 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801A9A56 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801A9A58 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801A9A5C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801A9A5E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801A9A60 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801A9A54; +extern s16 D_801A9A56; +extern s16 D_801A9A58; +extern s16 D_801A9A5C; +extern s16 D_801A9A5E; +extern s16 D_801A9A60; + +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_801A9A54; + D_80114F34 = D_801A9A56; + D_80114F38 = D_801A9A58; + D_80114F24 = D_801A9A5C; + D_80114F28 = D_801A9A5E; + D_80114F2C = D_801A9A60; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801A9A3C), src[8..15] -> (*(S8_8017B8E8 *)&D_801A9A34) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801A9A3C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801A9A34) = ((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_801A9A44; +extern u16 D_801A9A46; +extern u16 D_801A9A48; + +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_801A99C4; +extern short D_801A9A4C; +extern short D_801A9A4E; +extern short D_801A9A50; +extern s16 D_801A9A3C; +extern s16 D_801A9A3E; +extern s16 D_801A9A40; +extern s16 D_801A9A34; +extern s16 D_801A9A36; +extern s16 D_801A9A38; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A9A44); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A9A46); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A9A48); + (*(s16 *)&D_801A9A4C) = buf[0]; + (*(s16 *)&D_801A9A4E) = buf[1]; + (*(s16 *)&D_801A9A50) = buf[2]; + D_801A9A3C = D_80114F30 + buf[0]; + D_801A99C4 = 0; + D_801A9A3E = D_80114F34 + buf[1]; + D_801A9A40 = D_80114F38 + buf[2]; + D_801A9A34 = D_80114F24 + buf[0]; + D_801A9A36 = D_80114F28 + buf[1]; + D_801A9A38 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801A99E4; +extern SV4 D_801A99EC; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A99EC) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801A99E4 = 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_801A99EC = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A99EC)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801A99E4) = 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_801A99EC) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801A9A0C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801A9A0C; + 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_801A99C4; +extern s16 D_801AAFE0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801A99C4 = D_801A99C4 + 1; + if (D_801A99C4 >= 0x1F) { + D_801AAFE0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801A99C4; +extern s16 D_801AAFE0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801A99C4 = D_801A99C4 + 1; + if (0x18 < D_801A99C4) { + func_8012A4BC(); + D_801AAFE0 = 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_801A99C4; +extern void (*D_801A9A08)(void); +extern short D_801A9A4C; +extern short D_801A9A4E; +extern short D_801A9A50; +extern s16 D_801AAFE0; + +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_801A99C4 = D_801A99C4 + 1; + if (D_801A99C4 >= 0x19) { + if (D_801A9A08 != 0) { + (*D_801A9A08)(); + } else { + D_80114F30 = D_80114F30 + D_801A9A4C; + D_80114F34 = D_80114F34 + D_801A9A4E; + D_80114F38 = D_80114F38 + D_801A9A50; + D_80114F24 = D_80114F24 + D_801A9A4C; + D_80114F28 = D_80114F28 + D_801A9A4E; + D_80114F2C = D_80114F2C + D_801A9A50; + func_8012A4BC(); + } + D_801AAFE0 = 0; + } +} + + + +extern void (*D_80186C64[])(void); + +void func_8017BE60(void *a0) { + D_80186C64[*(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) */ + diff --git a/src/ov_SC04_002/ov_SC04_002_jr_8017A4AC.c b/src/ov_SC04_002/ov_SC04_002_jr_8017A4AC.c index b9ce3cb91..c78acc5fa 100644 --- a/src/ov_SC04_002/ov_SC04_002_jr_8017A4AC.c +++ b/src/ov_SC04_002/ov_SC04_002_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801C0D4C; - extern s16 D_801C0D4E; - extern s16 D_801C0D50; - extern s16 D_801C0D44; - extern s16 D_801C0D46; - extern s16 D_801C0D48; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C0D4C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C0D4E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C0D50, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C0D44, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C0D46, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C0D48, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801C0CD4; -extern u16 D_801C0D54; -extern u16 D_801C0D56; -extern u16 D_801C0D58; -extern s16 D_801C16B8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801C16B8 = 0; - D_801C0CD4 = 0; - D_801C0D54 = D_80126B5E; - D_801C0D56 = D_80126B62; - D_801C0D58 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018BD30[]; - extern s16 D_801C0D4C; - extern s16 D_801C0D44; - 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_8018BD30[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018BD30[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C0D4C; - s16 *p78C = &D_801C0D44; - *(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_801C16B8 = 1; - D_801C0CD4 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C0CF4; - extern SV4_8017B368 D_801C0CFC; - extern s16 D_801C0D4C; - extern s16 D_801C0D44; - extern u16 D_8018BD30; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801C0CF4; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801C0CFC; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018BD30)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018BD30)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801C0D4C) = loc0; - (*(SV4_8017B368 *)&D_801C0D44) = loc1; - D_801C16B8 = 1; - D_801C0CD4 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018BD30[]; - extern s16 D_801C0D4C; - extern s16 D_801C0D4E; - extern s16 D_801C0D50; - extern s16 D_801C0D44; - extern s16 D_801C0D46; - extern s16 D_801C0D48; - 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_8018BD30[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018BD30[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C0D4C; - s16 *p78C = &D_801C0D44; - *(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_801C0D4E; - v798 = D_801C0D50; - v78C = *p78C; - v78E = D_801C0D46; - v790 = D_801C0D48; - __asm__ __volatile__(""); - D_801C16B8 = 1; - D_801C0CD4 = 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_801C0CD4; -extern s16 D_801C0D4C; -extern s16 D_801C0D4E; -extern s16 D_801C0D50; -extern s16 D_801C0D44; -extern s16 D_801C0D46; -extern s16 D_801C0D48; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801C0CD4 = 0; - D_801C0D4C = (s16) D_80114F30; - D_801C0D4E = (s16) D_80114F34; - D_801C0D50 = (s16) D_80114F38; - D_801C0D44 = (s16) D_80114F24; - D_801C0D46 = (s16) D_80114F28; - D_801C0D48 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801C0D64; -extern s16 D_801C0D66; -extern s16 D_801C0D68; -extern s16 D_801C0D6C; -extern s16 D_801C0D6E; -extern s16 D_801C0D70; - -void func_8017B824(void) { - D_801C0D64 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801C0D66 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801C0D68 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801C0D6C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801C0D6E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801C0D70 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801C0D64; -extern s16 D_801C0D66; -extern s16 D_801C0D68; -extern s16 D_801C0D6C; -extern s16 D_801C0D6E; -extern s16 D_801C0D70; - -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_801C0D64; - D_80114F34 = D_801C0D66; - D_80114F38 = D_801C0D68; - D_80114F24 = D_801C0D6C; - D_80114F28 = D_801C0D6E; - D_80114F2C = D_801C0D70; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801C0D4C), src[8..15] -> (*(S8_8017B8E8 *)&D_801C0D44) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801C0D4C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801C0D44) = ((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_801C0D54; -extern u16 D_801C0D56; -extern u16 D_801C0D58; - -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_801C0CD4; -extern short D_801C0D5C; -extern short D_801C0D5E; -extern short D_801C0D60; -extern s16 D_801C0D4C; -extern s16 D_801C0D4E; -extern s16 D_801C0D50; -extern s16 D_801C0D44; -extern s16 D_801C0D46; -extern s16 D_801C0D48; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C0D54); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C0D56); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C0D58); - (*(s16 *)&D_801C0D5C) = buf[0]; - (*(s16 *)&D_801C0D5E) = buf[1]; - (*(s16 *)&D_801C0D60) = buf[2]; - D_801C0D4C = D_80114F30 + buf[0]; - D_801C0CD4 = 0; - D_801C0D4E = D_80114F34 + buf[1]; - D_801C0D50 = D_80114F38 + buf[2]; - D_801C0D44 = D_80114F24 + buf[0]; - D_801C0D46 = D_80114F28 + buf[1]; - D_801C0D48 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801C0CF4; -extern SV4 D_801C0CFC; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C0CFC) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801C0CF4 = 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_801C0CFC = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C0CFC)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801C0CF4) = 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_801C0CFC) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801C0D1C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801C0D1C; - 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_801C0CD4; -extern s16 D_801C16B8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801C0CD4 = D_801C0CD4 + 1; - if (D_801C0CD4 >= 0x1F) { - D_801C16B8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801C0CD4; -extern s16 D_801C16B8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801C0CD4 = D_801C0CD4 + 1; - if (0x18 < D_801C0CD4) { - func_8012A4BC(); - D_801C16B8 = 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_801C0CD4; -extern void (*D_801C0D18)(void); -extern short D_801C0D5C; -extern short D_801C0D5E; -extern short D_801C0D60; -extern s16 D_801C16B8; - -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_801C0CD4 = D_801C0CD4 + 1; - if (D_801C0CD4 >= 0x19) { - if (D_801C0D18 != 0) { - (*D_801C0D18)(); - } else { - D_80114F30 = D_80114F30 + D_801C0D5C; - D_80114F34 = D_80114F34 + D_801C0D5E; - D_80114F38 = D_80114F38 + D_801C0D60; - D_80114F24 = D_80114F24 + D_801C0D5C; - D_80114F28 = D_80114F28 + D_801C0D5E; - D_80114F2C = D_80114F2C + D_801C0D60; - func_8012A4BC(); - } - D_801C16B8 = 0; - } -} - - - -extern void (*D_8018BDD0[])(void); - -void func_8017BE60(void *a0) { - D_8018BDD0[*(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) */ diff --git a/src/ov_SC04_002/ov_SC04_002_jr_8017AE2C.c b/src/ov_SC04_002/ov_SC04_002_jr_8017AE2C.c new file mode 100644 index 000000000..de99b51dd --- /dev/null +++ b/src/ov_SC04_002/ov_SC04_002_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018A928; +extern u8 D_8018A898; +extern u8 D_8018A874; +extern u8 D_8018A850; +extern u8 D_8018A904; +extern u8 D_8018A8E0; +extern u8 D_8018A8BC; +extern u8 D_8018A82C; +extern void func_80145934(void); +extern u8 D_8018A9B8; +extern u8 D_8018A994; +extern u8 D_8018A970; +extern u8 D_8018A94C; +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_80189DB0[]; +extern unsigned char D_80189DE0[]; +extern unsigned char D_80189E30[]; +extern unsigned char D_80189E60[]; +extern unsigned char D_80189E90[]; +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(void); +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_80189EE0[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80189FA8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018A030[]; +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_8018A038; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801BFBD0; +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_801BFBD4; +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_8018A068; +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 void 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_8018A110[])(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_8018A134[])(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_8018A124; +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_8018A148[])(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_8018A154[]; +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_8018A164[])(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_8018A17C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018A16C; +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_8018A190[])(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_8018A1AC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018A19C; +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_8018A1C0[])(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_8018A1D4[])(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_8018A1E8; +extern void (*D_8018A210[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018A1F0; +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_8018A25C[])(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_8018A260[])(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(void *a0); +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_8018A6C4[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018A6D4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801BFC08; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018A6FC[])(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_8018A6DC; +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_8018A6EC; +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_8018A73C[])(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_8018A744[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018A710; +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_8018A750[])(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_8018A720; +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_801BFC10; +extern s32 D_801BFC1C; +extern s32 D_801BFC20; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018A78C[])(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_8018A760[]; +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_801BFC18; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018A9DC[])(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_8018A7FC[]; +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_8018AA80[])(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_8018ABD4[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018A9F0; +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_8018ABDC[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018AA00; +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_8018AA20; +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_8018ABE4[])(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(void); +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_8018AC0C[])(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_8018AC18[])(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_8018AA8C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018ACBC; +extern void func_8015D380(s32 a0); +extern unsigned char D_80189DA0[]; +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_8018ACD0[]; +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_8018AD0C[]; +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_8018AD54; +extern u16 D_8018AD56; +extern u16 D_8018AD58; +extern s32 D_8018AD5C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018AD64; +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_8018AA70; +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_8018ADE8[]; +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_8018AE98[])(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_8018AEC8[]; +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_8018AF2C; +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_801BFC28[]; +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_8018AF50[])(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_801BFC80[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018AF98[])(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_8018AF88; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801BF4E4[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_8018AFA0[])(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_8018AFF4[])(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_8018AFBC; +extern s16 D_8018AFF0; +extern s16 D_8018AFEE; +extern s16 D_8018AFEC; +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_8018B000[])(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_801BFCE0; +extern u8 D_801BFCE1; +extern u8 D_801BFCE2; +extern u8 D_801BFCE3; +extern u8 D_801BFCE4; +extern u8 D_801BFCE5; +extern u8 D_801BFCE6; +extern u8 D_801BFCE7; +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_8018B010[])(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_801BFD20; +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_8018B054[])(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_8018B0D0[]; +extern s32 D_8018B0F0[]; +extern u8 D_8018B16C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018B18C[]; +extern u8 D_8018B1AC[]; +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_8018B248[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018B2C4[])(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_801BF4F4; +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_8018B2D0[])(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_8018B2D8[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018B3A0[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018B3B0[])(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_8018B3C0[])(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_8018B3CC[])(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_8018B32C[]; +extern u8 D_8018B340[]; +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_8018B3E4[])(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_8018B3EC[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018B3F4[])(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_8018B3FC[])(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_8018B404[])(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_8018B40C[])(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_8018B414[])(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_8018B4C8[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018B4D0[])(void); +extern void func_80169F00(void *a0); +extern char D_8018B480[]; +extern char D_8018B440[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018B508[])(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_8018B514[])(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_8018B55C[])(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_8018B5D8[])(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_801C0040; +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_8018B5CC[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018B610[]; +extern unsigned short D_8018B618[]; +extern unsigned short D_8018B620[]; +extern unsigned char D_801C0048[]; +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_801C0040; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018B628[])(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_801C017C; +extern M2C_UNK D_801C0180; +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_801C0108; +extern void (*D_8018B658[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801C0184[]; +extern u8 D_801C018C[]; +extern u8 D_801C013C[]; +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_8018B660[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018B67C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018B684[])(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_8018B6EC[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018B690; +extern u8 D_8018B69C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018B720[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018B728[])(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_8018B77C[])(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_8018B7B0[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018B7A0[]; +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_8018B7CC; +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); +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_8018B844[])(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_8018B84C[])(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_8018B854[])(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_8018B85C[])(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_8018B864[])(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_8018B86C[])(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_8018B878[])(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_8018B884[])(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_8018B890[])(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_8018B8A0[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018B8B0[])(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_8018B8B8[])(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_8018B8C0[])(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_8018B8C8[])(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_8018B8D0[])(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_8018B8D8[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018B8E0[])(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_8018B8E8[])(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_8018B8F0[])(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_8018B8F8[])(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_8018B900[])(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_8018B908[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018B910[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018B918[])(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_8018B920[])(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_8018B928[])(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_8018B930[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018B938[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018B940[])(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_8018B948[])(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_8018B950[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018B958[])(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_8018B960[])(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_8018B9A4[])(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_8018B968; +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_8018B9D4[])(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_8018BA10[])(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(s32); +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_8018BA68[])(); +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_8018BA78[])(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_8018BA80[])(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_8018BBE8[])(); +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_8018BBF4[])(); +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_801BF73C; +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 int func_801789AC(void); +extern s16 D_801C16B8; +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_801C08C0; +extern short D_801C1734; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801C0CEC; +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_801C0D14; +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_801C0CD0; +extern s32 func_8017A3B0(void); +extern short D_801C0D0C; +extern short D_801C0D08; +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_801C1688; +extern s16 D_801C168A; +extern s16 D_801C1694; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801C1688; + + 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_801C1694); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801C1688+0xC == &D_801C1694; 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_801C1688 + 0xC)) < 0x101) { + D_801C1688 = 0; + D_801C168A = 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_801C1694); + 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_801C1688 + 0xC)) < 0x101) { + D_801C1688 = 0; + D_801C168A = 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_801C0D4C; + extern s16 D_801C0D4E; + extern s16 D_801C0D50; + extern s16 D_801C0D44; + extern s16 D_801C0D46; + extern s16 D_801C0D48; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C0D4C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C0D4E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C0D50, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C0D44, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C0D46, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C0D48, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801C0CD4; +extern u16 D_801C0D54; +extern u16 D_801C0D56; +extern u16 D_801C0D58; +extern s16 D_801C16B8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801C16B8 = 0; + D_801C0CD4 = 0; + D_801C0D54 = D_80126B5E; + D_801C0D56 = D_80126B62; + D_801C0D58 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018BD30[]; + extern s16 D_801C0D4C; + extern s16 D_801C0D44; + 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_8018BD30[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018BD30[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C0D4C; + s16 *p78C = &D_801C0D44; + *(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_801C16B8 = 1; + D_801C0CD4 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C0CF4; + extern SV4_8017B368 D_801C0CFC; + extern s16 D_801C0D4C; + extern s16 D_801C0D44; + extern u16 D_8018BD30; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801C0CF4; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801C0CFC; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018BD30)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018BD30)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801C0D4C) = loc0; + (*(SV4_8017B368 *)&D_801C0D44) = loc1; + D_801C16B8 = 1; + D_801C0CD4 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018BD30[]; + extern s16 D_801C0D4C; + extern s16 D_801C0D4E; + extern s16 D_801C0D50; + extern s16 D_801C0D44; + extern s16 D_801C0D46; + extern s16 D_801C0D48; + 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_8018BD30[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018BD30[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C0D4C; + s16 *p78C = &D_801C0D44; + *(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_801C0D4E; + v798 = D_801C0D50; + v78C = *p78C; + v78E = D_801C0D46; + v790 = D_801C0D48; + __asm__ __volatile__(""); + D_801C16B8 = 1; + D_801C0CD4 = 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_801C0CD4; +extern s16 D_801C0D4C; +extern s16 D_801C0D4E; +extern s16 D_801C0D50; +extern s16 D_801C0D44; +extern s16 D_801C0D46; +extern s16 D_801C0D48; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801C0CD4 = 0; + D_801C0D4C = (s16) D_80114F30; + D_801C0D4E = (s16) D_80114F34; + D_801C0D50 = (s16) D_80114F38; + D_801C0D44 = (s16) D_80114F24; + D_801C0D46 = (s16) D_80114F28; + D_801C0D48 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801C0D64; +extern s16 D_801C0D66; +extern s16 D_801C0D68; +extern s16 D_801C0D6C; +extern s16 D_801C0D6E; +extern s16 D_801C0D70; + +void func_8017B824(void) { + D_801C0D64 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801C0D66 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801C0D68 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801C0D6C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801C0D6E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801C0D70 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801C0D64; +extern s16 D_801C0D66; +extern s16 D_801C0D68; +extern s16 D_801C0D6C; +extern s16 D_801C0D6E; +extern s16 D_801C0D70; + +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_801C0D64; + D_80114F34 = D_801C0D66; + D_80114F38 = D_801C0D68; + D_80114F24 = D_801C0D6C; + D_80114F28 = D_801C0D6E; + D_80114F2C = D_801C0D70; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801C0D4C), src[8..15] -> (*(S8_8017B8E8 *)&D_801C0D44) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801C0D4C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801C0D44) = ((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_801C0D54; +extern u16 D_801C0D56; +extern u16 D_801C0D58; + +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_801C0CD4; +extern short D_801C0D5C; +extern short D_801C0D5E; +extern short D_801C0D60; +extern s16 D_801C0D4C; +extern s16 D_801C0D4E; +extern s16 D_801C0D50; +extern s16 D_801C0D44; +extern s16 D_801C0D46; +extern s16 D_801C0D48; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C0D54); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C0D56); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C0D58); + (*(s16 *)&D_801C0D5C) = buf[0]; + (*(s16 *)&D_801C0D5E) = buf[1]; + (*(s16 *)&D_801C0D60) = buf[2]; + D_801C0D4C = D_80114F30 + buf[0]; + D_801C0CD4 = 0; + D_801C0D4E = D_80114F34 + buf[1]; + D_801C0D50 = D_80114F38 + buf[2]; + D_801C0D44 = D_80114F24 + buf[0]; + D_801C0D46 = D_80114F28 + buf[1]; + D_801C0D48 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801C0CF4; +extern SV4 D_801C0CFC; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C0CFC) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801C0CF4 = 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_801C0CFC = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C0CFC)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801C0CF4) = 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_801C0CFC) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801C0D1C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801C0D1C; + 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_801C0CD4; +extern s16 D_801C16B8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801C0CD4 = D_801C0CD4 + 1; + if (D_801C0CD4 >= 0x1F) { + D_801C16B8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801C0CD4; +extern s16 D_801C16B8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801C0CD4 = D_801C0CD4 + 1; + if (0x18 < D_801C0CD4) { + func_8012A4BC(); + D_801C16B8 = 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_801C0CD4; +extern void (*D_801C0D18)(void); +extern short D_801C0D5C; +extern short D_801C0D5E; +extern short D_801C0D60; +extern s16 D_801C16B8; + +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_801C0CD4 = D_801C0CD4 + 1; + if (D_801C0CD4 >= 0x19) { + if (D_801C0D18 != 0) { + (*D_801C0D18)(); + } else { + D_80114F30 = D_80114F30 + D_801C0D5C; + D_80114F34 = D_80114F34 + D_801C0D5E; + D_80114F38 = D_80114F38 + D_801C0D60; + D_80114F24 = D_80114F24 + D_801C0D5C; + D_80114F28 = D_80114F28 + D_801C0D5E; + D_80114F2C = D_80114F2C + D_801C0D60; + func_8012A4BC(); + } + D_801C16B8 = 0; + } +} + + + +extern void (*D_8018BDD0[])(void); + +void func_8017BE60(void *a0) { + D_8018BDD0[*(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) */ + diff --git a/src/ov_SC04_003/ov_SC04_003_jr_8017A4AC.c b/src/ov_SC04_003/ov_SC04_003_jr_8017A4AC.c index 1c87174a2..b7355f25d 100644 --- a/src/ov_SC04_003/ov_SC04_003_jr_8017A4AC.c +++ b/src/ov_SC04_003/ov_SC04_003_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8019B9B4; - extern s16 D_8019B9B6; - extern s16 D_8019B9B8; - extern s16 D_8019B9AC; - extern s16 D_8019B9AE; - extern s16 D_8019B9B0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019B9B4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019B9B6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019B9B8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019B9AC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019B9AE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019B9B0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8019B93C; -extern u16 D_8019B9BC; -extern u16 D_8019B9BE; -extern u16 D_8019B9C0; -extern s16 D_8019BB78; - -void func_8017B1D8(void) { - func_8012A418(); - D_8019BB78 = 0; - D_8019B93C = 0; - D_8019B9BC = D_80126B5E; - D_8019B9BE = D_80126B62; - D_8019B9C0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80185ACC[]; - extern s16 D_8019B9B4; - extern s16 D_8019B9AC; - 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_80185ACC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80185ACC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019B9B4; - s16 *p78C = &D_8019B9AC; - *(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_8019BB78 = 1; - D_8019B93C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019B95C; - extern SV4_8017B368 D_8019B964; - extern s16 D_8019B9B4; - extern s16 D_8019B9AC; - extern u16 D_80185ACC; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8019B95C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8019B964; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80185ACC)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80185ACC)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8019B9B4) = loc0; - (*(SV4_8017B368 *)&D_8019B9AC) = loc1; - D_8019BB78 = 1; - D_8019B93C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80185ACC[]; - extern s16 D_8019B9B4; - extern s16 D_8019B9B6; - extern s16 D_8019B9B8; - extern s16 D_8019B9AC; - extern s16 D_8019B9AE; - extern s16 D_8019B9B0; - 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_80185ACC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80185ACC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019B9B4; - s16 *p78C = &D_8019B9AC; - *(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_8019B9B6; - v798 = D_8019B9B8; - v78C = *p78C; - v78E = D_8019B9AE; - v790 = D_8019B9B0; - __asm__ __volatile__(""); - D_8019BB78 = 1; - D_8019B93C = 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_8019B93C; -extern s16 D_8019B9B4; -extern s16 D_8019B9B6; -extern s16 D_8019B9B8; -extern s16 D_8019B9AC; -extern s16 D_8019B9AE; -extern s16 D_8019B9B0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8019B93C = 0; - D_8019B9B4 = (s16) D_80114F30; - D_8019B9B6 = (s16) D_80114F34; - D_8019B9B8 = (s16) D_80114F38; - D_8019B9AC = (s16) D_80114F24; - D_8019B9AE = (s16) D_80114F28; - D_8019B9B0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8019B9CC; -extern s16 D_8019B9CE; -extern s16 D_8019B9D0; -extern s16 D_8019B9D4; -extern s16 D_8019B9D6; -extern s16 D_8019B9D8; - -void func_8017B824(void) { - D_8019B9CC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8019B9CE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8019B9D0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8019B9D4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8019B9D6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8019B9D8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8019B9CC; -extern s16 D_8019B9CE; -extern s16 D_8019B9D0; -extern s16 D_8019B9D4; -extern s16 D_8019B9D6; -extern s16 D_8019B9D8; - -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_8019B9CC; - D_80114F34 = D_8019B9CE; - D_80114F38 = D_8019B9D0; - D_80114F24 = D_8019B9D4; - D_80114F28 = D_8019B9D6; - D_80114F2C = D_8019B9D8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8019B9B4), src[8..15] -> (*(S8_8017B8E8 *)&D_8019B9AC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8019B9B4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8019B9AC) = ((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_8019B9BC; -extern u16 D_8019B9BE; -extern u16 D_8019B9C0; - -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_8019B93C; -extern short D_8019B9C4; -extern short D_8019B9C6; -extern short D_8019B9C8; -extern s16 D_8019B9B4; -extern s16 D_8019B9B6; -extern s16 D_8019B9B8; -extern s16 D_8019B9AC; -extern s16 D_8019B9AE; -extern s16 D_8019B9B0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019B9BC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019B9BE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019B9C0); - (*(s16 *)&D_8019B9C4) = buf[0]; - (*(s16 *)&D_8019B9C6) = buf[1]; - (*(s16 *)&D_8019B9C8) = buf[2]; - D_8019B9B4 = D_80114F30 + buf[0]; - D_8019B93C = 0; - D_8019B9B6 = D_80114F34 + buf[1]; - D_8019B9B8 = D_80114F38 + buf[2]; - D_8019B9AC = D_80114F24 + buf[0]; - D_8019B9AE = D_80114F28 + buf[1]; - D_8019B9B0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8019B95C; -extern SV4 D_8019B964; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019B964) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8019B95C = 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_8019B964 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019B964)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8019B95C) = 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_8019B964) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8019B984[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8019B984; - 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_8019B93C; -extern s16 D_8019BB78; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8019B93C = D_8019B93C + 1; - if (D_8019B93C >= 0x1F) { - D_8019BB78 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8019B93C; -extern s16 D_8019BB78; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8019B93C = D_8019B93C + 1; - if (0x18 < D_8019B93C) { - func_8012A4BC(); - D_8019BB78 = 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_8019B93C; -extern void (*D_8019B980)(void); -extern short D_8019B9C4; -extern short D_8019B9C6; -extern short D_8019B9C8; -extern s16 D_8019BB78; - -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_8019B93C = D_8019B93C + 1; - if (D_8019B93C >= 0x19) { - if (D_8019B980 != 0) { - (*D_8019B980)(); - } else { - D_80114F30 = D_80114F30 + D_8019B9C4; - D_80114F34 = D_80114F34 + D_8019B9C6; - D_80114F38 = D_80114F38 + D_8019B9C8; - D_80114F24 = D_80114F24 + D_8019B9C4; - D_80114F28 = D_80114F28 + D_8019B9C6; - D_80114F2C = D_80114F2C + D_8019B9C8; - func_8012A4BC(); - } - D_8019BB78 = 0; - } -} - - - -extern void (*D_80185B6C[])(void); - -void func_8017BE60(void *a0) { - D_80185B6C[*(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) */ diff --git a/src/ov_SC04_003/ov_SC04_003_jr_8017AE2C.c b/src/ov_SC04_003/ov_SC04_003_jr_8017AE2C.c new file mode 100644 index 000000000..7e1986386 --- /dev/null +++ b/src/ov_SC04_003/ov_SC04_003_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801846C4; +extern u8 D_80184634; +extern u8 D_80184610; +extern u8 D_801845EC; +extern u8 D_801846A0; +extern u8 D_8018467C; +extern u8 D_80184658; +extern u8 D_801845C8; +extern void func_80145934(void); +extern u8 D_80184754; +extern u8 D_80184730; +extern u8 D_8018470C; +extern u8 D_801846E8; +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_80183B4C[]; +extern unsigned char D_80183B7C[]; +extern unsigned char D_80183BCC[]; +extern unsigned char D_80183BFC[]; +extern unsigned char D_80183C2C[]; +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(void); +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_80183C7C[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80183D44[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80183DCC[]; +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_80183DD4; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8019A838; +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_8019A83C; +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_80183E04; +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 void 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_80183EAC[])(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_80183ED0[])(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_80183EC0; +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_80183EE4[])(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_80183EF0[]; +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_80183F00[])(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_80183F18[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80183F08; +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_80183F2C[])(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_80183F48[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80183F38; +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_80183F5C[])(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_80183F70[])(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_80183F84; +extern void (*D_80183FAC[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80183F8C; +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_80183FF8[])(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_80183FFC[])(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(void *a0); +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_80184460[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80184470[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8019A870; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184498[])(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_80184478; +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_80184488; +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_801844D8[])(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_801844E0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801844AC; +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_801844EC[])(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_801844BC; +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_8019A878; +extern s32 D_8019A884; +extern s32 D_8019A888; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80184528[])(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_801844FC[]; +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_8019A880; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80184778[])(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_80184598[]; +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_8018481C[])(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_80184970[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018478C; +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_80184978[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018479C; +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_801847BC; +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_80184980[])(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(void); +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_801849A8[])(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_801849B4[])(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_80184828[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80184A58; +extern void func_8015D380(s32 a0); +extern unsigned char D_80183B3C[]; +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_80184A6C[]; +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_80184AA8[]; +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_80184AF0; +extern u16 D_80184AF2; +extern u16 D_80184AF4; +extern s32 D_80184AF8; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80184B00; +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_8018480C; +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_80184B84[]; +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_80184C34[])(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_80184C64[]; +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_80184CC8; +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_8019A890[]; +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_80184CEC[])(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_8019A8E8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80184D34[])(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_80184D24; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8019A160[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_80184D3C[])(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_80184D90[])(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_80184D58; +extern s16 D_80184D8C; +extern s16 D_80184D8A; +extern s16 D_80184D88; +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_80184D9C[])(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_8019A948; +extern u8 D_8019A949; +extern u8 D_8019A94A; +extern u8 D_8019A94B; +extern u8 D_8019A94C; +extern u8 D_8019A94D; +extern u8 D_8019A94E; +extern u8 D_8019A94F; +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_80184DAC[])(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_8019A988; +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_80184DF0[])(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_80184E6C[]; +extern s32 D_80184E8C[]; +extern u8 D_80184F08[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80184F28[]; +extern u8 D_80184F48[]; +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_80184FE4[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80185060[])(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_8019A170; +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_8018506C[])(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_80185074[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018513C[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018514C[])(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_8018515C[])(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_80185168[])(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_801850C8[]; +extern u8 D_801850DC[]; +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_80185180[])(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_80185188[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80185190[])(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_80185198[])(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_801851A0[])(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_801851A8[])(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_801851B0[])(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_80185264[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018526C[])(void); +extern void func_80169F00(void *a0); +extern char D_8018521C[]; +extern char D_801851DC[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_801852A4[])(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_801852B0[])(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_801852F8[])(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_80185374[])(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_8019ACA8; +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_80185368[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_801853AC[]; +extern unsigned short D_801853B4[]; +extern unsigned short D_801853BC[]; +extern unsigned char D_8019ACB0[]; +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_8019ACA8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801853C4[])(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_8019ADE4; +extern M2C_UNK D_8019ADE8; +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_8019AD70; +extern void (*D_801853F4[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8019ADEC[]; +extern u8 D_8019ADF4[]; +extern u8 D_8019ADA4[]; +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_801853FC[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80185418[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80185420[])(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_80185488[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018542C; +extern u8 D_80185438; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801854BC[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801854C4[])(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_80185518[])(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_8018554C[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018553C[]; +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_80185568; +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); +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_801855E0[])(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_801855E8[])(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_801855F0[])(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_801855F8[])(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_80185600[])(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_80185608[])(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_80185614[])(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_80185620[])(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_8018562C[])(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_8018563C[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018564C[])(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_80185654[])(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_8018565C[])(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_80185664[])(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_8018566C[])(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_80185674[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018567C[])(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_80185684[])(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_8018568C[])(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_80185694[])(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_8018569C[])(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_801856A4[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801856AC[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801856B4[])(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_801856BC[])(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_801856C4[])(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_801856CC[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801856D4[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801856DC[])(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_801856E4[])(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_801856EC[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801856F4[])(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_801856FC[])(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_80185740[])(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_80185704; +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_80185770[])(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_801857AC[])(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(s32); +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_80185804[])(); +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_80185814[])(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_8018581C[])(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_80185984[])(); +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_80185990[])(); +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_8019A3B8; +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 int func_801789AC(void); +extern s16 D_8019BB78; +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_8019B528; +extern short D_8019BBEC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8019B954; +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_8019B97C; +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_8019B938; +extern s32 func_8017A3B0(void); +extern short D_8019B974; +extern short D_8019B970; +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_8019BB48; +extern s16 D_8019BB4A; +extern s16 D_8019BB54; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_8019BB48; + + 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_8019BB54); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_8019BB48+0xC == &D_8019BB54; 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_8019BB48 + 0xC)) < 0x101) { + D_8019BB48 = 0; + D_8019BB4A = 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_8019BB54); + 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_8019BB48 + 0xC)) < 0x101) { + D_8019BB48 = 0; + D_8019BB4A = 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_8019B9B4; + extern s16 D_8019B9B6; + extern s16 D_8019B9B8; + extern s16 D_8019B9AC; + extern s16 D_8019B9AE; + extern s16 D_8019B9B0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019B9B4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019B9B6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019B9B8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019B9AC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019B9AE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019B9B0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8019B93C; +extern u16 D_8019B9BC; +extern u16 D_8019B9BE; +extern u16 D_8019B9C0; +extern s16 D_8019BB78; + +void func_8017B1D8(void) { + func_8012A418(); + D_8019BB78 = 0; + D_8019B93C = 0; + D_8019B9BC = D_80126B5E; + D_8019B9BE = D_80126B62; + D_8019B9C0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80185ACC[]; + extern s16 D_8019B9B4; + extern s16 D_8019B9AC; + 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_80185ACC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80185ACC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019B9B4; + s16 *p78C = &D_8019B9AC; + *(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_8019BB78 = 1; + D_8019B93C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019B95C; + extern SV4_8017B368 D_8019B964; + extern s16 D_8019B9B4; + extern s16 D_8019B9AC; + extern u16 D_80185ACC; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8019B95C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8019B964; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80185ACC)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80185ACC)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8019B9B4) = loc0; + (*(SV4_8017B368 *)&D_8019B9AC) = loc1; + D_8019BB78 = 1; + D_8019B93C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80185ACC[]; + extern s16 D_8019B9B4; + extern s16 D_8019B9B6; + extern s16 D_8019B9B8; + extern s16 D_8019B9AC; + extern s16 D_8019B9AE; + extern s16 D_8019B9B0; + 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_80185ACC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80185ACC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019B9B4; + s16 *p78C = &D_8019B9AC; + *(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_8019B9B6; + v798 = D_8019B9B8; + v78C = *p78C; + v78E = D_8019B9AE; + v790 = D_8019B9B0; + __asm__ __volatile__(""); + D_8019BB78 = 1; + D_8019B93C = 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_8019B93C; +extern s16 D_8019B9B4; +extern s16 D_8019B9B6; +extern s16 D_8019B9B8; +extern s16 D_8019B9AC; +extern s16 D_8019B9AE; +extern s16 D_8019B9B0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8019B93C = 0; + D_8019B9B4 = (s16) D_80114F30; + D_8019B9B6 = (s16) D_80114F34; + D_8019B9B8 = (s16) D_80114F38; + D_8019B9AC = (s16) D_80114F24; + D_8019B9AE = (s16) D_80114F28; + D_8019B9B0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8019B9CC; +extern s16 D_8019B9CE; +extern s16 D_8019B9D0; +extern s16 D_8019B9D4; +extern s16 D_8019B9D6; +extern s16 D_8019B9D8; + +void func_8017B824(void) { + D_8019B9CC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8019B9CE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8019B9D0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8019B9D4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8019B9D6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8019B9D8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8019B9CC; +extern s16 D_8019B9CE; +extern s16 D_8019B9D0; +extern s16 D_8019B9D4; +extern s16 D_8019B9D6; +extern s16 D_8019B9D8; + +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_8019B9CC; + D_80114F34 = D_8019B9CE; + D_80114F38 = D_8019B9D0; + D_80114F24 = D_8019B9D4; + D_80114F28 = D_8019B9D6; + D_80114F2C = D_8019B9D8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8019B9B4), src[8..15] -> (*(S8_8017B8E8 *)&D_8019B9AC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8019B9B4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8019B9AC) = ((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_8019B9BC; +extern u16 D_8019B9BE; +extern u16 D_8019B9C0; + +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_8019B93C; +extern short D_8019B9C4; +extern short D_8019B9C6; +extern short D_8019B9C8; +extern s16 D_8019B9B4; +extern s16 D_8019B9B6; +extern s16 D_8019B9B8; +extern s16 D_8019B9AC; +extern s16 D_8019B9AE; +extern s16 D_8019B9B0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019B9BC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019B9BE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019B9C0); + (*(s16 *)&D_8019B9C4) = buf[0]; + (*(s16 *)&D_8019B9C6) = buf[1]; + (*(s16 *)&D_8019B9C8) = buf[2]; + D_8019B9B4 = D_80114F30 + buf[0]; + D_8019B93C = 0; + D_8019B9B6 = D_80114F34 + buf[1]; + D_8019B9B8 = D_80114F38 + buf[2]; + D_8019B9AC = D_80114F24 + buf[0]; + D_8019B9AE = D_80114F28 + buf[1]; + D_8019B9B0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8019B95C; +extern SV4 D_8019B964; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019B964) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8019B95C = 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_8019B964 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019B964)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8019B95C) = 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_8019B964) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8019B984[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8019B984; + 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_8019B93C; +extern s16 D_8019BB78; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8019B93C = D_8019B93C + 1; + if (D_8019B93C >= 0x1F) { + D_8019BB78 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8019B93C; +extern s16 D_8019BB78; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8019B93C = D_8019B93C + 1; + if (0x18 < D_8019B93C) { + func_8012A4BC(); + D_8019BB78 = 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_8019B93C; +extern void (*D_8019B980)(void); +extern short D_8019B9C4; +extern short D_8019B9C6; +extern short D_8019B9C8; +extern s16 D_8019BB78; + +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_8019B93C = D_8019B93C + 1; + if (D_8019B93C >= 0x19) { + if (D_8019B980 != 0) { + (*D_8019B980)(); + } else { + D_80114F30 = D_80114F30 + D_8019B9C4; + D_80114F34 = D_80114F34 + D_8019B9C6; + D_80114F38 = D_80114F38 + D_8019B9C8; + D_80114F24 = D_80114F24 + D_8019B9C4; + D_80114F28 = D_80114F28 + D_8019B9C6; + D_80114F2C = D_80114F2C + D_8019B9C8; + func_8012A4BC(); + } + D_8019BB78 = 0; + } +} + + + +extern void (*D_80185B6C[])(void); + +void func_8017BE60(void *a0) { + D_80185B6C[*(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) */ + diff --git a/src/ov_SC04_004/ov_SC04_004_jr_8017A4AC.c b/src/ov_SC04_004/ov_SC04_004_jr_8017A4AC.c index 6b1e154ea..e45d7f0db 100644 --- a/src/ov_SC04_004/ov_SC04_004_jr_8017A4AC.c +++ b/src/ov_SC04_004/ov_SC04_004_jr_8017A4AC.c @@ -2946,1360 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801B37B4; - extern s16 D_801B37B6; - extern s16 D_801B37B8; - extern s16 D_801B37AC; - extern s16 D_801B37AE; - extern s16 D_801B37B0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B37B4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B37B6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B37B8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B37AC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B37AE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B37B0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801B373C; -extern u16 D_801B37BC; -extern u16 D_801B37BE; -extern u16 D_801B37C0; -extern s16 D_801B3BD8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801B3BD8 = 0; - D_801B373C = 0; - D_801B37BC = D_80126B5E; - D_801B37BE = D_80126B62; - D_801B37C0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80188000[]; - extern s16 D_801B37B4; - extern s16 D_801B37AC; - 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_80188000[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80188000[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B37B4; - s16 *p78C = &D_801B37AC; - *(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_801B3BD8 = 1; - D_801B373C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B375C; - extern SV4_8017B368 D_801B3764; - extern s16 D_801B37B4; - extern s16 D_801B37AC; - extern u16 D_80188000; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801B375C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801B3764; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80188000)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80188000)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801B37B4) = loc0; - (*(SV4_8017B368 *)&D_801B37AC) = loc1; - D_801B3BD8 = 1; - D_801B373C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80188000[]; - extern s16 D_801B37B4; - extern s16 D_801B37B6; - extern s16 D_801B37B8; - extern s16 D_801B37AC; - extern s16 D_801B37AE; - extern s16 D_801B37B0; - 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_80188000[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80188000[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B37B4; - s16 *p78C = &D_801B37AC; - *(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_801B37B6; - v798 = D_801B37B8; - v78C = *p78C; - v78E = D_801B37AE; - v790 = D_801B37B0; - __asm__ __volatile__(""); - D_801B3BD8 = 1; - D_801B373C = 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_801B373C; -extern s16 D_801B37B4; -extern s16 D_801B37B6; -extern s16 D_801B37B8; -extern s16 D_801B37AC; -extern s16 D_801B37AE; -extern s16 D_801B37B0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801B373C = 0; - D_801B37B4 = (s16) D_80114F30; - D_801B37B6 = (s16) D_80114F34; - D_801B37B8 = (s16) D_80114F38; - D_801B37AC = (s16) D_80114F24; - D_801B37AE = (s16) D_80114F28; - D_801B37B0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801B37CC; -extern s16 D_801B37CE; -extern s16 D_801B37D0; -extern s16 D_801B37D4; -extern s16 D_801B37D6; -extern s16 D_801B37D8; - -void func_8017B824(void) { - D_801B37CC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801B37CE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801B37D0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801B37D4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801B37D6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801B37D8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801B37CC; -extern s16 D_801B37CE; -extern s16 D_801B37D0; -extern s16 D_801B37D4; -extern s16 D_801B37D6; -extern s16 D_801B37D8; - -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_801B37CC; - D_80114F34 = D_801B37CE; - D_80114F38 = D_801B37D0; - D_80114F24 = D_801B37D4; - D_80114F28 = D_801B37D6; - D_80114F2C = D_801B37D8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801B37B4), src[8..15] -> (*(S8_8017B8E8 *)&D_801B37AC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801B37B4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801B37AC) = ((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_801B37BC; -extern u16 D_801B37BE; -extern u16 D_801B37C0; - -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_801B373C; -extern short D_801B37C4; -extern short D_801B37C6; -extern short D_801B37C8; -extern s16 D_801B37B4; -extern s16 D_801B37B6; -extern s16 D_801B37B8; -extern s16 D_801B37AC; -extern s16 D_801B37AE; -extern s16 D_801B37B0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B37BC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B37BE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B37C0); - (*(s16 *)&D_801B37C4) = buf[0]; - (*(s16 *)&D_801B37C6) = buf[1]; - (*(s16 *)&D_801B37C8) = buf[2]; - D_801B37B4 = D_80114F30 + buf[0]; - D_801B373C = 0; - D_801B37B6 = D_80114F34 + buf[1]; - D_801B37B8 = D_80114F38 + buf[2]; - D_801B37AC = D_80114F24 + buf[0]; - D_801B37AE = D_80114F28 + buf[1]; - D_801B37B0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801B375C; -extern SV4 D_801B3764; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B3764) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801B375C = 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_801B3764 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B3764)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801B375C) = 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_801B3764) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801B3784[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801B3784; - 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_801B373C; -extern s16 D_801B3BD8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801B373C = D_801B373C + 1; - if (D_801B373C >= 0x1F) { - D_801B3BD8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801B373C; -extern s16 D_801B3BD8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801B373C = D_801B373C + 1; - if (0x18 < D_801B373C) { - func_8012A4BC(); - D_801B3BD8 = 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_801B373C; -extern void (*D_801B3780)(void); -extern short D_801B37C4; -extern short D_801B37C6; -extern short D_801B37C8; -extern s16 D_801B3BD8; - -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_801B373C = D_801B373C + 1; - if (D_801B373C >= 0x19) { - if (D_801B3780 != 0) { - (*D_801B3780)(); - } else { - D_80114F30 = D_80114F30 + D_801B37C4; - D_80114F34 = D_80114F34 + D_801B37C6; - D_80114F38 = D_80114F38 + D_801B37C8; - D_80114F24 = D_80114F24 + D_801B37C4; - D_80114F28 = D_80114F28 + D_801B37C6; - D_80114F2C = D_80114F2C + D_801B37C8; - func_8012A4BC(); - } - D_801B3BD8 = 0; - } -} - - - -extern void (*D_801880A0[])(void); - -void func_8017BE60(void *a0) { - D_801880A0[*(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) */ - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017CD9C); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017CECC); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017D258); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017D4D0); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017D618); - - -extern void (*D_801881BC[])(void); - -void func_8017D798(void *a0) { - D_801881BC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017D7D4); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017D820); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017D914); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017D994); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017DA48); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017DAB4); - -extern void func_8012C218(void *a0); - void func_8017DB40(void) { - ((s32 (*)(void))func_8012C218)(); - } - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017DB60); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017DBB4); - - -extern void (*D_80188214[])(void); - -void func_8017DBF0(void *a0) { - D_80188214[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017DC2C); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017DC7C); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017DCD8); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017DD5C); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017DEC4); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017DF10); - - -extern void (*D_80188228[])(void); - -void func_8017E21C(void *a0) { - D_80188228[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017E258); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017E298); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017E308); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017E394); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017E468); - - -extern void (*D_8018823C[])(void); - -void func_8017E4BC(void *a0) { - D_8018823C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017E4F8); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017E5AC); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017E608); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017E778); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017E7E8); - - -extern void (*D_8018830C[])(void); - -void func_8017E858(void *a0) { - D_8018830C[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017E894); - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017E8D8(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017E8FC); - - -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_8017E93C(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_8017E9B8(void) { - func_800D1EBC(); - } - - - -extern void (*D_80188320[])(void); - -void func_8017E9D8(void *a0) { - D_80188320[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017EA14); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017EA88); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017EAB0); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017EAD8); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017EB70); - - -extern void (*D_8018833C[])(void); - -void func_8017EC08(void *a0) { - D_8018833C[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017EC44); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017ECE4); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017ED84); - - -extern void func_8013B7F4(void *a0, int a1); - -int func_8017EF1C(int param_1) -{ - - extern unsigned char D_8018834C[]; - register int iVar1 __asm__("$4"); - iVar1 = *(int *)(D_8018834C + param_1 * 4); - __asm__ __volatile__("" ::: "memory"); - func_8013B7F4((void *)iVar1, 0); -} - - - -s32 func_8017EF4C(void) { - return 85; -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017EF54); - -extern void func_8014E934(s32 a0); -extern void func_8014CC28(s32 a0); -extern void func_8014F3E8(s32 a0); -extern void func_8017EFF4(s32 a0); -extern void func_80146CA0(void *a0); -void func_8017EFAC(s32 a0) { - func_8014E934(a0); - func_8014CC28(a0); - func_8014F3E8(a0); - func_8017EFF4(a0); - func_80146CA0((void *)a0); -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017EFF4); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017F07C); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017F0E0); - - -extern void (*D_801883B0[])(void); - -void func_8017F130(void *a0) { - D_801883B0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017F16C); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017F228); - -void func_8017F5C4(s32 *a0) { - *(s32 *)((s32)a0 + 0x10) = *(s32 *)((s32)a0 + 0x4); - *(s32 *)((s32)a0 + 0x14) = *(s32 *)((s32)a0 + 0x8); - *(s32 *)((s32)a0 + 0x18) = *(s32 *)((s32)a0 + 0xC); - } - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017F5E0); - - -extern void (*D_801883E8[])(void); - -void func_8017F620(void *a0) { - D_801883E8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017F65C); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017F930); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017F9AC); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017F9F4); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017FA1C); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017FB78); - -void func_8017FBEC(s32 *a0) { - *(s32 *)((s32)a0 + 0x0) = 0x80404080; - } - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017FBFC); - - -extern void (*D_801886F8[])(void); - -void func_8017FC88(void *a0) { - D_801886F8[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_8012BF4C(s32 *a0, s16 a1); - extern s32 func_8012AD50(void *a0); - void func_8017FCC4(s32 *a0) { - func_8012BF4C(a0, 0); - ((void (*)(void *))func_8012AD50)((void *)a0); - } - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017FCF8); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017FE48); - - -extern void (*D_80188734[])(void); - -void func_8017FF34(void *a0) { - D_80188734[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8017FF70); - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80180054); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_801800C0); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_801801AC); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80180208); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80180274); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_801802D0); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_801804CC); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80180530); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8018056C); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_801805D0); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8018070C); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80180750); - -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 D_801999AC; - -void func_80180878(s32 arg0) { - ((void (*)(s32, s32))func_8012A8B0)(arg0, &D_801999AC); - ((void (*)(s32, s32))func_8012AD44)(arg0, 0xA); -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_801808B4); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80180948); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_801809B0); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80180A30); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80180AF0); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80180BA4); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80180C74); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80180D94); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80180E30); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80180EEC); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80180F74); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80180FF8); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80181130); - -extern void func_8002D4C8(s32 arg0, s32 arg1); -extern void func_8002AC00(int arg0); - -void func_801811BC(void) { - func_8002D4C8(0x853, 0); - func_8002AC00(0x13); -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_801811E8); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80181248); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_801812B8); - - -extern void (*D_80192E8C[])(void); - -void func_801813F0(void *a0) { - D_80192E8C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8018142C); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80181548); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80181594); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80181678); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80181744); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80181850); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_801818A8); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80181968); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80181A20); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80181AD4); - -extern void func_8012B23C(s32 arg); - extern void func_8012AD44(s32 *a0, s16 a1); - void func_80181B6C(void *a0) { - func_8012B23C((s32)a0); - ((s32 (*)(s32, s32))func_8012AD44)((s32)a0, 1); - } - - -extern void func_8012B21C(void *a0); - extern void func_8012AD44(s32 *a0, s16 a1); - void func_80181BA0(s32 param_1) { - ((void (*)(s32))func_8012B21C)(param_1); - ((void (*)(s32, s32))func_8012AD44)(param_1, 2); - } - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80181BD4); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80181C9C); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80181D1C); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80181DAC); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80181E90); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80181EE8); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80182014); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80182170); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_801821E0); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80182320); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_801823F4); - -void func_801824A8(void) { -} - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_801824B0); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80182574); - - -extern void (*D_8019A170[])(void); - -void func_801826EC(void *a0) { - D_8019A170[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_8019A184[])(void); - -void func_80182728(void *a0) { - D_8019A184[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012CBF4(s32 a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C218(void *a0); - -extern s32 D_8019A15C; -extern s32 D_8019A168; -extern u8 D_800D3918[]; -extern s32 D_80126D50; - -void func_80182764(s32 param_1) { - s32 s0 = param_1; - s32 v; - - func_8012B14C(s0, (s32)&D_8019A15C); - if (((s32 (*)(s32))func_8012CBF4)(s0) != 0) { - func_80146A6C(6, (void *)s0, *(s16 *)(s0 + 0x6), *(s16 *)(s0 + 0xA), - *(s16 *)(s0 + 0xE), 0, 0); - v = func_80132EF4(s0, 0x22); - if (v != 0) { - *(s16 *)(v + 0x34) = 0x2000; - } - } else { - if (func_8012D5E4(s0, (s32)&D_8019A168, (s32)&D_800D3918, 0x19) == 0 && - (*(s16 *)(s0 + 0x70) == 2 || D_80126D50 == 0) && - func_8012BEE8(s0) == 0) { - return; - } - } - func_8012C218((void *)s0); -} - - - -// @class: schedule -// @stuck: none — MATCH (71 ins). Tail schedule: read out.c into an explicit temp BEFORE the 0x5a/1 const stores so gcc hoists its lhu early (load-delay filled by li 0x5a) and stores out.c last from a held reg; without the temp gcc instead deferred out.b's store. in/out are two separate SV3{s16 a,b,c} stack slots (sp+0x10, sp+0x18) for ((void (*)(int, void *, void *))func_8012F214)(a0,&in,&out). 0x34 compare reads u16 (lhu, not lh). - -extern void func_8012B2CC(s32 a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012AD80(s32 a0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C218(void *a0); - -extern int D_8019A178; - -void func_80182844(int param_1) -{ - SV3 in; - SV3 out; - short c; - - if (*(unsigned short *)(param_1 + 0x34) == 0) { - *(short *)(*(int *)(param_1 + 0x20) + 0x12) = - *(short *)(*(int *)(*(int *)(param_1 + 0x64) + 0x20) + 0x12); - ((void (*)(void))func_8012B2CC)(); - func_8012B23C(param_1); - ((void (*)(int, void *))func_8012B14C)(param_1, &D_8019A178); - in.a = 0; - in.b = 0; - in.c = 0x10; - ((void (*)(int, void *, void *))func_8012F214)(param_1, &in, &out); - *(short *)(param_1 + 6) = out.a; - *(short *)(param_1 + 0xa) = out.b; - c = out.c; - *(int *)(param_1 + 0x1c) = 0x5a; - *(short *)(param_1 + 0x34) = 1; - *(short *)(param_1 + 0xe) = c; - } - *(short *)(*(int *)(param_1 + 0x20) + 0x10) = - *(short *)(*(int *)(param_1 + 0x20) + 0x10) - 0x80; - *(short *)(*(int *)(param_1 + 0x20) + 0x12) = - *(short *)(*(int *)(param_1 + 0x20) + 0x12) + 4; - *(short *)(*(int *)(param_1 + 0x20) + 0x14) = - *(short *)(*(int *)(param_1 + 0x20) + 0x14) + 5; - func_8012AD80(param_1); - if (func_8012BEE8(param_1) != 0) { - ((void (*)(int))func_8012C218)(param_1); - } -} - - - -// @class: other -// @stuck: none — MATCH (expected); 16-bit sh stores via short* casts, s0=param_1 call-crossing - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); - -extern int D_8019A42C; - -void func_80182960(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 { - ((int (*)(int, void *))func_8001C214)(v0, &D_8019A42C); - *(short *)(param_1 + 0x2) = 1; - *(short *)(param_1 + 0x34) = 0; - } -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_801829BC); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80182B9C); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80182CAC); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80182DC4); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80182E34); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80182E9C); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80182ED4); - -extern void func_8002D4C8(s32 arg0, s32 arg1); - extern void func_8002AC00(s32 arg0); - void func_80182F7C(void) { - func_8002D4C8(0xA9E, 0); - func_8002AC00(0x14); - } - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80182FA8); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80182FF0); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8018308C); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80183130); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_801831FC); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_801832A8); - - -// @class: plumbing -// @stuck: none — MATCH (18 ins): if((b&1) && p!=&sym) call(param,&sym); $a0 live, $a1=&sym fall out -extern void func_8012A828(s32 a0, void *a1); -extern void D_801B0750; - -void func_80183318(s32 arg0) -{ - if ((M2C_FIELD(arg0, u8 *, 0xC3) & 1) && (M2C_FIELD(arg0, void **, 0x90) != &D_801B0750)) { - func_8012A828(arg0, &D_801B0750); - } -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80183360); - - -extern void func_8012A828(s32 a0, void *a1); -extern u8 D_801B0BD8; - -void func_801833EC(s32 a0) { - *(s16 *)(a0 + 0x2) = 2; - func_8012A828(a0, &D_801B0BD8); - *(s32 *)(a0 + 0x1C) = 0x14; -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8018342C); - - -// @class: schedule -// @stuck: none — MATCH (44 ins). Two §3-T4 branch-polarity inversions: outer if(param_2>=iVar2) makes the func_8018352C else-block fall-through; inner if(param_3>=iVar2) return 0 makes the func_8012A828 body fall-through. No pins needed — natural $s1/$s0/$s2 alloc matched. -extern s32 func_8012BCCC(s32 a0); -extern void func_8018352C(s32 param_1); -extern void func_8012A828(s32 a0, void *a1); -extern u8 D_801B0B30; - -s32 func_8018347C(s32 param_1, s32 param_2, s32 param_3) { - s32 iVar2; - s16 sVar1; - - iVar2 = func_8012BCCC(param_1); - if (param_2 >= iVar2) { - func_8018352C(param_1); - return 1; - } - sVar1 = *(s16 *)(param_1 + 0xdc) + 1; - *(s16 *)(param_1 + 0xdc) = sVar1; - if (sVar1 < 0x79) { - return 0; - } - if (param_3 >= iVar2) { - return 0; - } - *(s16 *)(param_1 + 2) = 1; - func_8012A828(param_1, &D_801B0B30); - return 1; -} - - - -// @class: plumbing -// @stuck: none — MATCH (straightforward; callee sigs canonical from overlay) -extern void func_8012A828(s32 a0, void *a1); -extern void func_80142414(s32 a0, s16 a1); -extern u8 D_801B08F0; - -void func_8018352C(s32 param_1) { - *(s16 *)(param_1 + 2) = 4; - func_8012A828(param_1, &D_801B08F0); - *(s32 *)(param_1 + 0x1c) = 0x1e; - if (*(s16 *)(param_1 + 0xfc) == 0) { - *(s16 *)(param_1 + 0xfc) = 1; - ((void (*)(s32, s32))func_80142414)(param_1, -0x96); - } -} - - -void func_80183588(void *a0) { - *(short *)((char *)a0 + 0x2) = 0x5; - *(int *)((char *)a0 + 0x1c) = 0x14; - } - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_8018359C); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80183750); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80183798); - - -extern void (*D_801A8C90[])(void); - -void func_801838E4(void *a0) { - D_801A8C90[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80183920); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_801839A8); - - -extern void func_8012B2CC(s32 a0); -extern void func_8012B200(u8 *a0); -extern void func_8012B178(s32 a0, s32 a1); - -void func_80183A80(u8 *a0) { - u8 *p = *(u8 **)(a0 + 0x20); - u16 v = *(u16 *)(a0 + 0xFC); - *(s16 *)(a0 + 0x2) = 2; - *(s32 *)(a0 + 0x1C) = 0x50; - *(s16 *)(p + 0x12) = v; - func_8012B2CC((s32)a0); - func_8012B200(a0); - func_8012B178((s32)a0, 0xFFF00000); -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80183AD8); - - -extern void func_80016714(void *a0, s32 a1); - extern void func_8012C218(void *a0); - void func_80183B64(s32 param_1) { - s32 iVar1; - iVar1 = *(s32 *)(param_1 + 0xcc); - ((void (*)(s32 *, s32))func_80016714)((s32 *)iVar1, 0x38); - ((void (*)(s32))func_8012C218)(param_1); - } - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80183B9C); - -extern s32 func_8012BEE8(s32 arg); - extern void func_8018342C(s32 a0); - void func_80183C08(s32 a0) { - if (func_8012BEE8(a0)) { - ((void (*)(s32))func_8018342C)(a0); - } - } - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80183C40); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80183CA4); - -void func_80183CFC(void) { -} - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80183D04); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80183DBC); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80183E2C); - - -extern void (*D_801B0DF4[])(void); - -void func_80183FA0(void *a0) { - D_801B0DF4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80183FDC); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_801840D8); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80184368); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_801844FC); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80184554); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_801845D0); - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017A4AC", func_80184614); - - - diff --git a/src/ov_SC04_004/ov_SC04_004_jr_8017AE2C.c b/src/ov_SC04_004/ov_SC04_004_jr_8017AE2C.c new file mode 100644 index 000000000..86c78f8d2 --- /dev/null +++ b/src/ov_SC04_004/ov_SC04_004_jr_8017AE2C.c @@ -0,0 +1,4237 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80186BF8; +extern u8 D_80186B68; +extern u8 D_80186B44; +extern u8 D_80186B20; +extern u8 D_80186BD4; +extern u8 D_80186BB0; +extern u8 D_80186B8C; +extern u8 D_80186AFC; +extern void func_80145934(void); +extern u8 D_80186C88; +extern u8 D_80186C64; +extern u8 D_80186C40; +extern u8 D_80186C1C; +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_80186080[]; +extern unsigned char D_801860B0[]; +extern unsigned char D_80186100[]; +extern unsigned char D_80186130[]; +extern unsigned char D_80186160[]; +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(void); +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_801861B0[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80186278[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80186300[]; +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_80186308; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801B2638; +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_801B263C; +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_80186338; +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 void 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_801863E0[])(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_80186404[])(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_801863F4; +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_80186418[])(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_80186424[]; +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_80186434[])(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_8018644C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018643C; +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_80186460[])(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_8018647C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018646C; +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_80186490[])(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_801864A4[])(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_801864B8; +extern void (*D_801864E0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801864C0; +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_8018652C[])(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_80186530[])(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(void *a0); +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_80186994[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_801869A4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801B2670; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801869CC[])(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_801869AC; +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_801869BC; +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_80186A0C[])(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_80186A14[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801869E0; +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_80186A20[])(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_801869F0; +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_801B2678; +extern s32 D_801B2684; +extern s32 D_801B2688; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80186A5C[])(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_80186A30[]; +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_801B2680; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80186CAC[])(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_80186ACC[]; +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_80186D50[])(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_80186EA4[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80186CC0; +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_80186EAC[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80186CD0; +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_80186CF0; +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_80186EB4[])(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(void); +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_80186EDC[])(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_80186EE8[])(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_80186D5C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80186F8C; +extern void func_8015D380(s32 a0); +extern unsigned char D_80186070[]; +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_80186FA0[]; +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_80186FDC[]; +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_80187024; +extern u16 D_80187026; +extern u16 D_80187028; +extern s32 D_8018702C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80187034; +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_80186D40; +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_801870B8[]; +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_80187168[])(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_80187198[]; +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_801871FC; +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_801B2690[]; +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_80187220[])(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_801B26E8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80187268[])(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_80187258; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801B1F5C[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_80187270[])(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_801872C4[])(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_8018728C; +extern s16 D_801872C0; +extern s16 D_801872BE; +extern s16 D_801872BC; +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_801872D0[])(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_801B2748; +extern u8 D_801B2749; +extern u8 D_801B274A; +extern u8 D_801B274B; +extern u8 D_801B274C; +extern u8 D_801B274D; +extern u8 D_801B274E; +extern u8 D_801B274F; +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_801872E0[])(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_801B2788; +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_80187324[])(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_801873A0[]; +extern s32 D_801873C0[]; +extern u8 D_8018743C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018745C[]; +extern u8 D_8018747C[]; +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_80187518[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80187594[])(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_801B1F6C; +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_801875A0[])(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_801875A8[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80187670[])(void); +extern void func_80166618(void *a0); +extern void (*D_80187680[])(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_80187690[])(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_8018769C[])(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_801875FC[]; +extern u8 D_80187610[]; +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_801876B4[])(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_801876BC[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_801876C4[])(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_801876CC[])(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_801876D4[])(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_801876DC[])(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_801876E4[])(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_80187798[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801877A0[])(void); +extern void func_80169F00(void *a0); +extern char D_80187750[]; +extern char D_80187710[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_801877D8[])(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_801877E4[])(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_8018782C[])(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_801878A8[])(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_801B2AA8; +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_8018789C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_801878E0[]; +extern unsigned short D_801878E8[]; +extern unsigned short D_801878F0[]; +extern unsigned char D_801B2AB0[]; +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_801B2AA8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801878F8[])(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_801B2BE4; +extern M2C_UNK D_801B2BE8; +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_801B2B70; +extern void (*D_80187928[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801B2BEC[]; +extern u8 D_801B2BF4[]; +extern u8 D_801B2BA4[]; +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_80187930[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018794C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80187954[])(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_801879BC[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80187960; +extern u8 D_8018796C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801879F0[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801879F8[])(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_80187A4C[])(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_80187A80[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80187A70[]; +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_80187A9C; +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); +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_80187B14[])(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_80187B1C[])(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_80187B24[])(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_80187B2C[])(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_80187B34[])(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_80187B3C[])(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_80187B48[])(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_80187B54[])(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_80187B60[])(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_80187B70[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80187B80[])(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_80187B88[])(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_80187B90[])(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_80187B98[])(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_80187BA0[])(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_80187BA8[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80187BB0[])(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_80187BB8[])(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_80187BC0[])(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_80187BC8[])(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_80187BD0[])(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_80187BD8[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80187BE0[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80187BE8[])(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_80187BF0[])(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_80187BF8[])(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_80187C00[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80187C08[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80187C10[])(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_80187C18[])(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_80187C20[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80187C28[])(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_80187C30[])(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_80187C74[])(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_80187C38; +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_80187CA4[])(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_80187CE0[])(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(s32); +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_80187D38[])(); +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_80187D48[])(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_80187D50[])(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_80187EB8[])(); +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_80187EC4[])(); +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_801B21B4; +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 int func_801789AC(void); +extern s16 D_801B3BD8; +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_801B3328; +extern short D_801B3C54; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801B3754; +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_801B377C; +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_801B3738; +extern s32 func_8017A3B0(void); +extern short D_801B3774; +extern short D_801B3770; +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_801B3BA8; +extern s16 D_801B3BAA; +extern s16 D_801B3BB4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801B3BA8; + + 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_801B3BB4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801B3BA8+0xC == &D_801B3BB4; 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_801B3BA8 + 0xC)) < 0x101) { + D_801B3BA8 = 0; + D_801B3BAA = 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_801B3BB4); + 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_801B3BA8 + 0xC)) < 0x101) { + D_801B3BA8 = 0; + D_801B3BAA = 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_801B37B4; + extern s16 D_801B37B6; + extern s16 D_801B37B8; + extern s16 D_801B37AC; + extern s16 D_801B37AE; + extern s16 D_801B37B0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B37B4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B37B6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B37B8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B37AC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B37AE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B37B0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801B373C; +extern u16 D_801B37BC; +extern u16 D_801B37BE; +extern u16 D_801B37C0; +extern s16 D_801B3BD8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801B3BD8 = 0; + D_801B373C = 0; + D_801B37BC = D_80126B5E; + D_801B37BE = D_80126B62; + D_801B37C0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80188000[]; + extern s16 D_801B37B4; + extern s16 D_801B37AC; + 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_80188000[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80188000[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B37B4; + s16 *p78C = &D_801B37AC; + *(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_801B3BD8 = 1; + D_801B373C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B375C; + extern SV4_8017B368 D_801B3764; + extern s16 D_801B37B4; + extern s16 D_801B37AC; + extern u16 D_80188000; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801B375C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801B3764; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80188000)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80188000)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801B37B4) = loc0; + (*(SV4_8017B368 *)&D_801B37AC) = loc1; + D_801B3BD8 = 1; + D_801B373C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80188000[]; + extern s16 D_801B37B4; + extern s16 D_801B37B6; + extern s16 D_801B37B8; + extern s16 D_801B37AC; + extern s16 D_801B37AE; + extern s16 D_801B37B0; + 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_80188000[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80188000[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B37B4; + s16 *p78C = &D_801B37AC; + *(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_801B37B6; + v798 = D_801B37B8; + v78C = *p78C; + v78E = D_801B37AE; + v790 = D_801B37B0; + __asm__ __volatile__(""); + D_801B3BD8 = 1; + D_801B373C = 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_801B373C; +extern s16 D_801B37B4; +extern s16 D_801B37B6; +extern s16 D_801B37B8; +extern s16 D_801B37AC; +extern s16 D_801B37AE; +extern s16 D_801B37B0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801B373C = 0; + D_801B37B4 = (s16) D_80114F30; + D_801B37B6 = (s16) D_80114F34; + D_801B37B8 = (s16) D_80114F38; + D_801B37AC = (s16) D_80114F24; + D_801B37AE = (s16) D_80114F28; + D_801B37B0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801B37CC; +extern s16 D_801B37CE; +extern s16 D_801B37D0; +extern s16 D_801B37D4; +extern s16 D_801B37D6; +extern s16 D_801B37D8; + +void func_8017B824(void) { + D_801B37CC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801B37CE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801B37D0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801B37D4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801B37D6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801B37D8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801B37CC; +extern s16 D_801B37CE; +extern s16 D_801B37D0; +extern s16 D_801B37D4; +extern s16 D_801B37D6; +extern s16 D_801B37D8; + +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_801B37CC; + D_80114F34 = D_801B37CE; + D_80114F38 = D_801B37D0; + D_80114F24 = D_801B37D4; + D_80114F28 = D_801B37D6; + D_80114F2C = D_801B37D8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801B37B4), src[8..15] -> (*(S8_8017B8E8 *)&D_801B37AC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801B37B4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801B37AC) = ((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_801B37BC; +extern u16 D_801B37BE; +extern u16 D_801B37C0; + +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_801B373C; +extern short D_801B37C4; +extern short D_801B37C6; +extern short D_801B37C8; +extern s16 D_801B37B4; +extern s16 D_801B37B6; +extern s16 D_801B37B8; +extern s16 D_801B37AC; +extern s16 D_801B37AE; +extern s16 D_801B37B0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B37BC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B37BE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B37C0); + (*(s16 *)&D_801B37C4) = buf[0]; + (*(s16 *)&D_801B37C6) = buf[1]; + (*(s16 *)&D_801B37C8) = buf[2]; + D_801B37B4 = D_80114F30 + buf[0]; + D_801B373C = 0; + D_801B37B6 = D_80114F34 + buf[1]; + D_801B37B8 = D_80114F38 + buf[2]; + D_801B37AC = D_80114F24 + buf[0]; + D_801B37AE = D_80114F28 + buf[1]; + D_801B37B0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801B375C; +extern SV4 D_801B3764; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B3764) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801B375C = 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_801B3764 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B3764)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801B375C) = 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_801B3764) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801B3784[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801B3784; + 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_801B373C; +extern s16 D_801B3BD8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801B373C = D_801B373C + 1; + if (D_801B373C >= 0x1F) { + D_801B3BD8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801B373C; +extern s16 D_801B3BD8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801B373C = D_801B373C + 1; + if (0x18 < D_801B373C) { + func_8012A4BC(); + D_801B3BD8 = 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_801B373C; +extern void (*D_801B3780)(void); +extern short D_801B37C4; +extern short D_801B37C6; +extern short D_801B37C8; +extern s16 D_801B3BD8; + +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_801B373C = D_801B373C + 1; + if (D_801B373C >= 0x19) { + if (D_801B3780 != 0) { + (*D_801B3780)(); + } else { + D_80114F30 = D_80114F30 + D_801B37C4; + D_80114F34 = D_80114F34 + D_801B37C6; + D_80114F38 = D_80114F38 + D_801B37C8; + D_80114F24 = D_80114F24 + D_801B37C4; + D_80114F28 = D_80114F28 + D_801B37C6; + D_80114F2C = D_80114F2C + D_801B37C8; + func_8012A4BC(); + } + D_801B3BD8 = 0; + } +} + + + +extern void (*D_801880A0[])(void); + +void func_8017BE60(void *a0) { + D_801880A0[*(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) */ + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017CD9C); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017CECC); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017D258); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017D4D0); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017D618); + + +extern void (*D_801881BC[])(void); + +void func_8017D798(void *a0) { + D_801881BC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017D7D4); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017D820); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017D914); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017D994); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017DA48); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017DAB4); + +extern void func_8012C218(void *a0); + void func_8017DB40(void) { + ((s32 (*)(void))func_8012C218)(); + } + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017DB60); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017DBB4); + + +extern void (*D_80188214[])(void); + +void func_8017DBF0(void *a0) { + D_80188214[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017DC2C); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017DC7C); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017DCD8); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017DD5C); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017DEC4); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017DF10); + + +extern void (*D_80188228[])(void); + +void func_8017E21C(void *a0) { + D_80188228[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017E258); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017E298); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017E308); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017E394); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017E468); + + +extern void (*D_8018823C[])(void); + +void func_8017E4BC(void *a0) { + D_8018823C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017E4F8); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017E5AC); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017E608); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017E778); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017E7E8); + + +extern void (*D_8018830C[])(void); + +void func_8017E858(void *a0) { + D_8018830C[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017E894); + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017E8D8(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017E8FC); + + +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_8017E93C(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_8017E9B8(void) { + func_800D1EBC(); + } + + + +extern void (*D_80188320[])(void); + +void func_8017E9D8(void *a0) { + D_80188320[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017EA14); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017EA88); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017EAB0); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017EAD8); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017EB70); + + +extern void (*D_8018833C[])(void); + +void func_8017EC08(void *a0) { + D_8018833C[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017EC44); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017ECE4); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017ED84); + + +extern void func_8013B7F4(void *a0, int a1); + +int func_8017EF1C(int param_1) +{ + + extern unsigned char D_8018834C[]; + register int iVar1 __asm__("$4"); + iVar1 = *(int *)(D_8018834C + param_1 * 4); + __asm__ __volatile__("" ::: "memory"); + func_8013B7F4((void *)iVar1, 0); +} + + + +s32 func_8017EF4C(void) { + return 85; +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017EF54); + +extern void func_8014E934(s32 a0); +extern void func_8014CC28(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_8017EFF4(s32 a0); +extern void func_80146CA0(void *a0); +void func_8017EFAC(s32 a0) { + func_8014E934(a0); + func_8014CC28(a0); + func_8014F3E8(a0); + func_8017EFF4(a0); + func_80146CA0((void *)a0); +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017EFF4); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017F07C); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017F0E0); + + +extern void (*D_801883B0[])(void); + +void func_8017F130(void *a0) { + D_801883B0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017F16C); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017F228); + +void func_8017F5C4(s32 *a0) { + *(s32 *)((s32)a0 + 0x10) = *(s32 *)((s32)a0 + 0x4); + *(s32 *)((s32)a0 + 0x14) = *(s32 *)((s32)a0 + 0x8); + *(s32 *)((s32)a0 + 0x18) = *(s32 *)((s32)a0 + 0xC); + } + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017F5E0); + + +extern void (*D_801883E8[])(void); + +void func_8017F620(void *a0) { + D_801883E8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017F65C); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017F930); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017F9AC); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017F9F4); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017FA1C); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017FB78); + +void func_8017FBEC(s32 *a0) { + *(s32 *)((s32)a0 + 0x0) = 0x80404080; + } + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017FBFC); + + +extern void (*D_801886F8[])(void); + +void func_8017FC88(void *a0) { + D_801886F8[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_8012BF4C(s32 *a0, s16 a1); + extern s32 func_8012AD50(void *a0); + void func_8017FCC4(s32 *a0) { + func_8012BF4C(a0, 0); + ((void (*)(void *))func_8012AD50)((void *)a0); + } + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017FCF8); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017FE48); + + +extern void (*D_80188734[])(void); + +void func_8017FF34(void *a0) { + D_80188734[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8017FF70); + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180054); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801800C0); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801801AC); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180208); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180274); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801802D0); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801804CC); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180530); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8018056C); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801805D0); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8018070C); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180750); + +extern void func_8012A8B0(u8 *a0, s32 a1); +extern void func_8012AD44(s32 *a0, s16 a1); +extern s32 D_801999AC; + +void func_80180878(s32 arg0) { + ((void (*)(s32, s32))func_8012A8B0)(arg0, &D_801999AC); + ((void (*)(s32, s32))func_8012AD44)(arg0, 0xA); +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801808B4); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180948); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801809B0); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180A30); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180AF0); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180BA4); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180C74); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180D94); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180E30); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180EEC); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180F74); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80180FF8); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181130); + +extern void func_8002D4C8(s32 arg0, s32 arg1); +extern void func_8002AC00(int arg0); + +void func_801811BC(void) { + func_8002D4C8(0x853, 0); + func_8002AC00(0x13); +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801811E8); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181248); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801812B8); + + +extern void (*D_80192E8C[])(void); + +void func_801813F0(void *a0) { + D_80192E8C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8018142C); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181548); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181594); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181678); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181744); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181850); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801818A8); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181968); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181A20); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181AD4); + +extern void func_8012B23C(s32 arg); + extern void func_8012AD44(s32 *a0, s16 a1); + void func_80181B6C(void *a0) { + func_8012B23C((s32)a0); + ((s32 (*)(s32, s32))func_8012AD44)((s32)a0, 1); + } + + +extern void func_8012B21C(void *a0); + extern void func_8012AD44(s32 *a0, s16 a1); + void func_80181BA0(s32 param_1) { + ((void (*)(s32))func_8012B21C)(param_1); + ((void (*)(s32, s32))func_8012AD44)(param_1, 2); + } + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181BD4); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181C9C); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181D1C); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181DAC); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181E90); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181EE8); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80182014); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80182170); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801821E0); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80182320); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801823F4); + +void func_801824A8(void) { +} + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801824B0); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80182574); + + +extern void (*D_8019A170[])(void); + +void func_801826EC(void *a0) { + D_8019A170[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_8019A184[])(void); + +void func_80182728(void *a0) { + D_8019A184[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void func_8012B14C(s32 a0, s32 a1); +extern void func_8012CBF4(s32 a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80132EF4(s32 a0, s32 a1); +extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8012BEE8(s32 a0); +extern void func_8012C218(void *a0); + +extern s32 D_8019A15C; +extern s32 D_8019A168; +extern u8 D_800D3918[]; +extern s32 D_80126D50; + +void func_80182764(s32 param_1) { + s32 s0 = param_1; + s32 v; + + func_8012B14C(s0, (s32)&D_8019A15C); + if (((s32 (*)(s32))func_8012CBF4)(s0) != 0) { + func_80146A6C(6, (void *)s0, *(s16 *)(s0 + 0x6), *(s16 *)(s0 + 0xA), + *(s16 *)(s0 + 0xE), 0, 0); + v = func_80132EF4(s0, 0x22); + if (v != 0) { + *(s16 *)(v + 0x34) = 0x2000; + } + } else { + if (func_8012D5E4(s0, (s32)&D_8019A168, (s32)&D_800D3918, 0x19) == 0 && + (*(s16 *)(s0 + 0x70) == 2 || D_80126D50 == 0) && + func_8012BEE8(s0) == 0) { + return; + } + } + func_8012C218((void *)s0); +} + + + +// @class: schedule +// @stuck: none — MATCH (71 ins). Tail schedule: read out.c into an explicit temp BEFORE the 0x5a/1 const stores so gcc hoists its lhu early (load-delay filled by li 0x5a) and stores out.c last from a held reg; without the temp gcc instead deferred out.b's store. in/out are two separate SV3{s16 a,b,c} stack slots (sp+0x10, sp+0x18) for ((void (*)(int, void *, void *))func_8012F214)(a0,&in,&out). 0x34 compare reads u16 (lhu, not lh). + +extern void func_8012B2CC(s32 a0); +extern void func_8012B23C(s32 a0); +extern void func_8012B14C(s32 a0, s32 a1); +extern void func_8012F214(s32 a0, s32 a1, s32 a2); +extern void func_8012AD80(s32 a0); +extern s32 func_8012BEE8(s32 a0); +extern void func_8012C218(void *a0); + +extern int D_8019A178; + +void func_80182844(int param_1) +{ + SV3 in; + SV3 out; + short c; + + if (*(unsigned short *)(param_1 + 0x34) == 0) { + *(short *)(*(int *)(param_1 + 0x20) + 0x12) = + *(short *)(*(int *)(*(int *)(param_1 + 0x64) + 0x20) + 0x12); + ((void (*)(void))func_8012B2CC)(); + func_8012B23C(param_1); + ((void (*)(int, void *))func_8012B14C)(param_1, &D_8019A178); + in.a = 0; + in.b = 0; + in.c = 0x10; + ((void (*)(int, void *, void *))func_8012F214)(param_1, &in, &out); + *(short *)(param_1 + 6) = out.a; + *(short *)(param_1 + 0xa) = out.b; + c = out.c; + *(int *)(param_1 + 0x1c) = 0x5a; + *(short *)(param_1 + 0x34) = 1; + *(short *)(param_1 + 0xe) = c; + } + *(short *)(*(int *)(param_1 + 0x20) + 0x10) = + *(short *)(*(int *)(param_1 + 0x20) + 0x10) - 0x80; + *(short *)(*(int *)(param_1 + 0x20) + 0x12) = + *(short *)(*(int *)(param_1 + 0x20) + 0x12) + 4; + *(short *)(*(int *)(param_1 + 0x20) + 0x14) = + *(short *)(*(int *)(param_1 + 0x20) + 0x14) + 5; + func_8012AD80(param_1); + if (func_8012BEE8(param_1) != 0) { + ((void (*)(int))func_8012C218)(param_1); + } +} + + + +// @class: other +// @stuck: none — MATCH (expected); 16-bit sh stores via short* casts, s0=param_1 call-crossing + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32 a0, s32 a1); + +extern int D_8019A42C; + +void func_80182960(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 { + ((int (*)(int, void *))func_8001C214)(v0, &D_8019A42C); + *(short *)(param_1 + 0x2) = 1; + *(short *)(param_1 + 0x34) = 0; + } +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801829BC); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80182B9C); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80182CAC); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80182DC4); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80182E34); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80182E9C); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80182ED4); + +extern void func_8002D4C8(s32 arg0, s32 arg1); + extern void func_8002AC00(s32 arg0); + void func_80182F7C(void) { + func_8002D4C8(0xA9E, 0); + func_8002AC00(0x14); + } + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80182FA8); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80182FF0); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8018308C); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80183130); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801831FC); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801832A8); + + +// @class: plumbing +// @stuck: none — MATCH (18 ins): if((b&1) && p!=&sym) call(param,&sym); $a0 live, $a1=&sym fall out +extern void func_8012A828(s32 a0, void *a1); +extern void D_801B0750; + +void func_80183318(s32 arg0) +{ + if ((M2C_FIELD(arg0, u8 *, 0xC3) & 1) && (M2C_FIELD(arg0, void **, 0x90) != &D_801B0750)) { + func_8012A828(arg0, &D_801B0750); + } +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80183360); + + +extern void func_8012A828(s32 a0, void *a1); +extern u8 D_801B0BD8; + +void func_801833EC(s32 a0) { + *(s16 *)(a0 + 0x2) = 2; + func_8012A828(a0, &D_801B0BD8); + *(s32 *)(a0 + 0x1C) = 0x14; +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8018342C); + + +// @class: schedule +// @stuck: none — MATCH (44 ins). Two §3-T4 branch-polarity inversions: outer if(param_2>=iVar2) makes the func_8018352C else-block fall-through; inner if(param_3>=iVar2) return 0 makes the func_8012A828 body fall-through. No pins needed — natural $s1/$s0/$s2 alloc matched. +extern s32 func_8012BCCC(s32 a0); +extern void func_8018352C(s32 param_1); +extern void func_8012A828(s32 a0, void *a1); +extern u8 D_801B0B30; + +s32 func_8018347C(s32 param_1, s32 param_2, s32 param_3) { + s32 iVar2; + s16 sVar1; + + iVar2 = func_8012BCCC(param_1); + if (param_2 >= iVar2) { + func_8018352C(param_1); + return 1; + } + sVar1 = *(s16 *)(param_1 + 0xdc) + 1; + *(s16 *)(param_1 + 0xdc) = sVar1; + if (sVar1 < 0x79) { + return 0; + } + if (param_3 >= iVar2) { + return 0; + } + *(s16 *)(param_1 + 2) = 1; + func_8012A828(param_1, &D_801B0B30); + return 1; +} + + + +// @class: plumbing +// @stuck: none — MATCH (straightforward; callee sigs canonical from overlay) +extern void func_8012A828(s32 a0, void *a1); +extern void func_80142414(s32 a0, s16 a1); +extern u8 D_801B08F0; + +void func_8018352C(s32 param_1) { + *(s16 *)(param_1 + 2) = 4; + func_8012A828(param_1, &D_801B08F0); + *(s32 *)(param_1 + 0x1c) = 0x1e; + if (*(s16 *)(param_1 + 0xfc) == 0) { + *(s16 *)(param_1 + 0xfc) = 1; + ((void (*)(s32, s32))func_80142414)(param_1, -0x96); + } +} + + +void func_80183588(void *a0) { + *(short *)((char *)a0 + 0x2) = 0x5; + *(int *)((char *)a0 + 0x1c) = 0x14; + } + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_8018359C); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80183750); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80183798); + + +extern void (*D_801A8C90[])(void); + +void func_801838E4(void *a0) { + D_801A8C90[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80183920); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801839A8); + + +extern void func_8012B2CC(s32 a0); +extern void func_8012B200(u8 *a0); +extern void func_8012B178(s32 a0, s32 a1); + +void func_80183A80(u8 *a0) { + u8 *p = *(u8 **)(a0 + 0x20); + u16 v = *(u16 *)(a0 + 0xFC); + *(s16 *)(a0 + 0x2) = 2; + *(s32 *)(a0 + 0x1C) = 0x50; + *(s16 *)(p + 0x12) = v; + func_8012B2CC((s32)a0); + func_8012B200(a0); + func_8012B178((s32)a0, 0xFFF00000); +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80183AD8); + + +extern void func_80016714(void *a0, s32 a1); + extern void func_8012C218(void *a0); + void func_80183B64(s32 param_1) { + s32 iVar1; + iVar1 = *(s32 *)(param_1 + 0xcc); + ((void (*)(s32 *, s32))func_80016714)((s32 *)iVar1, 0x38); + ((void (*)(s32))func_8012C218)(param_1); + } + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80183B9C); + +extern s32 func_8012BEE8(s32 arg); + extern void func_8018342C(s32 a0); + void func_80183C08(s32 a0) { + if (func_8012BEE8(a0)) { + ((void (*)(s32))func_8018342C)(a0); + } + } + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80183C40); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80183CA4); + +void func_80183CFC(void) { +} + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80183D04); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80183DBC); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80183E2C); + + +extern void (*D_801B0DF4[])(void); + +void func_80183FA0(void *a0) { + D_801B0DF4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80183FDC); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801840D8); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80184368); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801844FC); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80184554); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_801845D0); + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80184614); + + + + diff --git a/src/ov_SC04_005/ov_SC04_005_jr_8017A4AC.c b/src/ov_SC04_005/ov_SC04_005_jr_8017A4AC.c index bfe464c9c..9c31d76ec 100644 --- a/src/ov_SC04_005/ov_SC04_005_jr_8017A4AC.c +++ b/src/ov_SC04_005/ov_SC04_005_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801C198C; - extern s16 D_801C198E; - extern s16 D_801C1990; - extern s16 D_801C1984; - extern s16 D_801C1986; - extern s16 D_801C1988; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C198C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C198E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C1990, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C1984, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C1986, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C1988, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801C1914; -extern u16 D_801C1994; -extern u16 D_801C1996; -extern u16 D_801C1998; -extern s16 D_801C22B8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801C22B8 = 0; - D_801C1914 = 0; - D_801C1994 = D_80126B5E; - D_801C1996 = D_80126B62; - D_801C1998 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018B434[]; - extern s16 D_801C198C; - extern s16 D_801C1984; - 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_8018B434[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018B434[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C198C; - s16 *p78C = &D_801C1984; - *(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_801C22B8 = 1; - D_801C1914 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C1934; - extern SV4_8017B368 D_801C193C; - extern s16 D_801C198C; - extern s16 D_801C1984; - extern u16 D_8018B434; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801C1934; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801C193C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018B434)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018B434)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801C198C) = loc0; - (*(SV4_8017B368 *)&D_801C1984) = loc1; - D_801C22B8 = 1; - D_801C1914 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018B434[]; - extern s16 D_801C198C; - extern s16 D_801C198E; - extern s16 D_801C1990; - extern s16 D_801C1984; - extern s16 D_801C1986; - extern s16 D_801C1988; - 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_8018B434[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018B434[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C198C; - s16 *p78C = &D_801C1984; - *(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_801C198E; - v798 = D_801C1990; - v78C = *p78C; - v78E = D_801C1986; - v790 = D_801C1988; - __asm__ __volatile__(""); - D_801C22B8 = 1; - D_801C1914 = 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_801C1914; -extern s16 D_801C198C; -extern s16 D_801C198E; -extern s16 D_801C1990; -extern s16 D_801C1984; -extern s16 D_801C1986; -extern s16 D_801C1988; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801C1914 = 0; - D_801C198C = (s16) D_80114F30; - D_801C198E = (s16) D_80114F34; - D_801C1990 = (s16) D_80114F38; - D_801C1984 = (s16) D_80114F24; - D_801C1986 = (s16) D_80114F28; - D_801C1988 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801C19A4; -extern s16 D_801C19A6; -extern s16 D_801C19A8; -extern s16 D_801C19AC; -extern s16 D_801C19AE; -extern s16 D_801C19B0; - -void func_8017B824(void) { - D_801C19A4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801C19A6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801C19A8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801C19AC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801C19AE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801C19B0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801C19A4; -extern s16 D_801C19A6; -extern s16 D_801C19A8; -extern s16 D_801C19AC; -extern s16 D_801C19AE; -extern s16 D_801C19B0; - -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_801C19A4; - D_80114F34 = D_801C19A6; - D_80114F38 = D_801C19A8; - D_80114F24 = D_801C19AC; - D_80114F28 = D_801C19AE; - D_80114F2C = D_801C19B0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801C198C), src[8..15] -> (*(S8_8017B8E8 *)&D_801C1984) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801C198C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801C1984) = ((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_801C1994; -extern u16 D_801C1996; -extern u16 D_801C1998; - -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_801C1914; -extern short D_801C199C; -extern short D_801C199E; -extern short D_801C19A0; -extern s16 D_801C198C; -extern s16 D_801C198E; -extern s16 D_801C1990; -extern s16 D_801C1984; -extern s16 D_801C1986; -extern s16 D_801C1988; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C1994); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C1996); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C1998); - (*(s16 *)&D_801C199C) = buf[0]; - (*(s16 *)&D_801C199E) = buf[1]; - (*(s16 *)&D_801C19A0) = buf[2]; - D_801C198C = D_80114F30 + buf[0]; - D_801C1914 = 0; - D_801C198E = D_80114F34 + buf[1]; - D_801C1990 = D_80114F38 + buf[2]; - D_801C1984 = D_80114F24 + buf[0]; - D_801C1986 = D_80114F28 + buf[1]; - D_801C1988 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801C1934; -extern SV4 D_801C193C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C193C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801C1934 = 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_801C193C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C193C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801C1934) = 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_801C193C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801C195C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801C195C; - 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_801C1914; -extern s16 D_801C22B8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801C1914 = D_801C1914 + 1; - if (D_801C1914 >= 0x1F) { - D_801C22B8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801C1914; -extern s16 D_801C22B8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801C1914 = D_801C1914 + 1; - if (0x18 < D_801C1914) { - func_8012A4BC(); - D_801C22B8 = 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_801C1914; -extern void (*D_801C1958)(void); -extern short D_801C199C; -extern short D_801C199E; -extern short D_801C19A0; -extern s16 D_801C22B8; - -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_801C1914 = D_801C1914 + 1; - if (D_801C1914 >= 0x19) { - if (D_801C1958 != 0) { - (*D_801C1958)(); - } else { - D_80114F30 = D_80114F30 + D_801C199C; - D_80114F34 = D_80114F34 + D_801C199E; - D_80114F38 = D_80114F38 + D_801C19A0; - D_80114F24 = D_80114F24 + D_801C199C; - D_80114F28 = D_80114F28 + D_801C199E; - D_80114F2C = D_80114F2C + D_801C19A0; - func_8012A4BC(); - } - D_801C22B8 = 0; - } -} - - - -extern void (*D_8018B4D4[])(void); - -void func_8017BE60(void *a0) { - D_8018B4D4[*(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) */ diff --git a/src/ov_SC04_005/ov_SC04_005_jr_8017AE2C.c b/src/ov_SC04_005/ov_SC04_005_jr_8017AE2C.c new file mode 100644 index 000000000..b6193b265 --- /dev/null +++ b/src/ov_SC04_005/ov_SC04_005_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018A02C; +extern u8 D_80189F9C; +extern u8 D_80189F78; +extern u8 D_80189F54; +extern u8 D_8018A008; +extern u8 D_80189FE4; +extern u8 D_80189FC0; +extern u8 D_80189F30; +extern void func_80145934(void); +extern u8 D_8018A0BC; +extern u8 D_8018A098; +extern u8 D_8018A074; +extern u8 D_8018A050; +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_801894B4[]; +extern unsigned char D_801894E4[]; +extern unsigned char D_80189534[]; +extern unsigned char D_80189564[]; +extern unsigned char D_80189594[]; +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(void); +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_801895E4[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_801896AC[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80189734[]; +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_8018973C; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801C0810; +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_801C0814; +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_8018976C; +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 void 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_80189814[])(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_80189838[])(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_80189828; +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_8018984C[])(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_80189858[]; +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_80189868[])(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_80189880[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80189870; +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_80189894[])(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_801898B0[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801898A0; +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_801898C4[])(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_801898D8[])(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_801898EC; +extern void (*D_80189914[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801898F4; +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_80189960[])(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_80189964[])(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(void *a0); +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_80189DC8[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80189DD8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801C0848; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80189E00[])(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_80189DE0; +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_80189DF0; +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_80189E40[])(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_80189E48[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80189E14; +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_80189E54[])(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_80189E24; +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_801C0850; +extern s32 D_801C085C; +extern s32 D_801C0860; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80189E90[])(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_80189E64[]; +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_801C0858; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018A0E0[])(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_80189F00[]; +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_8018A184[])(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_8018A2D8[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018A0F4; +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_8018A2E0[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018A104; +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_8018A124; +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_8018A2E8[])(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(void); +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_8018A310[])(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_8018A31C[])(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_8018A190[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018A3C0; +extern void func_8015D380(s32 a0); +extern unsigned char D_801894A4[]; +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_8018A3D4[]; +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_8018A410[]; +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_8018A458; +extern u16 D_8018A45A; +extern u16 D_8018A45C; +extern s32 D_8018A460; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018A468; +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_8018A174; +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_8018A4EC[]; +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_8018A59C[])(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_8018A5CC[]; +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_8018A630; +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_801C0868[]; +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_8018A654[])(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_801C08C0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018A69C[])(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_8018A68C; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801C0120[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_8018A6A4[])(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_8018A6F8[])(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_8018A6C0; +extern s16 D_8018A6F4; +extern s16 D_8018A6F2; +extern s16 D_8018A6F0; +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_8018A704[])(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_801C0920; +extern u8 D_801C0921; +extern u8 D_801C0922; +extern u8 D_801C0923; +extern u8 D_801C0924; +extern u8 D_801C0925; +extern u8 D_801C0926; +extern u8 D_801C0927; +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_8018A714[])(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_801C0960; +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_8018A758[])(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_8018A7D4[]; +extern s32 D_8018A7F4[]; +extern u8 D_8018A870[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018A890[]; +extern u8 D_8018A8B0[]; +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_8018A94C[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018A9C8[])(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_801C0130; +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_8018A9D4[])(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_8018A9DC[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018AAA4[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018AAB4[])(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_8018AAC4[])(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_8018AAD0[])(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_8018AA30[]; +extern u8 D_8018AA44[]; +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_8018AAE8[])(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_8018AAF0[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018AAF8[])(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_8018AB00[])(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_8018AB08[])(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_8018AB10[])(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_8018AB18[])(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_8018ABCC[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018ABD4[])(void); +extern void func_80169F00(void *a0); +extern char D_8018AB84[]; +extern char D_8018AB44[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018AC0C[])(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_8018AC18[])(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_8018AC60[])(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_8018ACDC[])(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_801C0C80; +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_8018ACD0[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018AD14[]; +extern unsigned short D_8018AD1C[]; +extern unsigned short D_8018AD24[]; +extern unsigned char D_801C0C88[]; +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_801C0C80; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018AD2C[])(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_801C0DBC; +extern M2C_UNK D_801C0DC0; +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_801C0D48; +extern void (*D_8018AD5C[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801C0DC4[]; +extern u8 D_801C0DCC[]; +extern u8 D_801C0D7C[]; +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_8018AD64[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018AD80[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018AD88[])(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_8018ADF0[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018AD94; +extern u8 D_8018ADA0; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018AE24[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018AE2C[])(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_8018AE80[])(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_8018AEB4[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018AEA4[]; +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_8018AED0; +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); +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_8018AF48[])(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_8018AF50[])(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_8018AF58[])(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_8018AF60[])(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_8018AF68[])(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_8018AF70[])(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_8018AF7C[])(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_8018AF88[])(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_8018AF94[])(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_8018AFA4[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018AFB4[])(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_8018AFBC[])(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_8018AFC4[])(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_8018AFCC[])(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_8018AFD4[])(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_8018AFDC[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018AFE4[])(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_8018AFEC[])(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_8018AFF4[])(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_8018AFFC[])(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_8018B004[])(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_8018B00C[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018B014[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018B01C[])(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_8018B024[])(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_8018B02C[])(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_8018B034[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018B03C[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018B044[])(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_8018B04C[])(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_8018B054[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018B05C[])(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_8018B064[])(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_8018B0A8[])(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_8018B06C; +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_8018B0D8[])(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_8018B114[])(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(s32); +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_8018B16C[])(); +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_8018B17C[])(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_8018B184[])(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_8018B2EC[])(); +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_8018B2F8[])(); +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_801C0378; +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 int func_801789AC(void); +extern s16 D_801C22B8; +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_801C1500; +extern short D_801C232C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801C192C; +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_801C1954; +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_801C1910; +extern s32 func_8017A3B0(void); +extern short D_801C194C; +extern short D_801C1948; +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_801C2288; +extern s16 D_801C228A; +extern s16 D_801C2294; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801C2288; + + 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_801C2294); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801C2288+0xC == &D_801C2294; 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_801C2288 + 0xC)) < 0x101) { + D_801C2288 = 0; + D_801C228A = 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_801C2294); + 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_801C2288 + 0xC)) < 0x101) { + D_801C2288 = 0; + D_801C228A = 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_801C198C; + extern s16 D_801C198E; + extern s16 D_801C1990; + extern s16 D_801C1984; + extern s16 D_801C1986; + extern s16 D_801C1988; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C198C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C198E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C1990, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C1984, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C1986, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C1988, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801C1914; +extern u16 D_801C1994; +extern u16 D_801C1996; +extern u16 D_801C1998; +extern s16 D_801C22B8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801C22B8 = 0; + D_801C1914 = 0; + D_801C1994 = D_80126B5E; + D_801C1996 = D_80126B62; + D_801C1998 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018B434[]; + extern s16 D_801C198C; + extern s16 D_801C1984; + 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_8018B434[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018B434[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C198C; + s16 *p78C = &D_801C1984; + *(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_801C22B8 = 1; + D_801C1914 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C1934; + extern SV4_8017B368 D_801C193C; + extern s16 D_801C198C; + extern s16 D_801C1984; + extern u16 D_8018B434; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801C1934; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801C193C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018B434)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018B434)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801C198C) = loc0; + (*(SV4_8017B368 *)&D_801C1984) = loc1; + D_801C22B8 = 1; + D_801C1914 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018B434[]; + extern s16 D_801C198C; + extern s16 D_801C198E; + extern s16 D_801C1990; + extern s16 D_801C1984; + extern s16 D_801C1986; + extern s16 D_801C1988; + 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_8018B434[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018B434[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C198C; + s16 *p78C = &D_801C1984; + *(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_801C198E; + v798 = D_801C1990; + v78C = *p78C; + v78E = D_801C1986; + v790 = D_801C1988; + __asm__ __volatile__(""); + D_801C22B8 = 1; + D_801C1914 = 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_801C1914; +extern s16 D_801C198C; +extern s16 D_801C198E; +extern s16 D_801C1990; +extern s16 D_801C1984; +extern s16 D_801C1986; +extern s16 D_801C1988; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801C1914 = 0; + D_801C198C = (s16) D_80114F30; + D_801C198E = (s16) D_80114F34; + D_801C1990 = (s16) D_80114F38; + D_801C1984 = (s16) D_80114F24; + D_801C1986 = (s16) D_80114F28; + D_801C1988 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801C19A4; +extern s16 D_801C19A6; +extern s16 D_801C19A8; +extern s16 D_801C19AC; +extern s16 D_801C19AE; +extern s16 D_801C19B0; + +void func_8017B824(void) { + D_801C19A4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801C19A6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801C19A8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801C19AC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801C19AE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801C19B0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801C19A4; +extern s16 D_801C19A6; +extern s16 D_801C19A8; +extern s16 D_801C19AC; +extern s16 D_801C19AE; +extern s16 D_801C19B0; + +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_801C19A4; + D_80114F34 = D_801C19A6; + D_80114F38 = D_801C19A8; + D_80114F24 = D_801C19AC; + D_80114F28 = D_801C19AE; + D_80114F2C = D_801C19B0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801C198C), src[8..15] -> (*(S8_8017B8E8 *)&D_801C1984) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801C198C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801C1984) = ((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_801C1994; +extern u16 D_801C1996; +extern u16 D_801C1998; + +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_801C1914; +extern short D_801C199C; +extern short D_801C199E; +extern short D_801C19A0; +extern s16 D_801C198C; +extern s16 D_801C198E; +extern s16 D_801C1990; +extern s16 D_801C1984; +extern s16 D_801C1986; +extern s16 D_801C1988; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C1994); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C1996); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C1998); + (*(s16 *)&D_801C199C) = buf[0]; + (*(s16 *)&D_801C199E) = buf[1]; + (*(s16 *)&D_801C19A0) = buf[2]; + D_801C198C = D_80114F30 + buf[0]; + D_801C1914 = 0; + D_801C198E = D_80114F34 + buf[1]; + D_801C1990 = D_80114F38 + buf[2]; + D_801C1984 = D_80114F24 + buf[0]; + D_801C1986 = D_80114F28 + buf[1]; + D_801C1988 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801C1934; +extern SV4 D_801C193C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C193C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801C1934 = 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_801C193C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C193C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801C1934) = 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_801C193C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801C195C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801C195C; + 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_801C1914; +extern s16 D_801C22B8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801C1914 = D_801C1914 + 1; + if (D_801C1914 >= 0x1F) { + D_801C22B8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801C1914; +extern s16 D_801C22B8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801C1914 = D_801C1914 + 1; + if (0x18 < D_801C1914) { + func_8012A4BC(); + D_801C22B8 = 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_801C1914; +extern void (*D_801C1958)(void); +extern short D_801C199C; +extern short D_801C199E; +extern short D_801C19A0; +extern s16 D_801C22B8; + +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_801C1914 = D_801C1914 + 1; + if (D_801C1914 >= 0x19) { + if (D_801C1958 != 0) { + (*D_801C1958)(); + } else { + D_80114F30 = D_80114F30 + D_801C199C; + D_80114F34 = D_80114F34 + D_801C199E; + D_80114F38 = D_80114F38 + D_801C19A0; + D_80114F24 = D_80114F24 + D_801C199C; + D_80114F28 = D_80114F28 + D_801C199E; + D_80114F2C = D_80114F2C + D_801C19A0; + func_8012A4BC(); + } + D_801C22B8 = 0; + } +} + + + +extern void (*D_8018B4D4[])(void); + +void func_8017BE60(void *a0) { + D_8018B4D4[*(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) */ + diff --git a/src/ov_SC04_006/ov_SC04_006_jr_8017A4AC.c b/src/ov_SC04_006/ov_SC04_006_jr_8017A4AC.c index 7047b240e..18cf0dd5b 100644 --- a/src/ov_SC04_006/ov_SC04_006_jr_8017A4AC.c +++ b/src/ov_SC04_006/ov_SC04_006_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8019DC34; - extern s16 D_8019DC36; - extern s16 D_8019DC38; - extern s16 D_8019DC2C; - extern s16 D_8019DC2E; - extern s16 D_8019DC30; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019DC34, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019DC36, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019DC38, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019DC2C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019DC2E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019DC30, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8019DBBC; -extern u16 D_8019DC3C; -extern u16 D_8019DC3E; -extern u16 D_8019DC40; -extern s16 D_8019DD58; - -void func_8017B1D8(void) { - func_8012A418(); - D_8019DD58 = 0; - D_8019DBBC = 0; - D_8019DC3C = D_80126B5E; - D_8019DC3E = D_80126B62; - D_8019DC40 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80183514[]; - extern s16 D_8019DC34; - extern s16 D_8019DC2C; - 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_80183514[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80183514[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019DC34; - s16 *p78C = &D_8019DC2C; - *(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_8019DD58 = 1; - D_8019DBBC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019DBDC; - extern SV4_8017B368 D_8019DBE4; - extern s16 D_8019DC34; - extern s16 D_8019DC2C; - extern u16 D_80183514; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8019DBDC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8019DBE4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80183514)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80183514)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8019DC34) = loc0; - (*(SV4_8017B368 *)&D_8019DC2C) = loc1; - D_8019DD58 = 1; - D_8019DBBC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80183514[]; - extern s16 D_8019DC34; - extern s16 D_8019DC36; - extern s16 D_8019DC38; - extern s16 D_8019DC2C; - extern s16 D_8019DC2E; - extern s16 D_8019DC30; - 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_80183514[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80183514[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019DC34; - s16 *p78C = &D_8019DC2C; - *(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_8019DC36; - v798 = D_8019DC38; - v78C = *p78C; - v78E = D_8019DC2E; - v790 = D_8019DC30; - __asm__ __volatile__(""); - D_8019DD58 = 1; - D_8019DBBC = 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_8019DBBC; -extern s16 D_8019DC34; -extern s16 D_8019DC36; -extern s16 D_8019DC38; -extern s16 D_8019DC2C; -extern s16 D_8019DC2E; -extern s16 D_8019DC30; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8019DBBC = 0; - D_8019DC34 = (s16) D_80114F30; - D_8019DC36 = (s16) D_80114F34; - D_8019DC38 = (s16) D_80114F38; - D_8019DC2C = (s16) D_80114F24; - D_8019DC2E = (s16) D_80114F28; - D_8019DC30 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8019DC4C; -extern s16 D_8019DC4E; -extern s16 D_8019DC50; -extern s16 D_8019DC54; -extern s16 D_8019DC56; -extern s16 D_8019DC58; - -void func_8017B824(void) { - D_8019DC4C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8019DC4E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8019DC50 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8019DC54 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8019DC56 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8019DC58 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8019DC4C; -extern s16 D_8019DC4E; -extern s16 D_8019DC50; -extern s16 D_8019DC54; -extern s16 D_8019DC56; -extern s16 D_8019DC58; - -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_8019DC4C; - D_80114F34 = D_8019DC4E; - D_80114F38 = D_8019DC50; - D_80114F24 = D_8019DC54; - D_80114F28 = D_8019DC56; - D_80114F2C = D_8019DC58; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8019DC34), src[8..15] -> (*(S8_8017B8E8 *)&D_8019DC2C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8019DC34) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8019DC2C) = ((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_8019DC3C; -extern u16 D_8019DC3E; -extern u16 D_8019DC40; - -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_8019DBBC; -extern short D_8019DC44; -extern short D_8019DC46; -extern short D_8019DC48; -extern s16 D_8019DC34; -extern s16 D_8019DC36; -extern s16 D_8019DC38; -extern s16 D_8019DC2C; -extern s16 D_8019DC2E; -extern s16 D_8019DC30; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019DC3C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019DC3E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019DC40); - (*(s16 *)&D_8019DC44) = buf[0]; - (*(s16 *)&D_8019DC46) = buf[1]; - (*(s16 *)&D_8019DC48) = buf[2]; - D_8019DC34 = D_80114F30 + buf[0]; - D_8019DBBC = 0; - D_8019DC36 = D_80114F34 + buf[1]; - D_8019DC38 = D_80114F38 + buf[2]; - D_8019DC2C = D_80114F24 + buf[0]; - D_8019DC2E = D_80114F28 + buf[1]; - D_8019DC30 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8019DBDC; -extern SV4 D_8019DBE4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019DBE4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8019DBDC = 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_8019DBE4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019DBE4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8019DBDC) = 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_8019DBE4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8019DC04[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8019DC04; - 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_8019DBBC; -extern s16 D_8019DD58; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8019DBBC = D_8019DBBC + 1; - if (D_8019DBBC >= 0x1F) { - D_8019DD58 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8019DBBC; -extern s16 D_8019DD58; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8019DBBC = D_8019DBBC + 1; - if (0x18 < D_8019DBBC) { - func_8012A4BC(); - D_8019DD58 = 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_8019DBBC; -extern void (*D_8019DC00)(void); -extern short D_8019DC44; -extern short D_8019DC46; -extern short D_8019DC48; -extern s16 D_8019DD58; - -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_8019DBBC = D_8019DBBC + 1; - if (D_8019DBBC >= 0x19) { - if (D_8019DC00 != 0) { - (*D_8019DC00)(); - } else { - D_80114F30 = D_80114F30 + D_8019DC44; - D_80114F34 = D_80114F34 + D_8019DC46; - D_80114F38 = D_80114F38 + D_8019DC48; - D_80114F24 = D_80114F24 + D_8019DC44; - D_80114F28 = D_80114F28 + D_8019DC46; - D_80114F2C = D_80114F2C + D_8019DC48; - func_8012A4BC(); - } - D_8019DD58 = 0; - } -} - - - -extern void (*D_801835B4[])(void); - -void func_8017BE60(void *a0) { - D_801835B4[*(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) */ diff --git a/src/ov_SC04_006/ov_SC04_006_jr_8017AE2C.c b/src/ov_SC04_006/ov_SC04_006_jr_8017AE2C.c new file mode 100644 index 000000000..6360042ce --- /dev/null +++ b/src/ov_SC04_006/ov_SC04_006_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018210C; +extern u8 D_8018207C; +extern u8 D_80182058; +extern u8 D_80182034; +extern u8 D_801820E8; +extern u8 D_801820C4; +extern u8 D_801820A0; +extern u8 D_80182010; +extern void func_80145934(void); +extern u8 D_8018219C; +extern u8 D_80182178; +extern u8 D_80182154; +extern u8 D_80182130; +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_80181594[]; +extern unsigned char D_801815C4[]; +extern unsigned char D_80181614[]; +extern unsigned char D_80181644[]; +extern unsigned char D_80181674[]; +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(void); +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_801816C4[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018178C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80181814[]; +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_8018181C; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8019CAB8; +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_8019CABC; +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_8018184C; +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 void 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_801818F4[])(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_80181918[])(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_80181908; +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_8018192C[])(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_80181938[]; +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_80181948[])(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_80181960[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80181950; +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_80181974[])(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_80181990[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181980; +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_801819A4[])(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_801819B8[])(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_801819CC; +extern void (*D_801819F4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801819D4; +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_80181A40[])(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_80181A44[])(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(void *a0); +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_80181EA8[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80181EB8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8019CAF0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80181EE0[])(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_80181EC0; +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_80181ED0; +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_80181F20[])(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_80181F28[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80181EF4; +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_80181F34[])(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_80181F04; +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_8019CAF8; +extern s32 D_8019CB04; +extern s32 D_8019CB08; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80181F70[])(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_80181F44[]; +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_8019CB00; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801821C0[])(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_80181FE0[]; +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_80182264[])(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_801823B8[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801821D4; +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_801823C0[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801821E4; +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_80182204; +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_801823C8[])(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(void); +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_801823F0[])(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_801823FC[])(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_80182270[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801824A0; +extern void func_8015D380(s32 a0); +extern unsigned char D_80181584[]; +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_801824B4[]; +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_801824F0[]; +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_80182538; +extern u16 D_8018253A; +extern u16 D_8018253C; +extern s32 D_80182540; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80182548; +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_80182254; +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_801825CC[]; +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_8018267C[])(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_801826AC[]; +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_80182710; +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_8019CB10[]; +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_80182734[])(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_8019CB68[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018277C[])(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_8018276C; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8019C3C8[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_80182784[])(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_801827D8[])(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_801827A0; +extern s16 D_801827D4; +extern s16 D_801827D2; +extern s16 D_801827D0; +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_801827E4[])(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_8019CBC8; +extern u8 D_8019CBC9; +extern u8 D_8019CBCA; +extern u8 D_8019CBCB; +extern u8 D_8019CBCC; +extern u8 D_8019CBCD; +extern u8 D_8019CBCE; +extern u8 D_8019CBCF; +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_801827F4[])(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_8019CC08; +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_80182838[])(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_801828B4[]; +extern s32 D_801828D4[]; +extern u8 D_80182950[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80182970[]; +extern u8 D_80182990[]; +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_80182A2C[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80182AA8[])(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_8019C3D8; +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_80182AB4[])(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_80182ABC[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80182B84[])(void); +extern void func_80166618(void *a0); +extern void (*D_80182B94[])(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_80182BA4[])(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_80182BB0[])(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_80182B10[]; +extern u8 D_80182B24[]; +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_80182BC8[])(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_80182BD0[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80182BD8[])(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_80182BE0[])(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_80182BE8[])(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_80182BF0[])(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_80182BF8[])(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_80182CAC[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80182CB4[])(void); +extern void func_80169F00(void *a0); +extern char D_80182C64[]; +extern char D_80182C24[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80182CEC[])(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_80182CF8[])(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_80182D40[])(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_80182DBC[])(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_8019CF28; +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_80182DB0[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80182DF4[]; +extern unsigned short D_80182DFC[]; +extern unsigned short D_80182E04[]; +extern unsigned char D_8019CF30[]; +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_8019CF28; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80182E0C[])(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_8019D064; +extern M2C_UNK D_8019D068; +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_8019CFF0; +extern void (*D_80182E3C[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8019D06C[]; +extern u8 D_8019D074[]; +extern u8 D_8019D024[]; +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_80182E44[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80182E60[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80182E68[])(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_80182ED0[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80182E74; +extern u8 D_80182E80; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80182F04[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80182F0C[])(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_80182F60[])(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_80182F94[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80182F84[]; +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_80182FB0; +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); +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_80183028[])(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_80183030[])(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_80183038[])(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_80183040[])(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_80183048[])(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_80183050[])(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_8018305C[])(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_80183068[])(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_80183074[])(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_80183084[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80183094[])(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_8018309C[])(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_801830A4[])(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_801830AC[])(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_801830B4[])(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_801830BC[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801830C4[])(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_801830CC[])(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_801830D4[])(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_801830DC[])(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_801830E4[])(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_801830EC[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801830F4[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801830FC[])(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_80183104[])(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_8018310C[])(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_80183114[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018311C[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80183124[])(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_8018312C[])(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_80183134[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018313C[])(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_80183144[])(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_80183188[])(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_8018314C; +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_801831B8[])(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_801831F4[])(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(s32); +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_8018324C[])(); +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_8018325C[])(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_80183264[])(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_801833CC[])(); +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_801833D8[])(); +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_8019C620; +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 int func_801789AC(void); +extern s16 D_8019DD58; +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_8019D7A8; +extern short D_8019DDCC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8019DBD4; +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_8019DBFC; +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_8019DBB8; +extern s32 func_8017A3B0(void); +extern short D_8019DBF4; +extern short D_8019DBF0; +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_8019DD28; +extern s16 D_8019DD2A; +extern s16 D_8019DD34; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_8019DD28; + + 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_8019DD34); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_8019DD28+0xC == &D_8019DD34; 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_8019DD28 + 0xC)) < 0x101) { + D_8019DD28 = 0; + D_8019DD2A = 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_8019DD34); + 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_8019DD28 + 0xC)) < 0x101) { + D_8019DD28 = 0; + D_8019DD2A = 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_8019DC34; + extern s16 D_8019DC36; + extern s16 D_8019DC38; + extern s16 D_8019DC2C; + extern s16 D_8019DC2E; + extern s16 D_8019DC30; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019DC34, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019DC36, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019DC38, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019DC2C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019DC2E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019DC30, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8019DBBC; +extern u16 D_8019DC3C; +extern u16 D_8019DC3E; +extern u16 D_8019DC40; +extern s16 D_8019DD58; + +void func_8017B1D8(void) { + func_8012A418(); + D_8019DD58 = 0; + D_8019DBBC = 0; + D_8019DC3C = D_80126B5E; + D_8019DC3E = D_80126B62; + D_8019DC40 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80183514[]; + extern s16 D_8019DC34; + extern s16 D_8019DC2C; + 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_80183514[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80183514[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019DC34; + s16 *p78C = &D_8019DC2C; + *(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_8019DD58 = 1; + D_8019DBBC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019DBDC; + extern SV4_8017B368 D_8019DBE4; + extern s16 D_8019DC34; + extern s16 D_8019DC2C; + extern u16 D_80183514; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8019DBDC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8019DBE4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80183514)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80183514)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8019DC34) = loc0; + (*(SV4_8017B368 *)&D_8019DC2C) = loc1; + D_8019DD58 = 1; + D_8019DBBC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80183514[]; + extern s16 D_8019DC34; + extern s16 D_8019DC36; + extern s16 D_8019DC38; + extern s16 D_8019DC2C; + extern s16 D_8019DC2E; + extern s16 D_8019DC30; + 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_80183514[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80183514[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019DC34; + s16 *p78C = &D_8019DC2C; + *(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_8019DC36; + v798 = D_8019DC38; + v78C = *p78C; + v78E = D_8019DC2E; + v790 = D_8019DC30; + __asm__ __volatile__(""); + D_8019DD58 = 1; + D_8019DBBC = 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_8019DBBC; +extern s16 D_8019DC34; +extern s16 D_8019DC36; +extern s16 D_8019DC38; +extern s16 D_8019DC2C; +extern s16 D_8019DC2E; +extern s16 D_8019DC30; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8019DBBC = 0; + D_8019DC34 = (s16) D_80114F30; + D_8019DC36 = (s16) D_80114F34; + D_8019DC38 = (s16) D_80114F38; + D_8019DC2C = (s16) D_80114F24; + D_8019DC2E = (s16) D_80114F28; + D_8019DC30 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8019DC4C; +extern s16 D_8019DC4E; +extern s16 D_8019DC50; +extern s16 D_8019DC54; +extern s16 D_8019DC56; +extern s16 D_8019DC58; + +void func_8017B824(void) { + D_8019DC4C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8019DC4E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8019DC50 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8019DC54 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8019DC56 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8019DC58 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8019DC4C; +extern s16 D_8019DC4E; +extern s16 D_8019DC50; +extern s16 D_8019DC54; +extern s16 D_8019DC56; +extern s16 D_8019DC58; + +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_8019DC4C; + D_80114F34 = D_8019DC4E; + D_80114F38 = D_8019DC50; + D_80114F24 = D_8019DC54; + D_80114F28 = D_8019DC56; + D_80114F2C = D_8019DC58; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8019DC34), src[8..15] -> (*(S8_8017B8E8 *)&D_8019DC2C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8019DC34) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8019DC2C) = ((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_8019DC3C; +extern u16 D_8019DC3E; +extern u16 D_8019DC40; + +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_8019DBBC; +extern short D_8019DC44; +extern short D_8019DC46; +extern short D_8019DC48; +extern s16 D_8019DC34; +extern s16 D_8019DC36; +extern s16 D_8019DC38; +extern s16 D_8019DC2C; +extern s16 D_8019DC2E; +extern s16 D_8019DC30; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019DC3C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019DC3E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019DC40); + (*(s16 *)&D_8019DC44) = buf[0]; + (*(s16 *)&D_8019DC46) = buf[1]; + (*(s16 *)&D_8019DC48) = buf[2]; + D_8019DC34 = D_80114F30 + buf[0]; + D_8019DBBC = 0; + D_8019DC36 = D_80114F34 + buf[1]; + D_8019DC38 = D_80114F38 + buf[2]; + D_8019DC2C = D_80114F24 + buf[0]; + D_8019DC2E = D_80114F28 + buf[1]; + D_8019DC30 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8019DBDC; +extern SV4 D_8019DBE4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019DBE4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8019DBDC = 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_8019DBE4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019DBE4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8019DBDC) = 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_8019DBE4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8019DC04[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8019DC04; + 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_8019DBBC; +extern s16 D_8019DD58; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8019DBBC = D_8019DBBC + 1; + if (D_8019DBBC >= 0x1F) { + D_8019DD58 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8019DBBC; +extern s16 D_8019DD58; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8019DBBC = D_8019DBBC + 1; + if (0x18 < D_8019DBBC) { + func_8012A4BC(); + D_8019DD58 = 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_8019DBBC; +extern void (*D_8019DC00)(void); +extern short D_8019DC44; +extern short D_8019DC46; +extern short D_8019DC48; +extern s16 D_8019DD58; + +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_8019DBBC = D_8019DBBC + 1; + if (D_8019DBBC >= 0x19) { + if (D_8019DC00 != 0) { + (*D_8019DC00)(); + } else { + D_80114F30 = D_80114F30 + D_8019DC44; + D_80114F34 = D_80114F34 + D_8019DC46; + D_80114F38 = D_80114F38 + D_8019DC48; + D_80114F24 = D_80114F24 + D_8019DC44; + D_80114F28 = D_80114F28 + D_8019DC46; + D_80114F2C = D_80114F2C + D_8019DC48; + func_8012A4BC(); + } + D_8019DD58 = 0; + } +} + + + +extern void (*D_801835B4[])(void); + +void func_8017BE60(void *a0) { + D_801835B4[*(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) */ + diff --git a/src/ov_SC04_007/ov_SC04_007_jr_8017A4AC.c b/src/ov_SC04_007/ov_SC04_007_jr_8017A4AC.c index 808877f79..1b4988569 100644 --- a/src/ov_SC04_007/ov_SC04_007_jr_8017A4AC.c +++ b/src/ov_SC04_007/ov_SC04_007_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801B51EC; - extern s16 D_801B51EE; - extern s16 D_801B51F0; - extern s16 D_801B51E4; - extern s16 D_801B51E6; - extern s16 D_801B51E8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B51EC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B51EE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B51F0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B51E4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B51E6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B51E8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801B5174; -extern u16 D_801B51F4; -extern u16 D_801B51F6; -extern u16 D_801B51F8; -extern s16 D_801B5B18; - -void func_8017B1D8(void) { - func_8012A418(); - D_801B5B18 = 0; - D_801B5174 = 0; - D_801B51F4 = D_80126B5E; - D_801B51F6 = D_80126B62; - D_801B51F8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_801894CC[]; - extern s16 D_801B51EC; - extern s16 D_801B51E4; - 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_801894CC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801894CC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B51EC; - s16 *p78C = &D_801B51E4; - *(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_801B5B18 = 1; - D_801B5174 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B5194; - extern SV4_8017B368 D_801B519C; - extern s16 D_801B51EC; - extern s16 D_801B51E4; - extern u16 D_801894CC; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801B5194; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801B519C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_801894CC)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_801894CC)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801B51EC) = loc0; - (*(SV4_8017B368 *)&D_801B51E4) = loc1; - D_801B5B18 = 1; - D_801B5174 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_801894CC[]; - extern s16 D_801B51EC; - extern s16 D_801B51EE; - extern s16 D_801B51F0; - extern s16 D_801B51E4; - extern s16 D_801B51E6; - extern s16 D_801B51E8; - 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_801894CC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801894CC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B51EC; - s16 *p78C = &D_801B51E4; - *(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_801B51EE; - v798 = D_801B51F0; - v78C = *p78C; - v78E = D_801B51E6; - v790 = D_801B51E8; - __asm__ __volatile__(""); - D_801B5B18 = 1; - D_801B5174 = 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_801B5174; -extern s16 D_801B51EC; -extern s16 D_801B51EE; -extern s16 D_801B51F0; -extern s16 D_801B51E4; -extern s16 D_801B51E6; -extern s16 D_801B51E8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801B5174 = 0; - D_801B51EC = (s16) D_80114F30; - D_801B51EE = (s16) D_80114F34; - D_801B51F0 = (s16) D_80114F38; - D_801B51E4 = (s16) D_80114F24; - D_801B51E6 = (s16) D_80114F28; - D_801B51E8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801B5204; -extern s16 D_801B5206; -extern s16 D_801B5208; -extern s16 D_801B520C; -extern s16 D_801B520E; -extern s16 D_801B5210; - -void func_8017B824(void) { - D_801B5204 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801B5206 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801B5208 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801B520C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801B520E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801B5210 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801B5204; -extern s16 D_801B5206; -extern s16 D_801B5208; -extern s16 D_801B520C; -extern s16 D_801B520E; -extern s16 D_801B5210; - -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_801B5204; - D_80114F34 = D_801B5206; - D_80114F38 = D_801B5208; - D_80114F24 = D_801B520C; - D_80114F28 = D_801B520E; - D_80114F2C = D_801B5210; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801B51EC), src[8..15] -> (*(S8_8017B8E8 *)&D_801B51E4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801B51EC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801B51E4) = ((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_801B51F4; -extern u16 D_801B51F6; -extern u16 D_801B51F8; - -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_801B5174; -extern short D_801B51FC; -extern short D_801B51FE; -extern short D_801B5200; -extern s16 D_801B51EC; -extern s16 D_801B51EE; -extern s16 D_801B51F0; -extern s16 D_801B51E4; -extern s16 D_801B51E6; -extern s16 D_801B51E8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B51F4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B51F6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B51F8); - (*(s16 *)&D_801B51FC) = buf[0]; - (*(s16 *)&D_801B51FE) = buf[1]; - (*(s16 *)&D_801B5200) = buf[2]; - D_801B51EC = D_80114F30 + buf[0]; - D_801B5174 = 0; - D_801B51EE = D_80114F34 + buf[1]; - D_801B51F0 = D_80114F38 + buf[2]; - D_801B51E4 = D_80114F24 + buf[0]; - D_801B51E6 = D_80114F28 + buf[1]; - D_801B51E8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801B5194; -extern SV4 D_801B519C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B519C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801B5194 = 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_801B519C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B519C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801B5194) = 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_801B519C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801B51BC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801B51BC; - 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_801B5174; -extern s16 D_801B5B18; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801B5174 = D_801B5174 + 1; - if (D_801B5174 >= 0x1F) { - D_801B5B18 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801B5174; -extern s16 D_801B5B18; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801B5174 = D_801B5174 + 1; - if (0x18 < D_801B5174) { - func_8012A4BC(); - D_801B5B18 = 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_801B5174; -extern void (*D_801B51B8)(void); -extern short D_801B51FC; -extern short D_801B51FE; -extern short D_801B5200; -extern s16 D_801B5B18; - -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_801B5174 = D_801B5174 + 1; - if (D_801B5174 >= 0x19) { - if (D_801B51B8 != 0) { - (*D_801B51B8)(); - } else { - D_80114F30 = D_80114F30 + D_801B51FC; - D_80114F34 = D_80114F34 + D_801B51FE; - D_80114F38 = D_80114F38 + D_801B5200; - D_80114F24 = D_80114F24 + D_801B51FC; - D_80114F28 = D_80114F28 + D_801B51FE; - D_80114F2C = D_80114F2C + D_801B5200; - func_8012A4BC(); - } - D_801B5B18 = 0; - } -} - - - -extern void (*D_8018956C[])(void); - -void func_8017BE60(void *a0) { - D_8018956C[*(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) */ diff --git a/src/ov_SC04_007/ov_SC04_007_jr_8017AE2C.c b/src/ov_SC04_007/ov_SC04_007_jr_8017AE2C.c new file mode 100644 index 000000000..929791067 --- /dev/null +++ b/src/ov_SC04_007/ov_SC04_007_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801880C4; +extern u8 D_80188034; +extern u8 D_80188010; +extern u8 D_80187FEC; +extern u8 D_801880A0; +extern u8 D_8018807C; +extern u8 D_80188058; +extern u8 D_80187FC8; +extern void func_80145934(void); +extern u8 D_80188154; +extern u8 D_80188130; +extern u8 D_8018810C; +extern u8 D_801880E8; +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_8018754C[]; +extern unsigned char D_8018757C[]; +extern unsigned char D_801875CC[]; +extern unsigned char D_801875FC[]; +extern unsigned char D_8018762C[]; +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(void); +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_8018767C[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80187744[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801877CC[]; +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_801877D4; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801B4070; +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_801B4074; +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_80187804; +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 void 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_801878AC[])(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_801878D0[])(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_801878C0; +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_801878E4[])(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_801878F0[]; +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_80187900[])(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_80187918[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80187908; +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_8018792C[])(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_80187948[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80187938; +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_8018795C[])(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_80187970[])(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_80187984; +extern void (*D_801879AC[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018798C; +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_801879F8[])(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_801879FC[])(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(void *a0); +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_80187E60[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80187E70[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801B40A8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80187E98[])(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_80187E78; +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_80187E88; +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_80187ED8[])(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_80187EE0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80187EAC; +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_80187EEC[])(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_80187EBC; +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_801B40B0; +extern s32 D_801B40BC; +extern s32 D_801B40C0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80187F28[])(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_80187EFC[]; +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_801B40B8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80188178[])(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_80187F98[]; +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_8018821C[])(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_80188370[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018818C; +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_80188378[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018819C; +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_801881BC; +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_80188380[])(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(void); +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_801883A8[])(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_801883B4[])(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_80188228[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80188458; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018753C[]; +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_8018846C[]; +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_801884A8[]; +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_801884F0; +extern u16 D_801884F2; +extern u16 D_801884F4; +extern s32 D_801884F8; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80188500; +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_8018820C; +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_80188584[]; +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_80188634[])(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_80188664[]; +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_801886C8; +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_801B40C8[]; +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_801886EC[])(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_801B4120[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80188734[])(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_80188724; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801B3984[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_8018873C[])(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_80188790[])(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_80188758; +extern s16 D_8018878C; +extern s16 D_8018878A; +extern s16 D_80188788; +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_8018879C[])(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_801B4180; +extern u8 D_801B4181; +extern u8 D_801B4182; +extern u8 D_801B4183; +extern u8 D_801B4184; +extern u8 D_801B4185; +extern u8 D_801B4186; +extern u8 D_801B4187; +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_801887AC[])(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_801B41C0; +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_801887F0[])(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_8018886C[]; +extern s32 D_8018888C[]; +extern u8 D_80188908[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80188928[]; +extern u8 D_80188948[]; +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_801889E4[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80188A60[])(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_801B3994; +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_80188A6C[])(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_80188A74[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80188B3C[])(void); +extern void func_80166618(void *a0); +extern void (*D_80188B4C[])(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_80188B5C[])(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_80188B68[])(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_80188AC8[]; +extern u8 D_80188ADC[]; +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_80188B80[])(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_80188B88[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80188B90[])(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_80188B98[])(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_80188BA0[])(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_80188BA8[])(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_80188BB0[])(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_80188C64[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80188C6C[])(void); +extern void func_80169F00(void *a0); +extern char D_80188C1C[]; +extern char D_80188BDC[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80188CA4[])(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_80188CB0[])(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_80188CF8[])(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_80188D74[])(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_801B44E0; +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_80188D68[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80188DAC[]; +extern unsigned short D_80188DB4[]; +extern unsigned short D_80188DBC[]; +extern unsigned char D_801B44E8[]; +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_801B44E0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80188DC4[])(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_801B461C; +extern M2C_UNK D_801B4620; +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_801B45A8; +extern void (*D_80188DF4[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801B4624[]; +extern u8 D_801B462C[]; +extern u8 D_801B45DC[]; +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_80188DFC[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80188E18[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80188E20[])(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_80188E88[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80188E2C; +extern u8 D_80188E38; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80188EBC[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80188EC4[])(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_80188F18[])(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_80188F4C[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80188F3C[]; +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_80188F68; +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); +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_80188FE0[])(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_80188FE8[])(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_80188FF0[])(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_80188FF8[])(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_80189000[])(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_80189008[])(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_80189014[])(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_80189020[])(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_8018902C[])(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_8018903C[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018904C[])(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_80189054[])(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_8018905C[])(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_80189064[])(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_8018906C[])(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_80189074[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018907C[])(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_80189084[])(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_8018908C[])(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_80189094[])(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_8018909C[])(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_801890A4[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801890AC[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801890B4[])(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_801890BC[])(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_801890C4[])(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_801890CC[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801890D4[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801890DC[])(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_801890E4[])(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_801890EC[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801890F4[])(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_801890FC[])(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_80189140[])(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_80189104; +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_80189170[])(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_801891AC[])(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(s32); +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_80189204[])(); +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_80189214[])(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_8018921C[])(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_80189384[])(); +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_80189390[])(); +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_801B3BDC; +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 int func_801789AC(void); +extern s16 D_801B5B18; +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_801B4D60; +extern short D_801B5B8C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801B518C; +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_801B51B4; +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_801B5170; +extern s32 func_8017A3B0(void); +extern short D_801B51AC; +extern short D_801B51A8; +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_801B5AE8; +extern s16 D_801B5AEA; +extern s16 D_801B5AF4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801B5AE8; + + 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_801B5AF4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801B5AE8+0xC == &D_801B5AF4; 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_801B5AE8 + 0xC)) < 0x101) { + D_801B5AE8 = 0; + D_801B5AEA = 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_801B5AF4); + 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_801B5AE8 + 0xC)) < 0x101) { + D_801B5AE8 = 0; + D_801B5AEA = 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_801B51EC; + extern s16 D_801B51EE; + extern s16 D_801B51F0; + extern s16 D_801B51E4; + extern s16 D_801B51E6; + extern s16 D_801B51E8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B51EC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B51EE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B51F0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B51E4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B51E6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B51E8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801B5174; +extern u16 D_801B51F4; +extern u16 D_801B51F6; +extern u16 D_801B51F8; +extern s16 D_801B5B18; + +void func_8017B1D8(void) { + func_8012A418(); + D_801B5B18 = 0; + D_801B5174 = 0; + D_801B51F4 = D_80126B5E; + D_801B51F6 = D_80126B62; + D_801B51F8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_801894CC[]; + extern s16 D_801B51EC; + extern s16 D_801B51E4; + 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_801894CC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801894CC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B51EC; + s16 *p78C = &D_801B51E4; + *(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_801B5B18 = 1; + D_801B5174 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B5194; + extern SV4_8017B368 D_801B519C; + extern s16 D_801B51EC; + extern s16 D_801B51E4; + extern u16 D_801894CC; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801B5194; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801B519C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_801894CC)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_801894CC)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801B51EC) = loc0; + (*(SV4_8017B368 *)&D_801B51E4) = loc1; + D_801B5B18 = 1; + D_801B5174 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_801894CC[]; + extern s16 D_801B51EC; + extern s16 D_801B51EE; + extern s16 D_801B51F0; + extern s16 D_801B51E4; + extern s16 D_801B51E6; + extern s16 D_801B51E8; + 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_801894CC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801894CC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B51EC; + s16 *p78C = &D_801B51E4; + *(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_801B51EE; + v798 = D_801B51F0; + v78C = *p78C; + v78E = D_801B51E6; + v790 = D_801B51E8; + __asm__ __volatile__(""); + D_801B5B18 = 1; + D_801B5174 = 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_801B5174; +extern s16 D_801B51EC; +extern s16 D_801B51EE; +extern s16 D_801B51F0; +extern s16 D_801B51E4; +extern s16 D_801B51E6; +extern s16 D_801B51E8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801B5174 = 0; + D_801B51EC = (s16) D_80114F30; + D_801B51EE = (s16) D_80114F34; + D_801B51F0 = (s16) D_80114F38; + D_801B51E4 = (s16) D_80114F24; + D_801B51E6 = (s16) D_80114F28; + D_801B51E8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801B5204; +extern s16 D_801B5206; +extern s16 D_801B5208; +extern s16 D_801B520C; +extern s16 D_801B520E; +extern s16 D_801B5210; + +void func_8017B824(void) { + D_801B5204 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801B5206 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801B5208 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801B520C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801B520E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801B5210 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801B5204; +extern s16 D_801B5206; +extern s16 D_801B5208; +extern s16 D_801B520C; +extern s16 D_801B520E; +extern s16 D_801B5210; + +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_801B5204; + D_80114F34 = D_801B5206; + D_80114F38 = D_801B5208; + D_80114F24 = D_801B520C; + D_80114F28 = D_801B520E; + D_80114F2C = D_801B5210; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801B51EC), src[8..15] -> (*(S8_8017B8E8 *)&D_801B51E4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801B51EC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801B51E4) = ((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_801B51F4; +extern u16 D_801B51F6; +extern u16 D_801B51F8; + +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_801B5174; +extern short D_801B51FC; +extern short D_801B51FE; +extern short D_801B5200; +extern s16 D_801B51EC; +extern s16 D_801B51EE; +extern s16 D_801B51F0; +extern s16 D_801B51E4; +extern s16 D_801B51E6; +extern s16 D_801B51E8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B51F4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B51F6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B51F8); + (*(s16 *)&D_801B51FC) = buf[0]; + (*(s16 *)&D_801B51FE) = buf[1]; + (*(s16 *)&D_801B5200) = buf[2]; + D_801B51EC = D_80114F30 + buf[0]; + D_801B5174 = 0; + D_801B51EE = D_80114F34 + buf[1]; + D_801B51F0 = D_80114F38 + buf[2]; + D_801B51E4 = D_80114F24 + buf[0]; + D_801B51E6 = D_80114F28 + buf[1]; + D_801B51E8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801B5194; +extern SV4 D_801B519C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B519C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801B5194 = 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_801B519C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B519C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801B5194) = 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_801B519C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801B51BC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801B51BC; + 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_801B5174; +extern s16 D_801B5B18; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801B5174 = D_801B5174 + 1; + if (D_801B5174 >= 0x1F) { + D_801B5B18 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801B5174; +extern s16 D_801B5B18; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801B5174 = D_801B5174 + 1; + if (0x18 < D_801B5174) { + func_8012A4BC(); + D_801B5B18 = 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_801B5174; +extern void (*D_801B51B8)(void); +extern short D_801B51FC; +extern short D_801B51FE; +extern short D_801B5200; +extern s16 D_801B5B18; + +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_801B5174 = D_801B5174 + 1; + if (D_801B5174 >= 0x19) { + if (D_801B51B8 != 0) { + (*D_801B51B8)(); + } else { + D_80114F30 = D_80114F30 + D_801B51FC; + D_80114F34 = D_80114F34 + D_801B51FE; + D_80114F38 = D_80114F38 + D_801B5200; + D_80114F24 = D_80114F24 + D_801B51FC; + D_80114F28 = D_80114F28 + D_801B51FE; + D_80114F2C = D_80114F2C + D_801B5200; + func_8012A4BC(); + } + D_801B5B18 = 0; + } +} + + + +extern void (*D_8018956C[])(void); + +void func_8017BE60(void *a0) { + D_8018956C[*(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) */ + diff --git a/src/ov_SC04_008/ov_SC04_008_jr_8017A4AC.c b/src/ov_SC04_008/ov_SC04_008_jr_8017A4AC.c index c0509967f..4483c3cfd 100644 --- a/src/ov_SC04_008/ov_SC04_008_jr_8017A4AC.c +++ b/src/ov_SC04_008/ov_SC04_008_jr_8017A4AC.c @@ -2946,767 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_80191EC4; - extern s16 D_80191EC6; - extern s16 D_80191EC8; - extern s16 D_80191EBC; - extern s16 D_80191EBE; - extern s16 D_80191EC0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80191EC4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80191EC6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80191EC8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_80191EBC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_80191EBE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80191EC0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80191E4C; -extern u16 D_80191ECC; -extern u16 D_80191ECE; -extern u16 D_80191ED0; -extern s16 D_80193448; - -void func_8017B1D8(void) { - func_8012A418(); - D_80193448 = 0; - D_80191E4C = 0; - D_80191ECC = D_80126B5E; - D_80191ECE = D_80126B62; - D_80191ED0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80182404[]; - extern s16 D_80191EC4; - extern s16 D_80191EBC; - 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_80182404[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182404[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80191EC4; - s16 *p78C = &D_80191EBC; - *(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_80193448 = 1; - D_80191E4C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_80191E6C; - extern SV4_8017B368 D_80191E74; - extern s16 D_80191EC4; - extern s16 D_80191EBC; - extern u16 D_80182404; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_80191E6C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_80191E74; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80182404)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80182404)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_80191EC4) = loc0; - (*(SV4_8017B368 *)&D_80191EBC) = loc1; - D_80193448 = 1; - D_80191E4C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80182404[]; - extern s16 D_80191EC4; - extern s16 D_80191EC6; - extern s16 D_80191EC8; - extern s16 D_80191EBC; - extern s16 D_80191EBE; - extern s16 D_80191EC0; - 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_80182404[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182404[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80191EC4; - s16 *p78C = &D_80191EBC; - *(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_80191EC6; - v798 = D_80191EC8; - v78C = *p78C; - v78E = D_80191EBE; - v790 = D_80191EC0; - __asm__ __volatile__(""); - D_80193448 = 1; - D_80191E4C = 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_80191E4C; -extern s16 D_80191EC4; -extern s16 D_80191EC6; -extern s16 D_80191EC8; -extern s16 D_80191EBC; -extern s16 D_80191EBE; -extern s16 D_80191EC0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_80191E4C = 0; - D_80191EC4 = (s16) D_80114F30; - D_80191EC6 = (s16) D_80114F34; - D_80191EC8 = (s16) D_80114F38; - D_80191EBC = (s16) D_80114F24; - D_80191EBE = (s16) D_80114F28; - D_80191EC0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_80191EDC; -extern s16 D_80191EDE; -extern s16 D_80191EE0; -extern s16 D_80191EE4; -extern s16 D_80191EE6; -extern s16 D_80191EE8; - -void func_8017B824(void) { - D_80191EDC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_80191EDE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_80191EE0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_80191EE4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_80191EE6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_80191EE8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_80191EDC; -extern s16 D_80191EDE; -extern s16 D_80191EE0; -extern s16 D_80191EE4; -extern s16 D_80191EE6; -extern s16 D_80191EE8; - -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_80191EDC; - D_80114F34 = D_80191EDE; - D_80114F38 = D_80191EE0; - D_80114F24 = D_80191EE4; - D_80114F28 = D_80191EE6; - D_80114F2C = D_80191EE8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_80191EC4), src[8..15] -> (*(S8_8017B8E8 *)&D_80191EBC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_80191EC4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_80191EBC) = ((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_80191ECC; -extern u16 D_80191ECE; -extern u16 D_80191ED0; - -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_80191E4C; -extern short D_80191ED4; -extern short D_80191ED6; -extern short D_80191ED8; -extern s16 D_80191EC4; -extern s16 D_80191EC6; -extern s16 D_80191EC8; -extern s16 D_80191EBC; -extern s16 D_80191EBE; -extern s16 D_80191EC0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_80191ECC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_80191ECE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80191ED0); - (*(s16 *)&D_80191ED4) = buf[0]; - (*(s16 *)&D_80191ED6) = buf[1]; - (*(s16 *)&D_80191ED8) = buf[2]; - D_80191EC4 = D_80114F30 + buf[0]; - D_80191E4C = 0; - D_80191EC6 = D_80114F34 + buf[1]; - D_80191EC8 = D_80114F38 + buf[2]; - D_80191EBC = D_80114F24 + buf[0]; - D_80191EBE = D_80114F28 + buf[1]; - D_80191EC0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_80191E6C; -extern SV4 D_80191E74; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_80191E74) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_80191E6C = 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_80191E74 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80191E74)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_80191E6C) = 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_80191E74) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_80191E94[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_80191E94; - 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_80191E4C; -extern s16 D_80193448; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_80191E4C = D_80191E4C + 1; - if (D_80191E4C >= 0x1F) { - D_80193448 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_80191E4C; -extern s16 D_80193448; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_80191E4C = D_80191E4C + 1; - if (0x18 < D_80191E4C) { - func_8012A4BC(); - D_80193448 = 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_80191E4C; -extern void (*D_80191E90)(void); -extern short D_80191ED4; -extern short D_80191ED6; -extern short D_80191ED8; -extern s16 D_80193448; - -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_80191E4C = D_80191E4C + 1; - if (D_80191E4C >= 0x19) { - if (D_80191E90 != 0) { - (*D_80191E90)(); - } else { - D_80114F30 = D_80114F30 + D_80191ED4; - D_80114F34 = D_80114F34 + D_80191ED6; - D_80114F38 = D_80114F38 + D_80191ED8; - D_80114F24 = D_80114F24 + D_80191ED4; - D_80114F28 = D_80114F28 + D_80191ED6; - D_80114F2C = D_80114F2C + D_80191ED8; - func_8012A4BC(); - } - D_80193448 = 0; - } -} - - - -extern void (*D_801824A4[])(void); - -void func_8017BE60(void *a0) { - D_801824A4[*(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) */ - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017CD9C); - - -extern void (*D_80182500[])(void); - -void func_8017CE0C(void *a0) { - D_80182500[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017CE48); - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017CE8C(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017CEB0); - - -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_8017CEF0(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_8017CF6C(void) { - func_800D1EBC(); - } - - - -extern void (*D_80182514[])(void); - -void func_8017CF8C(void *a0) { - D_80182514[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017CFC8); - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017D03C); - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017D064); - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017D08C); - - -extern void (*D_80182530[])(void); - -void func_8017D12C(void *a0) { - D_80182530[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017D168); - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017D210); - - -extern void func_8013B7F4(void *a0, int a1); - -int func_8017D3A8(int param_1) -{ - - extern unsigned char D_80182538[]; - register int iVar1 __asm__("$4"); - iVar1 = *(int *)(D_80182538 + param_1 * 4); - __asm__ __volatile__("" ::: "memory"); - func_8013B7F4((void *)iVar1, 0); -} - - -extern void func_8013CB84(void); - void func_8017D3D8(void) { - func_8013CB84(); - } - - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017D3F8); - -extern s32 func_8017D738(void); - -s32 func_8017D738(void) { - return 0x55; -} - - - -extern void (*D_8018255C[])(void); - -void func_8017D740(void *a0) { - D_8018255C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017D77C); - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017D8C4); - - -extern void (*D_80182564[])(void); - -void func_8017D990(void *a0) { - D_80182564[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017D9CC); - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017DB64); - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017DC54); - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017DCB4); - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017DE40); - - -extern void (*D_80182570[])(void); - -void func_8017DE70(void *a0) { - D_80182570[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_8012BF4C(s32 *a0, s16 a1); -extern void func_8012AD50(s32); -void func_8017DEAC(s32 *a0) { - func_8012BF4C(a0, 0); - func_8012AD50(a0); -} - - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017DEE0); - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017E030); - - -extern void (*D_801825AC[])(void); - -void func_8017E11C(void *a0) { - D_801825AC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017E158); - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017E23C); - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017E2A8); - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017E394); - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017E628); - - -void func_8017E754(s32 arg0) { - s32 var_v1; - *(s8 *)(arg0 + 0xc1) = 0; - *(s16 *)(arg0 + 0x5e) = 0; - *(s16 *)(arg0 + 0x5c) = 0; - *(s16 *)(arg0 + 0x102) = 3; - var_v1 = *(s32 *)(arg0 + 0x20); - *(s16 *)(var_v1 + 0x2c) |= 0x10; - } - - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017E780); - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017E8B8); - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017A4AC", func_8017E9D8); - - - diff --git a/src/ov_SC04_008/ov_SC04_008_jr_8017AE2C.c b/src/ov_SC04_008/ov_SC04_008_jr_8017AE2C.c new file mode 100644 index 000000000..29fac7448 --- /dev/null +++ b/src/ov_SC04_008/ov_SC04_008_jr_8017AE2C.c @@ -0,0 +1,3644 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80180FFC; +extern u8 D_80180F6C; +extern u8 D_80180F48; +extern u8 D_80180F24; +extern u8 D_80180FD8; +extern u8 D_80180FB4; +extern u8 D_80180F90; +extern u8 D_80180F00; +extern void func_80145934(void); +extern u8 D_8018108C; +extern u8 D_80181068; +extern u8 D_80181044; +extern u8 D_80181020; +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_80180484[]; +extern unsigned char D_801804B4[]; +extern unsigned char D_80180504[]; +extern unsigned char D_80180534[]; +extern unsigned char D_80180564[]; +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(void); +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_801805B4[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018067C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80180704[]; +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_8018070C; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_80190D48; +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_80190D4C; +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_8018073C; +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 void 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_801807E4[])(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_80180808[])(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_801807F8; +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_8018081C[])(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_80180828[]; +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_80180838[])(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_80180850[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180840; +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_80180864[])(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_80180880[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80180870; +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_80180894[])(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_801808A8[])(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_801808BC; +extern void (*D_801808E4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801808C4; +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_80180930[])(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_80180934[])(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(void *a0); +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_80180D98[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80180DA8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_80190D80; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180DD0[])(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_80180DB0; +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_80180DC0; +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_80180E10[])(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_80180E18[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180DE4; +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_80180E24[])(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_80180DF4; +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_80190D88; +extern s32 D_80190D94; +extern s32 D_80190D98; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180E60[])(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_80180E34[]; +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_80190D90; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801810B0[])(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_80180ED0[]; +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_80181154[])(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_801812A8[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801810C4; +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_801812B0[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801810D4; +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_801810F4; +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_801812B8[])(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(void); +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_801812E0[])(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_801812EC[])(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_80181160[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80181390; +extern void func_8015D380(s32 a0); +extern unsigned char D_80180474[]; +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_801813A4[]; +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_801813E0[]; +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_80181428; +extern u16 D_8018142A; +extern u16 D_8018142C; +extern s32 D_80181430; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80181438; +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_80181144; +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_801814BC[]; +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_8018156C[])(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_8018159C[]; +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_80181600; +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_80190DA0[]; +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_80181624[])(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_80190DF8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018166C[])(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_8018165C; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8019066C[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_80181674[])(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_801816C8[])(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_80181690; +extern s16 D_801816C4; +extern s16 D_801816C2; +extern s16 D_801816C0; +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_801816D4[])(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_80190E58; +extern u8 D_80190E59; +extern u8 D_80190E5A; +extern u8 D_80190E5B; +extern u8 D_80190E5C; +extern u8 D_80190E5D; +extern u8 D_80190E5E; +extern u8 D_80190E5F; +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_801816E4[])(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_80190E98; +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_80181728[])(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_801817A4[]; +extern s32 D_801817C4[]; +extern u8 D_80181840[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80181860[]; +extern u8 D_80181880[]; +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_8018191C[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80181998[])(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_8019067C; +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_801819A4[])(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_801819AC[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80181A74[])(void); +extern void func_80166618(void *a0); +extern void (*D_80181A84[])(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_80181A94[])(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_80181AA0[])(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_80181A00[]; +extern u8 D_80181A14[]; +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_80181AB8[])(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_80181AC0[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80181AC8[])(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_80181AD0[])(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_80181AD8[])(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_80181AE0[])(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_80181AE8[])(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_80181B9C[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80181BA4[])(void); +extern void func_80169F00(void *a0); +extern char D_80181B54[]; +extern char D_80181B14[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80181BDC[])(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_80181BE8[])(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_80181C30[])(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_80181CAC[])(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_801911B8; +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_80181CA0[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80181CE4[]; +extern unsigned short D_80181CEC[]; +extern unsigned short D_80181CF4[]; +extern unsigned char D_801911C0[]; +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_801911B8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80181CFC[])(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_801912F4; +extern M2C_UNK D_801912F8; +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_80191280; +extern void (*D_80181D2C[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801912FC[]; +extern u8 D_80191304[]; +extern u8 D_801912B4[]; +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_80181D34[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80181D50[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80181D58[])(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_80181DC0[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80181D64; +extern u8 D_80181D70; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80181DF4[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80181DFC[])(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_80181E50[])(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_80181E84[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80181E74[]; +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_80181EA0; +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); +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_80181F18[])(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_80181F20[])(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_80181F28[])(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_80181F30[])(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_80181F38[])(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_80181F40[])(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_80181F4C[])(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_80181F58[])(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_80181F64[])(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_80181F74[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80181F84[])(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_80181F8C[])(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_80181F94[])(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_80181F9C[])(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_80181FA4[])(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_80181FAC[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80181FB4[])(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_80181FBC[])(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_80181FC4[])(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_80181FCC[])(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_80181FD4[])(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_80181FDC[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80181FE4[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80181FEC[])(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_80181FF4[])(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_80181FFC[])(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_80182004[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018200C[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80182014[])(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_8018201C[])(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_80182024[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018202C[])(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_80182034[])(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_80182078[])(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_8018203C; +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_801820A8[])(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_801820E4[])(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(s32); +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_8018213C[])(); +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_8018214C[])(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_80182154[])(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_801822BC[])(); +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_801822C8[])(); +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_801908C4; +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 int func_801789AC(void); +extern s16 D_80193448; +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_80191A38; +extern short D_801934BC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_80191E64; +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_80191E8C; +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_80191E48; +extern s32 func_8017A3B0(void); +extern short D_80191E84; +extern short D_80191E80; +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_80193418; +extern s16 D_8019341A; +extern s16 D_80193424; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_80193418; + + 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_80193424); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_80193418+0xC == &D_80193424; 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_80193418 + 0xC)) < 0x101) { + D_80193418 = 0; + D_8019341A = 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_80193424); + 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_80193418 + 0xC)) < 0x101) { + D_80193418 = 0; + D_8019341A = 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_80191EC4; + extern s16 D_80191EC6; + extern s16 D_80191EC8; + extern s16 D_80191EBC; + extern s16 D_80191EBE; + extern s16 D_80191EC0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80191EC4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80191EC6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80191EC8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_80191EBC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_80191EBE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80191EC0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_80191E4C; +extern u16 D_80191ECC; +extern u16 D_80191ECE; +extern u16 D_80191ED0; +extern s16 D_80193448; + +void func_8017B1D8(void) { + func_8012A418(); + D_80193448 = 0; + D_80191E4C = 0; + D_80191ECC = D_80126B5E; + D_80191ECE = D_80126B62; + D_80191ED0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80182404[]; + extern s16 D_80191EC4; + extern s16 D_80191EBC; + 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_80182404[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182404[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80191EC4; + s16 *p78C = &D_80191EBC; + *(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_80193448 = 1; + D_80191E4C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_80191E6C; + extern SV4_8017B368 D_80191E74; + extern s16 D_80191EC4; + extern s16 D_80191EBC; + extern u16 D_80182404; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_80191E6C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_80191E74; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80182404)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80182404)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_80191EC4) = loc0; + (*(SV4_8017B368 *)&D_80191EBC) = loc1; + D_80193448 = 1; + D_80191E4C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80182404[]; + extern s16 D_80191EC4; + extern s16 D_80191EC6; + extern s16 D_80191EC8; + extern s16 D_80191EBC; + extern s16 D_80191EBE; + extern s16 D_80191EC0; + 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_80182404[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182404[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80191EC4; + s16 *p78C = &D_80191EBC; + *(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_80191EC6; + v798 = D_80191EC8; + v78C = *p78C; + v78E = D_80191EBE; + v790 = D_80191EC0; + __asm__ __volatile__(""); + D_80193448 = 1; + D_80191E4C = 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_80191E4C; +extern s16 D_80191EC4; +extern s16 D_80191EC6; +extern s16 D_80191EC8; +extern s16 D_80191EBC; +extern s16 D_80191EBE; +extern s16 D_80191EC0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_80191E4C = 0; + D_80191EC4 = (s16) D_80114F30; + D_80191EC6 = (s16) D_80114F34; + D_80191EC8 = (s16) D_80114F38; + D_80191EBC = (s16) D_80114F24; + D_80191EBE = (s16) D_80114F28; + D_80191EC0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_80191EDC; +extern s16 D_80191EDE; +extern s16 D_80191EE0; +extern s16 D_80191EE4; +extern s16 D_80191EE6; +extern s16 D_80191EE8; + +void func_8017B824(void) { + D_80191EDC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_80191EDE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_80191EE0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_80191EE4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_80191EE6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_80191EE8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_80191EDC; +extern s16 D_80191EDE; +extern s16 D_80191EE0; +extern s16 D_80191EE4; +extern s16 D_80191EE6; +extern s16 D_80191EE8; + +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_80191EDC; + D_80114F34 = D_80191EDE; + D_80114F38 = D_80191EE0; + D_80114F24 = D_80191EE4; + D_80114F28 = D_80191EE6; + D_80114F2C = D_80191EE8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_80191EC4), src[8..15] -> (*(S8_8017B8E8 *)&D_80191EBC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_80191EC4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_80191EBC) = ((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_80191ECC; +extern u16 D_80191ECE; +extern u16 D_80191ED0; + +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_80191E4C; +extern short D_80191ED4; +extern short D_80191ED6; +extern short D_80191ED8; +extern s16 D_80191EC4; +extern s16 D_80191EC6; +extern s16 D_80191EC8; +extern s16 D_80191EBC; +extern s16 D_80191EBE; +extern s16 D_80191EC0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_80191ECC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_80191ECE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80191ED0); + (*(s16 *)&D_80191ED4) = buf[0]; + (*(s16 *)&D_80191ED6) = buf[1]; + (*(s16 *)&D_80191ED8) = buf[2]; + D_80191EC4 = D_80114F30 + buf[0]; + D_80191E4C = 0; + D_80191EC6 = D_80114F34 + buf[1]; + D_80191EC8 = D_80114F38 + buf[2]; + D_80191EBC = D_80114F24 + buf[0]; + D_80191EBE = D_80114F28 + buf[1]; + D_80191EC0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_80191E6C; +extern SV4 D_80191E74; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_80191E74) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_80191E6C = 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_80191E74 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80191E74)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_80191E6C) = 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_80191E74) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_80191E94[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_80191E94; + 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_80191E4C; +extern s16 D_80193448; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_80191E4C = D_80191E4C + 1; + if (D_80191E4C >= 0x1F) { + D_80193448 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_80191E4C; +extern s16 D_80193448; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_80191E4C = D_80191E4C + 1; + if (0x18 < D_80191E4C) { + func_8012A4BC(); + D_80193448 = 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_80191E4C; +extern void (*D_80191E90)(void); +extern short D_80191ED4; +extern short D_80191ED6; +extern short D_80191ED8; +extern s16 D_80193448; + +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_80191E4C = D_80191E4C + 1; + if (D_80191E4C >= 0x19) { + if (D_80191E90 != 0) { + (*D_80191E90)(); + } else { + D_80114F30 = D_80114F30 + D_80191ED4; + D_80114F34 = D_80114F34 + D_80191ED6; + D_80114F38 = D_80114F38 + D_80191ED8; + D_80114F24 = D_80114F24 + D_80191ED4; + D_80114F28 = D_80114F28 + D_80191ED6; + D_80114F2C = D_80114F2C + D_80191ED8; + func_8012A4BC(); + } + D_80193448 = 0; + } +} + + + +extern void (*D_801824A4[])(void); + +void func_8017BE60(void *a0) { + D_801824A4[*(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) */ + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017CD9C); + + +extern void (*D_80182500[])(void); + +void func_8017CE0C(void *a0) { + D_80182500[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017CE48); + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017CE8C(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017CEB0); + + +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_8017CEF0(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_8017CF6C(void) { + func_800D1EBC(); + } + + + +extern void (*D_80182514[])(void); + +void func_8017CF8C(void *a0) { + D_80182514[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017CFC8); + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017D03C); + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017D064); + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017D08C); + + +extern void (*D_80182530[])(void); + +void func_8017D12C(void *a0) { + D_80182530[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017D168); + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017D210); + + +extern void func_8013B7F4(void *a0, int a1); + +int func_8017D3A8(int param_1) +{ + + extern unsigned char D_80182538[]; + register int iVar1 __asm__("$4"); + iVar1 = *(int *)(D_80182538 + param_1 * 4); + __asm__ __volatile__("" ::: "memory"); + func_8013B7F4((void *)iVar1, 0); +} + + +extern void func_8013CB84(void); + void func_8017D3D8(void) { + func_8013CB84(); + } + + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017D3F8); + +extern s32 func_8017D738(void); + +s32 func_8017D738(void) { + return 0x55; +} + + + +extern void (*D_8018255C[])(void); + +void func_8017D740(void *a0) { + D_8018255C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017D77C); + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017D8C4); + + +extern void (*D_80182564[])(void); + +void func_8017D990(void *a0) { + D_80182564[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017D9CC); + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017DB64); + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017DC54); + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017DCB4); + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017DE40); + + +extern void (*D_80182570[])(void); + +void func_8017DE70(void *a0) { + D_80182570[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_8012BF4C(s32 *a0, s16 a1); +extern void func_8012AD50(s32); +void func_8017DEAC(s32 *a0) { + func_8012BF4C(a0, 0); + func_8012AD50(a0); +} + + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017DEE0); + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017E030); + + +extern void (*D_801825AC[])(void); + +void func_8017E11C(void *a0) { + D_801825AC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017E158); + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017E23C); + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017E2A8); + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017E394); + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017E628); + + +void func_8017E754(s32 arg0) { + s32 var_v1; + *(s8 *)(arg0 + 0xc1) = 0; + *(s16 *)(arg0 + 0x5e) = 0; + *(s16 *)(arg0 + 0x5c) = 0; + *(s16 *)(arg0 + 0x102) = 3; + var_v1 = *(s32 *)(arg0 + 0x20); + *(s16 *)(var_v1 + 0x2c) |= 0x10; + } + + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017E780); + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017E8B8); + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8017AE2C", func_8017E9D8); + + + + diff --git a/src/ov_SC04_009/ov_SC04_009_jr_8017A4AC.c b/src/ov_SC04_009/ov_SC04_009_jr_8017A4AC.c index ad2e25ae6..d3b7aa1fa 100644 --- a/src/ov_SC04_009/ov_SC04_009_jr_8017A4AC.c +++ b/src/ov_SC04_009/ov_SC04_009_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801980D4; - extern s16 D_801980D6; - extern s16 D_801980D8; - extern s16 D_801980CC; - extern s16 D_801980CE; - extern s16 D_801980D0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801980D4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801980D6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801980D8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801980CC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801980CE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801980D0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8019805C; -extern u16 D_801980DC; -extern u16 D_801980DE; -extern u16 D_801980E0; -extern s16 D_801981F8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801981F8 = 0; - D_8019805C = 0; - D_801980DC = D_80126B5E; - D_801980DE = D_80126B62; - D_801980E0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80182430[]; - extern s16 D_801980D4; - extern s16 D_801980CC; - 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_80182430[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182430[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801980D4; - s16 *p78C = &D_801980CC; - *(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_801981F8 = 1; - D_8019805C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019807C; - extern SV4_8017B368 D_80198084; - extern s16 D_801980D4; - extern s16 D_801980CC; - extern u16 D_80182430; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8019807C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_80198084; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80182430)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80182430)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801980D4) = loc0; - (*(SV4_8017B368 *)&D_801980CC) = loc1; - D_801981F8 = 1; - D_8019805C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80182430[]; - extern s16 D_801980D4; - extern s16 D_801980D6; - extern s16 D_801980D8; - extern s16 D_801980CC; - extern s16 D_801980CE; - extern s16 D_801980D0; - 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_80182430[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182430[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801980D4; - s16 *p78C = &D_801980CC; - *(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_801980D6; - v798 = D_801980D8; - v78C = *p78C; - v78E = D_801980CE; - v790 = D_801980D0; - __asm__ __volatile__(""); - D_801981F8 = 1; - D_8019805C = 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_8019805C; -extern s16 D_801980D4; -extern s16 D_801980D6; -extern s16 D_801980D8; -extern s16 D_801980CC; -extern s16 D_801980CE; -extern s16 D_801980D0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8019805C = 0; - D_801980D4 = (s16) D_80114F30; - D_801980D6 = (s16) D_80114F34; - D_801980D8 = (s16) D_80114F38; - D_801980CC = (s16) D_80114F24; - D_801980CE = (s16) D_80114F28; - D_801980D0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801980EC; -extern s16 D_801980EE; -extern s16 D_801980F0; -extern s16 D_801980F4; -extern s16 D_801980F6; -extern s16 D_801980F8; - -void func_8017B824(void) { - D_801980EC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801980EE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801980F0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801980F4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801980F6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801980F8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801980EC; -extern s16 D_801980EE; -extern s16 D_801980F0; -extern s16 D_801980F4; -extern s16 D_801980F6; -extern s16 D_801980F8; - -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_801980EC; - D_80114F34 = D_801980EE; - D_80114F38 = D_801980F0; - D_80114F24 = D_801980F4; - D_80114F28 = D_801980F6; - D_80114F2C = D_801980F8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801980D4), src[8..15] -> (*(S8_8017B8E8 *)&D_801980CC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801980D4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801980CC) = ((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_801980DC; -extern u16 D_801980DE; -extern u16 D_801980E0; - -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_8019805C; -extern short D_801980E4; -extern short D_801980E6; -extern short D_801980E8; -extern s16 D_801980D4; -extern s16 D_801980D6; -extern s16 D_801980D8; -extern s16 D_801980CC; -extern s16 D_801980CE; -extern s16 D_801980D0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801980DC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801980DE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801980E0); - (*(s16 *)&D_801980E4) = buf[0]; - (*(s16 *)&D_801980E6) = buf[1]; - (*(s16 *)&D_801980E8) = buf[2]; - D_801980D4 = D_80114F30 + buf[0]; - D_8019805C = 0; - D_801980D6 = D_80114F34 + buf[1]; - D_801980D8 = D_80114F38 + buf[2]; - D_801980CC = D_80114F24 + buf[0]; - D_801980CE = D_80114F28 + buf[1]; - D_801980D0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8019807C; -extern SV4 D_80198084; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_80198084) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8019807C = 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_80198084 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80198084)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8019807C) = 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_80198084) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801980A4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801980A4; - 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_8019805C; -extern s16 D_801981F8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8019805C = D_8019805C + 1; - if (D_8019805C >= 0x1F) { - D_801981F8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8019805C; -extern s16 D_801981F8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8019805C = D_8019805C + 1; - if (0x18 < D_8019805C) { - func_8012A4BC(); - D_801981F8 = 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_8019805C; -extern void (*D_801980A0)(void); -extern short D_801980E4; -extern short D_801980E6; -extern short D_801980E8; -extern s16 D_801981F8; - -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_8019805C = D_8019805C + 1; - if (D_8019805C >= 0x19) { - if (D_801980A0 != 0) { - (*D_801980A0)(); - } else { - D_80114F30 = D_80114F30 + D_801980E4; - D_80114F34 = D_80114F34 + D_801980E6; - D_80114F38 = D_80114F38 + D_801980E8; - D_80114F24 = D_80114F24 + D_801980E4; - D_80114F28 = D_80114F28 + D_801980E6; - D_80114F2C = D_80114F2C + D_801980E8; - func_8012A4BC(); - } - D_801981F8 = 0; - } -} - - - -extern void (*D_801824D0[])(void); - -void func_8017BE60(void *a0) { - D_801824D0[*(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) */ diff --git a/src/ov_SC04_009/ov_SC04_009_jr_8017AE2C.c b/src/ov_SC04_009/ov_SC04_009_jr_8017AE2C.c new file mode 100644 index 000000000..ef0ba92bb --- /dev/null +++ b/src/ov_SC04_009/ov_SC04_009_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80181028; +extern u8 D_80180F98; +extern u8 D_80180F74; +extern u8 D_80180F50; +extern u8 D_80181004; +extern u8 D_80180FE0; +extern u8 D_80180FBC; +extern u8 D_80180F2C; +extern void func_80145934(void); +extern u8 D_801810B8; +extern u8 D_80181094; +extern u8 D_80181070; +extern u8 D_8018104C; +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_801804B0[]; +extern unsigned char D_801804E0[]; +extern unsigned char D_80180530[]; +extern unsigned char D_80180560[]; +extern unsigned char D_80180590[]; +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(void); +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_801805E0[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_801806A8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80180730[]; +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_80180738; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_80196F58; +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_80196F5C; +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_80180768; +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 void 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_80180810[])(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_80180834[])(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_80180824; +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_80180848[])(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_80180854[]; +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_80180864[])(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_8018087C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018086C; +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_80180890[])(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_801808AC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018089C; +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_801808C0[])(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_801808D4[])(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_801808E8; +extern void (*D_80180910[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801808F0; +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_8018095C[])(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_80180960[])(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(void *a0); +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_80180DC4[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80180DD4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_80196F90; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180DFC[])(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_80180DDC; +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_80180DEC; +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_80180E3C[])(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_80180E44[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180E10; +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_80180E50[])(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_80180E20; +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_80196F98; +extern s32 D_80196FA4; +extern s32 D_80196FA8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180E8C[])(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_80180E60[]; +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_80196FA0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801810DC[])(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_80180EFC[]; +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_80181180[])(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_801812D4[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801810F0; +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_801812DC[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80181100; +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_80181120; +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_801812E4[])(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(void); +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_8018130C[])(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_80181318[])(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_8018118C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801813BC; +extern void func_8015D380(s32 a0); +extern unsigned char D_801804A0[]; +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_801813D0[]; +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_8018140C[]; +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_80181454; +extern u16 D_80181456; +extern u16 D_80181458; +extern s32 D_8018145C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80181464; +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_80181170; +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_801814E8[]; +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_80181598[])(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_801815C8[]; +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_8018162C; +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_80196FB0[]; +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_80181650[])(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_80197008[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80181698[])(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_80181688; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_80196880[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_801816A0[])(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_801816F4[])(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_801816BC; +extern s16 D_801816F0; +extern s16 D_801816EE; +extern s16 D_801816EC; +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_80181700[])(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_80197068; +extern u8 D_80197069; +extern u8 D_8019706A; +extern u8 D_8019706B; +extern u8 D_8019706C; +extern u8 D_8019706D; +extern u8 D_8019706E; +extern u8 D_8019706F; +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_80181710[])(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_801970A8; +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_80181754[])(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_801817D0[]; +extern s32 D_801817F0[]; +extern u8 D_8018186C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018188C[]; +extern u8 D_801818AC[]; +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_80181948[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801819C4[])(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_80196890; +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_801819D0[])(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_801819D8[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80181AA0[])(void); +extern void func_80166618(void *a0); +extern void (*D_80181AB0[])(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_80181AC0[])(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_80181ACC[])(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_80181A2C[]; +extern u8 D_80181A40[]; +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_80181AE4[])(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_80181AEC[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80181AF4[])(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_80181AFC[])(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_80181B04[])(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_80181B0C[])(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_80181B14[])(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_80181BC8[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80181BD0[])(void); +extern void func_80169F00(void *a0); +extern char D_80181B80[]; +extern char D_80181B40[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80181C08[])(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_80181C14[])(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_80181C5C[])(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_80181CD8[])(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_801973C8; +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_80181CCC[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80181D10[]; +extern unsigned short D_80181D18[]; +extern unsigned short D_80181D20[]; +extern unsigned char D_801973D0[]; +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_801973C8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80181D28[])(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_80197504; +extern M2C_UNK D_80197508; +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_80197490; +extern void (*D_80181D58[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8019750C[]; +extern u8 D_80197514[]; +extern u8 D_801974C4[]; +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_80181D60[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80181D7C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80181D84[])(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_80181DEC[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80181D90; +extern u8 D_80181D9C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80181E20[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80181E28[])(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_80181E7C[])(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_80181EB0[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80181EA0[]; +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_80181ECC; +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); +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_80181F44[])(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_80181F4C[])(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_80181F54[])(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_80181F5C[])(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_80181F64[])(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_80181F6C[])(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_80181F78[])(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_80181F84[])(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_80181F90[])(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_80181FA0[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80181FB0[])(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_80181FB8[])(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_80181FC0[])(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_80181FC8[])(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_80181FD0[])(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_80181FD8[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80181FE0[])(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_80181FE8[])(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_80181FF0[])(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_80181FF8[])(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_80182000[])(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_80182008[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80182010[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80182018[])(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_80182020[])(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_80182028[])(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_80182030[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80182038[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80182040[])(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_80182048[])(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_80182050[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80182058[])(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_80182060[])(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_801820A4[])(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_80182068; +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_801820D4[])(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_80182110[])(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(s32); +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_80182168[])(); +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_80182178[])(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_80182180[])(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_801822E8[])(); +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_801822F4[])(); +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_80196AD8; +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 int func_801789AC(void); +extern s16 D_801981F8; +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_80197C48; +extern short D_8019826C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_80198074; +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_8019809C; +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_80198058; +extern s32 func_8017A3B0(void); +extern short D_80198094; +extern short D_80198090; +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_801981C8; +extern s16 D_801981CA; +extern s16 D_801981D4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801981C8; + + 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_801981D4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801981C8+0xC == &D_801981D4; 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_801981C8 + 0xC)) < 0x101) { + D_801981C8 = 0; + D_801981CA = 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_801981D4); + 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_801981C8 + 0xC)) < 0x101) { + D_801981C8 = 0; + D_801981CA = 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_801980D4; + extern s16 D_801980D6; + extern s16 D_801980D8; + extern s16 D_801980CC; + extern s16 D_801980CE; + extern s16 D_801980D0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801980D4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801980D6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801980D8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801980CC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801980CE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801980D0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8019805C; +extern u16 D_801980DC; +extern u16 D_801980DE; +extern u16 D_801980E0; +extern s16 D_801981F8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801981F8 = 0; + D_8019805C = 0; + D_801980DC = D_80126B5E; + D_801980DE = D_80126B62; + D_801980E0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80182430[]; + extern s16 D_801980D4; + extern s16 D_801980CC; + 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_80182430[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182430[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801980D4; + s16 *p78C = &D_801980CC; + *(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_801981F8 = 1; + D_8019805C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019807C; + extern SV4_8017B368 D_80198084; + extern s16 D_801980D4; + extern s16 D_801980CC; + extern u16 D_80182430; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8019807C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_80198084; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80182430)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80182430)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801980D4) = loc0; + (*(SV4_8017B368 *)&D_801980CC) = loc1; + D_801981F8 = 1; + D_8019805C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80182430[]; + extern s16 D_801980D4; + extern s16 D_801980D6; + extern s16 D_801980D8; + extern s16 D_801980CC; + extern s16 D_801980CE; + extern s16 D_801980D0; + 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_80182430[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182430[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801980D4; + s16 *p78C = &D_801980CC; + *(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_801980D6; + v798 = D_801980D8; + v78C = *p78C; + v78E = D_801980CE; + v790 = D_801980D0; + __asm__ __volatile__(""); + D_801981F8 = 1; + D_8019805C = 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_8019805C; +extern s16 D_801980D4; +extern s16 D_801980D6; +extern s16 D_801980D8; +extern s16 D_801980CC; +extern s16 D_801980CE; +extern s16 D_801980D0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8019805C = 0; + D_801980D4 = (s16) D_80114F30; + D_801980D6 = (s16) D_80114F34; + D_801980D8 = (s16) D_80114F38; + D_801980CC = (s16) D_80114F24; + D_801980CE = (s16) D_80114F28; + D_801980D0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801980EC; +extern s16 D_801980EE; +extern s16 D_801980F0; +extern s16 D_801980F4; +extern s16 D_801980F6; +extern s16 D_801980F8; + +void func_8017B824(void) { + D_801980EC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801980EE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801980F0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801980F4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801980F6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801980F8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801980EC; +extern s16 D_801980EE; +extern s16 D_801980F0; +extern s16 D_801980F4; +extern s16 D_801980F6; +extern s16 D_801980F8; + +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_801980EC; + D_80114F34 = D_801980EE; + D_80114F38 = D_801980F0; + D_80114F24 = D_801980F4; + D_80114F28 = D_801980F6; + D_80114F2C = D_801980F8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801980D4), src[8..15] -> (*(S8_8017B8E8 *)&D_801980CC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801980D4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801980CC) = ((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_801980DC; +extern u16 D_801980DE; +extern u16 D_801980E0; + +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_8019805C; +extern short D_801980E4; +extern short D_801980E6; +extern short D_801980E8; +extern s16 D_801980D4; +extern s16 D_801980D6; +extern s16 D_801980D8; +extern s16 D_801980CC; +extern s16 D_801980CE; +extern s16 D_801980D0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801980DC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801980DE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801980E0); + (*(s16 *)&D_801980E4) = buf[0]; + (*(s16 *)&D_801980E6) = buf[1]; + (*(s16 *)&D_801980E8) = buf[2]; + D_801980D4 = D_80114F30 + buf[0]; + D_8019805C = 0; + D_801980D6 = D_80114F34 + buf[1]; + D_801980D8 = D_80114F38 + buf[2]; + D_801980CC = D_80114F24 + buf[0]; + D_801980CE = D_80114F28 + buf[1]; + D_801980D0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8019807C; +extern SV4 D_80198084; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_80198084) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8019807C = 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_80198084 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80198084)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8019807C) = 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_80198084) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801980A4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801980A4; + 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_8019805C; +extern s16 D_801981F8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8019805C = D_8019805C + 1; + if (D_8019805C >= 0x1F) { + D_801981F8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8019805C; +extern s16 D_801981F8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8019805C = D_8019805C + 1; + if (0x18 < D_8019805C) { + func_8012A4BC(); + D_801981F8 = 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_8019805C; +extern void (*D_801980A0)(void); +extern short D_801980E4; +extern short D_801980E6; +extern short D_801980E8; +extern s16 D_801981F8; + +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_8019805C = D_8019805C + 1; + if (D_8019805C >= 0x19) { + if (D_801980A0 != 0) { + (*D_801980A0)(); + } else { + D_80114F30 = D_80114F30 + D_801980E4; + D_80114F34 = D_80114F34 + D_801980E6; + D_80114F38 = D_80114F38 + D_801980E8; + D_80114F24 = D_80114F24 + D_801980E4; + D_80114F28 = D_80114F28 + D_801980E6; + D_80114F2C = D_80114F2C + D_801980E8; + func_8012A4BC(); + } + D_801981F8 = 0; + } +} + + + +extern void (*D_801824D0[])(void); + +void func_8017BE60(void *a0) { + D_801824D0[*(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) */ + diff --git a/src/ov_SC04_010/ov_SC04_010_jr_8017A4AC.c b/src/ov_SC04_010/ov_SC04_010_jr_8017A4AC.c index 22b4028fe..eb05d777d 100644 --- a/src/ov_SC04_010/ov_SC04_010_jr_8017A4AC.c +++ b/src/ov_SC04_010/ov_SC04_010_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8018F56C; - extern s16 D_8018F56E; - extern s16 D_8018F570; - extern s16 D_8018F564; - extern s16 D_8018F566; - extern s16 D_8018F568; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8018F56C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8018F56E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8018F570, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8018F564, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8018F566, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8018F568, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8018F4F4; -extern u16 D_8018F574; -extern u16 D_8018F576; -extern u16 D_8018F578; -extern s16 D_8018F6D0; - -void func_8017B1D8(void) { - func_8012A418(); - D_8018F6D0 = 0; - D_8018F4F4 = 0; - D_8018F574 = D_80126B5E; - D_8018F576 = D_80126B62; - D_8018F578 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80181ADC[]; - extern s16 D_8018F56C; - extern s16 D_8018F564; - 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_80181ADC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80181ADC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8018F56C; - s16 *p78C = &D_8018F564; - *(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_8018F6D0 = 1; - D_8018F4F4 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8018F514; - extern SV4_8017B368 D_8018F51C; - extern s16 D_8018F56C; - extern s16 D_8018F564; - extern u16 D_80181ADC; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8018F514; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8018F51C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80181ADC)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80181ADC)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8018F56C) = loc0; - (*(SV4_8017B368 *)&D_8018F564) = loc1; - D_8018F6D0 = 1; - D_8018F4F4 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80181ADC[]; - extern s16 D_8018F56C; - extern s16 D_8018F56E; - extern s16 D_8018F570; - extern s16 D_8018F564; - extern s16 D_8018F566; - extern s16 D_8018F568; - 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_80181ADC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80181ADC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8018F56C; - s16 *p78C = &D_8018F564; - *(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_8018F56E; - v798 = D_8018F570; - v78C = *p78C; - v78E = D_8018F566; - v790 = D_8018F568; - __asm__ __volatile__(""); - D_8018F6D0 = 1; - D_8018F4F4 = 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_8018F4F4; -extern s16 D_8018F56C; -extern s16 D_8018F56E; -extern s16 D_8018F570; -extern s16 D_8018F564; -extern s16 D_8018F566; -extern s16 D_8018F568; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8018F4F4 = 0; - D_8018F56C = (s16) D_80114F30; - D_8018F56E = (s16) D_80114F34; - D_8018F570 = (s16) D_80114F38; - D_8018F564 = (s16) D_80114F24; - D_8018F566 = (s16) D_80114F28; - D_8018F568 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8018F584; -extern s16 D_8018F586; -extern s16 D_8018F588; -extern s16 D_8018F58C; -extern s16 D_8018F58E; -extern s16 D_8018F590; - -void func_8017B824(void) { - D_8018F584 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8018F586 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8018F588 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8018F58C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8018F58E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8018F590 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8018F584; -extern s16 D_8018F586; -extern s16 D_8018F588; -extern s16 D_8018F58C; -extern s16 D_8018F58E; -extern s16 D_8018F590; - -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_8018F584; - D_80114F34 = D_8018F586; - D_80114F38 = D_8018F588; - D_80114F24 = D_8018F58C; - D_80114F28 = D_8018F58E; - D_80114F2C = D_8018F590; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8018F56C), src[8..15] -> (*(S8_8017B8E8 *)&D_8018F564) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8018F56C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8018F564) = ((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_8018F574; -extern u16 D_8018F576; -extern u16 D_8018F578; - -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_8018F4F4; -extern short D_8018F57C; -extern short D_8018F57E; -extern short D_8018F580; -extern s16 D_8018F56C; -extern s16 D_8018F56E; -extern s16 D_8018F570; -extern s16 D_8018F564; -extern s16 D_8018F566; -extern s16 D_8018F568; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8018F574); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8018F576); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8018F578); - (*(s16 *)&D_8018F57C) = buf[0]; - (*(s16 *)&D_8018F57E) = buf[1]; - (*(s16 *)&D_8018F580) = buf[2]; - D_8018F56C = D_80114F30 + buf[0]; - D_8018F4F4 = 0; - D_8018F56E = D_80114F34 + buf[1]; - D_8018F570 = D_80114F38 + buf[2]; - D_8018F564 = D_80114F24 + buf[0]; - D_8018F566 = D_80114F28 + buf[1]; - D_8018F568 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8018F514; -extern SV4 D_8018F51C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8018F51C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8018F514 = 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_8018F51C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8018F51C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8018F514) = 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_8018F51C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8018F53C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8018F53C; - 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_8018F4F4; -extern s16 D_8018F6D0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8018F4F4 = D_8018F4F4 + 1; - if (D_8018F4F4 >= 0x1F) { - D_8018F6D0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8018F4F4; -extern s16 D_8018F6D0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8018F4F4 = D_8018F4F4 + 1; - if (0x18 < D_8018F4F4) { - func_8012A4BC(); - D_8018F6D0 = 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_8018F4F4; -extern void (*D_8018F538)(void); -extern short D_8018F57C; -extern short D_8018F57E; -extern short D_8018F580; -extern s16 D_8018F6D0; - -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_8018F4F4 = D_8018F4F4 + 1; - if (D_8018F4F4 >= 0x19) { - if (D_8018F538 != 0) { - (*D_8018F538)(); - } else { - D_80114F30 = D_80114F30 + D_8018F57C; - D_80114F34 = D_80114F34 + D_8018F57E; - D_80114F38 = D_80114F38 + D_8018F580; - D_80114F24 = D_80114F24 + D_8018F57C; - D_80114F28 = D_80114F28 + D_8018F57E; - D_80114F2C = D_80114F2C + D_8018F580; - func_8012A4BC(); - } - D_8018F6D0 = 0; - } -} - - - -extern void (*D_80181B7C[])(void); - -void func_8017BE60(void *a0) { - D_80181B7C[*(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) */ diff --git a/src/ov_SC04_010/ov_SC04_010_jr_8017AE2C.c b/src/ov_SC04_010/ov_SC04_010_jr_8017AE2C.c new file mode 100644 index 000000000..20c889781 --- /dev/null +++ b/src/ov_SC04_010/ov_SC04_010_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801806D4; +extern u8 D_80180644; +extern u8 D_80180620; +extern u8 D_801805FC; +extern u8 D_801806B0; +extern u8 D_8018068C; +extern u8 D_80180668; +extern u8 D_801805D8; +extern void func_80145934(void); +extern u8 D_80180764; +extern u8 D_80180740; +extern u8 D_8018071C; +extern u8 D_801806F8; +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_8017FB5C[]; +extern unsigned char D_8017FB8C[]; +extern unsigned char D_8017FBDC[]; +extern unsigned char D_8017FC0C[]; +extern unsigned char D_8017FC3C[]; +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(void); +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_8017FC8C[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8017FD54[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8017FDDC[]; +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_8017FDE4; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8018E3F0; +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_8018E3F4; +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_8017FE14; +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 void 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_8017FEBC[])(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_8017FEE0[])(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_8017FED0; +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_8017FEF4[])(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_8017FF00[]; +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_8017FF10[])(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_8017FF28[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8017FF18; +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_8017FF3C[])(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_8017FF58[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8017FF48; +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_8017FF6C[])(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_8017FF80[])(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_8017FF94; +extern void (*D_8017FFBC[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8017FF9C; +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_80180008[])(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_8018000C[])(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(void *a0); +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_80180470[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80180480[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8018E428; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801804A8[])(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_80180488; +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_80180498; +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_801804E8[])(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_801804F0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801804BC; +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_801804FC[])(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_801804CC; +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_8018E430; +extern s32 D_8018E43C; +extern s32 D_8018E440; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180538[])(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_8018050C[]; +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_8018E438; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80180788[])(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_801805A8[]; +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_8018082C[])(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_80180980[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018079C; +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_80180988[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801807AC; +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_801807CC; +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_80180990[])(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(void); +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_801809B8[])(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_801809C4[])(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_80180838[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80180A68; +extern void func_8015D380(s32 a0); +extern unsigned char D_8017FB4C[]; +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_80180A7C[]; +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_80180AB8[]; +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_80180B00; +extern u16 D_80180B02; +extern u16 D_80180B04; +extern s32 D_80180B08; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80180B10; +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_8018081C; +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_80180B94[]; +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_80180C44[])(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_80180C74[]; +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_80180CD8; +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_8018E448[]; +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_80180CFC[])(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_8018E4A0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80180D44[])(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_80180D34; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8018DD0C[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_80180D4C[])(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_80180DA0[])(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_80180D68; +extern s16 D_80180D9C; +extern s16 D_80180D9A; +extern s16 D_80180D98; +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_80180DAC[])(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_8018E500; +extern u8 D_8018E501; +extern u8 D_8018E502; +extern u8 D_8018E503; +extern u8 D_8018E504; +extern u8 D_8018E505; +extern u8 D_8018E506; +extern u8 D_8018E507; +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_80180DBC[])(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_8018E540; +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_80180E00[])(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_80180E7C[]; +extern s32 D_80180E9C[]; +extern u8 D_80180F18[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80180F38[]; +extern u8 D_80180F58[]; +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_80180FF4[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80181070[])(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_8018DD1C; +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_8018107C[])(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_80181084[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018114C[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018115C[])(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_8018116C[])(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_80181178[])(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_801810D8[]; +extern u8 D_801810EC[]; +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_80181190[])(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_80181198[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_801811A0[])(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_801811A8[])(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_801811B0[])(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_801811B8[])(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_801811C0[])(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_80181274[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018127C[])(void); +extern void func_80169F00(void *a0); +extern char D_8018122C[]; +extern char D_801811EC[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_801812B4[])(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_801812C0[])(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_80181308[])(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_80181384[])(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_8018E860; +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_80181378[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_801813BC[]; +extern unsigned short D_801813C4[]; +extern unsigned short D_801813CC[]; +extern unsigned char D_8018E868[]; +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_8018E860; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801813D4[])(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_8018E99C; +extern M2C_UNK D_8018E9A0; +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_8018E928; +extern void (*D_80181404[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018E9A4[]; +extern u8 D_8018E9AC[]; +extern u8 D_8018E95C[]; +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_8018140C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80181428[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80181430[])(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_80181498[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018143C; +extern u8 D_80181448; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801814CC[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801814D4[])(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_80181528[])(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_8018155C[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018154C[]; +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_80181578; +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); +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_801815F0[])(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_801815F8[])(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_80181600[])(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_80181608[])(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_80181610[])(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_80181618[])(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_80181624[])(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_80181630[])(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_8018163C[])(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_8018164C[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018165C[])(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_80181664[])(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_8018166C[])(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_80181674[])(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_8018167C[])(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_80181684[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018168C[])(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_80181694[])(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_8018169C[])(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_801816A4[])(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_801816AC[])(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_801816B4[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801816BC[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801816C4[])(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_801816CC[])(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_801816D4[])(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_801816DC[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801816E4[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801816EC[])(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_801816F4[])(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_801816FC[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80181704[])(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_8018170C[])(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_80181750[])(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_80181714; +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_80181780[])(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_801817BC[])(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(s32); +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_80181814[])(); +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_80181824[])(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_8018182C[])(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_80181994[])(); +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_801819A0[])(); +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_8018DF64; +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 int func_801789AC(void); +extern s16 D_8018F6D0; +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_8018F0E0; +extern short D_8018F744; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8018F50C; +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_8018F534; +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_8018F4F0; +extern s32 func_8017A3B0(void); +extern short D_8018F52C; +extern short D_8018F528; +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_8018F6A0; +extern s16 D_8018F6A2; +extern s16 D_8018F6AC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_8018F6A0; + + 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_8018F6AC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_8018F6A0+0xC == &D_8018F6AC; 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_8018F6A0 + 0xC)) < 0x101) { + D_8018F6A0 = 0; + D_8018F6A2 = 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_8018F6AC); + 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_8018F6A0 + 0xC)) < 0x101) { + D_8018F6A0 = 0; + D_8018F6A2 = 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_8018F56C; + extern s16 D_8018F56E; + extern s16 D_8018F570; + extern s16 D_8018F564; + extern s16 D_8018F566; + extern s16 D_8018F568; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8018F56C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8018F56E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8018F570, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8018F564, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8018F566, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8018F568, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8018F4F4; +extern u16 D_8018F574; +extern u16 D_8018F576; +extern u16 D_8018F578; +extern s16 D_8018F6D0; + +void func_8017B1D8(void) { + func_8012A418(); + D_8018F6D0 = 0; + D_8018F4F4 = 0; + D_8018F574 = D_80126B5E; + D_8018F576 = D_80126B62; + D_8018F578 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80181ADC[]; + extern s16 D_8018F56C; + extern s16 D_8018F564; + 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_80181ADC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80181ADC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8018F56C; + s16 *p78C = &D_8018F564; + *(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_8018F6D0 = 1; + D_8018F4F4 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8018F514; + extern SV4_8017B368 D_8018F51C; + extern s16 D_8018F56C; + extern s16 D_8018F564; + extern u16 D_80181ADC; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8018F514; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8018F51C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80181ADC)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80181ADC)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8018F56C) = loc0; + (*(SV4_8017B368 *)&D_8018F564) = loc1; + D_8018F6D0 = 1; + D_8018F4F4 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80181ADC[]; + extern s16 D_8018F56C; + extern s16 D_8018F56E; + extern s16 D_8018F570; + extern s16 D_8018F564; + extern s16 D_8018F566; + extern s16 D_8018F568; + 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_80181ADC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80181ADC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8018F56C; + s16 *p78C = &D_8018F564; + *(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_8018F56E; + v798 = D_8018F570; + v78C = *p78C; + v78E = D_8018F566; + v790 = D_8018F568; + __asm__ __volatile__(""); + D_8018F6D0 = 1; + D_8018F4F4 = 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_8018F4F4; +extern s16 D_8018F56C; +extern s16 D_8018F56E; +extern s16 D_8018F570; +extern s16 D_8018F564; +extern s16 D_8018F566; +extern s16 D_8018F568; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8018F4F4 = 0; + D_8018F56C = (s16) D_80114F30; + D_8018F56E = (s16) D_80114F34; + D_8018F570 = (s16) D_80114F38; + D_8018F564 = (s16) D_80114F24; + D_8018F566 = (s16) D_80114F28; + D_8018F568 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8018F584; +extern s16 D_8018F586; +extern s16 D_8018F588; +extern s16 D_8018F58C; +extern s16 D_8018F58E; +extern s16 D_8018F590; + +void func_8017B824(void) { + D_8018F584 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8018F586 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8018F588 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8018F58C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8018F58E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8018F590 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8018F584; +extern s16 D_8018F586; +extern s16 D_8018F588; +extern s16 D_8018F58C; +extern s16 D_8018F58E; +extern s16 D_8018F590; + +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_8018F584; + D_80114F34 = D_8018F586; + D_80114F38 = D_8018F588; + D_80114F24 = D_8018F58C; + D_80114F28 = D_8018F58E; + D_80114F2C = D_8018F590; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8018F56C), src[8..15] -> (*(S8_8017B8E8 *)&D_8018F564) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8018F56C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8018F564) = ((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_8018F574; +extern u16 D_8018F576; +extern u16 D_8018F578; + +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_8018F4F4; +extern short D_8018F57C; +extern short D_8018F57E; +extern short D_8018F580; +extern s16 D_8018F56C; +extern s16 D_8018F56E; +extern s16 D_8018F570; +extern s16 D_8018F564; +extern s16 D_8018F566; +extern s16 D_8018F568; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8018F574); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8018F576); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8018F578); + (*(s16 *)&D_8018F57C) = buf[0]; + (*(s16 *)&D_8018F57E) = buf[1]; + (*(s16 *)&D_8018F580) = buf[2]; + D_8018F56C = D_80114F30 + buf[0]; + D_8018F4F4 = 0; + D_8018F56E = D_80114F34 + buf[1]; + D_8018F570 = D_80114F38 + buf[2]; + D_8018F564 = D_80114F24 + buf[0]; + D_8018F566 = D_80114F28 + buf[1]; + D_8018F568 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8018F514; +extern SV4 D_8018F51C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8018F51C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8018F514 = 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_8018F51C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8018F51C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8018F514) = 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_8018F51C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8018F53C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8018F53C; + 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_8018F4F4; +extern s16 D_8018F6D0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8018F4F4 = D_8018F4F4 + 1; + if (D_8018F4F4 >= 0x1F) { + D_8018F6D0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8018F4F4; +extern s16 D_8018F6D0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8018F4F4 = D_8018F4F4 + 1; + if (0x18 < D_8018F4F4) { + func_8012A4BC(); + D_8018F6D0 = 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_8018F4F4; +extern void (*D_8018F538)(void); +extern short D_8018F57C; +extern short D_8018F57E; +extern short D_8018F580; +extern s16 D_8018F6D0; + +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_8018F4F4 = D_8018F4F4 + 1; + if (D_8018F4F4 >= 0x19) { + if (D_8018F538 != 0) { + (*D_8018F538)(); + } else { + D_80114F30 = D_80114F30 + D_8018F57C; + D_80114F34 = D_80114F34 + D_8018F57E; + D_80114F38 = D_80114F38 + D_8018F580; + D_80114F24 = D_80114F24 + D_8018F57C; + D_80114F28 = D_80114F28 + D_8018F57E; + D_80114F2C = D_80114F2C + D_8018F580; + func_8012A4BC(); + } + D_8018F6D0 = 0; + } +} + + + +extern void (*D_80181B7C[])(void); + +void func_8017BE60(void *a0) { + D_80181B7C[*(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) */ + diff --git a/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c b/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c index 6fce23b26..c008ed73c 100644 --- a/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c +++ b/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c @@ -2946,662 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801EECD4; - extern s16 D_801EECD6; - extern s16 D_801EECD8; - extern s16 D_801EECCC; - extern s16 D_801EECCE; - extern s16 D_801EECD0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801EECD4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801EECD6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801EECD8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801EECCC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801EECCE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801EECD0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801EEC5C; -extern u16 D_801EECDC; -extern u16 D_801EECDE; -extern u16 D_801EECE0; -extern s16 D_801F1638; - -void func_8017B1D8(void) { - func_8012A418(); - D_801F1638 = 0; - D_801EEC5C = 0; - D_801EECDC = D_80126B5E; - D_801EECDE = D_80126B62; - D_801EECE0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80193D6C[]; - extern s16 D_801EECD4; - extern s16 D_801EECCC; - 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_80193D6C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80193D6C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801EECD4; - s16 *p78C = &D_801EECCC; - *(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_801F1638 = 1; - D_801EEC5C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801EEC7C; - extern SV4_8017B368 D_801EEC84; - extern s16 D_801EECD4; - extern s16 D_801EECCC; - extern u16 D_80193D6C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801EEC7C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801EEC84; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80193D6C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80193D6C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801EECD4) = loc0; - (*(SV4_8017B368 *)&D_801EECCC) = loc1; - D_801F1638 = 1; - D_801EEC5C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80193D6C[]; - extern s16 D_801EECD4; - extern s16 D_801EECD6; - extern s16 D_801EECD8; - extern s16 D_801EECCC; - extern s16 D_801EECCE; - extern s16 D_801EECD0; - 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_80193D6C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80193D6C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801EECD4; - s16 *p78C = &D_801EECCC; - *(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_801EECD6; - v798 = D_801EECD8; - v78C = *p78C; - v78E = D_801EECCE; - v790 = D_801EECD0; - __asm__ __volatile__(""); - D_801F1638 = 1; - D_801EEC5C = 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_801EEC5C; -extern s16 D_801EECD4; -extern s16 D_801EECD6; -extern s16 D_801EECD8; -extern s16 D_801EECCC; -extern s16 D_801EECCE; -extern s16 D_801EECD0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801EEC5C = 0; - D_801EECD4 = (s16) D_80114F30; - D_801EECD6 = (s16) D_80114F34; - D_801EECD8 = (s16) D_80114F38; - D_801EECCC = (s16) D_80114F24; - D_801EECCE = (s16) D_80114F28; - D_801EECD0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801EECEC; -extern s16 D_801EECEE; -extern s16 D_801EECF0; -extern s16 D_801EECF4; -extern s16 D_801EECF6; -extern s16 D_801EECF8; - -void func_8017B824(void) { - D_801EECEC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801EECEE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801EECF0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801EECF4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801EECF6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801EECF8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801EECEC; -extern s16 D_801EECEE; -extern s16 D_801EECF0; -extern s16 D_801EECF4; -extern s16 D_801EECF6; -extern s16 D_801EECF8; - -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_801EECEC; - D_80114F34 = D_801EECEE; - D_80114F38 = D_801EECF0; - D_80114F24 = D_801EECF4; - D_80114F28 = D_801EECF6; - D_80114F2C = D_801EECF8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801EECD4), src[8..15] -> (*(S8_8017B8E8 *)&D_801EECCC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801EECD4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801EECCC) = ((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_801EECDC; -extern u16 D_801EECDE; -extern u16 D_801EECE0; - -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_801EEC5C; -extern short D_801EECE4; -extern short D_801EECE6; -extern short D_801EECE8; -extern s16 D_801EECD4; -extern s16 D_801EECD6; -extern s16 D_801EECD8; -extern s16 D_801EECCC; -extern s16 D_801EECCE; -extern s16 D_801EECD0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801EECDC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801EECDE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801EECE0); - (*(s16 *)&D_801EECE4) = buf[0]; - (*(s16 *)&D_801EECE6) = buf[1]; - (*(s16 *)&D_801EECE8) = buf[2]; - D_801EECD4 = D_80114F30 + buf[0]; - D_801EEC5C = 0; - D_801EECD6 = D_80114F34 + buf[1]; - D_801EECD8 = D_80114F38 + buf[2]; - D_801EECCC = D_80114F24 + buf[0]; - D_801EECCE = D_80114F28 + buf[1]; - D_801EECD0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801EEC7C; -extern SV4 D_801EEC84; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801EEC84) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801EEC7C = 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_801EEC84 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801EEC84)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801EEC7C) = 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_801EEC84) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801EECA4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801EECA4; - 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_801EEC5C; -extern s16 D_801F1638; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801EEC5C = D_801EEC5C + 1; - if (D_801EEC5C >= 0x1F) { - D_801F1638 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801EEC5C; -extern s16 D_801F1638; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801EEC5C = D_801EEC5C + 1; - if (0x18 < D_801EEC5C) { - func_8012A4BC(); - D_801F1638 = 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_801EEC5C; -extern void (*D_801EECA0)(void); -extern short D_801EECE4; -extern short D_801EECE6; -extern short D_801EECE8; -extern s16 D_801F1638; - -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_801EEC5C = D_801EEC5C + 1; - if (D_801EEC5C >= 0x19) { - if (D_801EECA0 != 0) { - (*D_801EECA0)(); - } else { - D_80114F30 = D_80114F30 + D_801EECE4; - D_80114F34 = D_80114F34 + D_801EECE6; - D_80114F38 = D_80114F38 + D_801EECE8; - D_80114F24 = D_80114F24 + D_801EECE4; - D_80114F28 = D_80114F28 + D_801EECE6; - D_80114F2C = D_80114F2C + D_801EECE8; - func_8012A4BC(); - } - D_801F1638 = 0; - } -} - - - -extern void (*D_80193E0C[])(void); - -void func_8017BE60(void *a0) { - D_80193E0C[*(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) */ - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017BEBC); - - -extern void (*D_80193E44[])(void); - -void func_8017BEF8(void *a0) { - D_80193E44[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017BF34); - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017BF84); - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017BFE0); - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017C064); - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017C1CC); - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017C218); - - -extern void (*D_80193E58[])(void); - -void func_8017C524(void *a0) { - D_80193E58[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017C560); - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017C5A0); - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017C610); - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017C69C); - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017C770); - - -extern void (*D_80193E6C[])(void); - -void func_8017C7C4(void *a0) { - D_80193E6C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017C800); - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017C8B4); - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017C910); - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017CA80); - -extern void func_8017CAF8(s32 arg0, s32 arg1, s32 arg2, s32 arg3); - void func_8017CAA4(s32 arg0, s32 arg1, s16 arg2) { - func_8017CAF8(arg0, arg1, arg2, 0); - } - - - - -extern void func_8017CAF8(s32 arg0, s32 arg1, s32 arg2, s32 arg3); - void func_8017CACC(void *a0, void *a1, s32 a2, s32 a3) { - ((void (*)(void *, void *, s32, s32))func_8017CAF8)(a0, a1, (s16)a2, (s16)a3); - } - - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017CAF8); - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017CB80); - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017CBD4); - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017CC2C); - - -extern void (*D_80193EC8[])(void); - -void func_8017CCD8(void *a0) { - D_80193EC8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017CD14); - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017A4AC", func_8017D000); diff --git a/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c b/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c new file mode 100644 index 000000000..daceff97d --- /dev/null +++ b/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c @@ -0,0 +1,3539 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80192964; +extern u8 D_801928D4; +extern u8 D_801928B0; +extern u8 D_8019288C; +extern u8 D_80192940; +extern u8 D_8019291C; +extern u8 D_801928F8; +extern u8 D_80192868; +extern void func_80145934(void); +extern u8 D_801929F4; +extern u8 D_801929D0; +extern u8 D_801929AC; +extern u8 D_80192988; +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_80191DEC[]; +extern unsigned char D_80191E1C[]; +extern unsigned char D_80191E6C[]; +extern unsigned char D_80191E9C[]; +extern unsigned char D_80191ECC[]; +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(void); +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_80191F1C[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80191FE4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8019206C[]; +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_80192074; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801EDB58; +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_801EDB5C; +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_801920A4; +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 void 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_8019214C[])(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_80192170[])(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_80192160; +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_80192184[])(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_80192190[]; +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_801921A0[])(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_801921B8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801921A8; +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_801921CC[])(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_801921E8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801921D8; +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_801921FC[])(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_80192210[])(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_80192224; +extern void (*D_8019224C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8019222C; +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_80192298[])(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_8019229C[])(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(void *a0); +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_80192700[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80192710[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801EDB90; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80192738[])(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_80192718; +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_80192728; +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_80192778[])(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_80192780[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8019274C; +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_8019278C[])(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_8019275C; +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_801EDB98; +extern s32 D_801EDBA4; +extern s32 D_801EDBA8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801927C8[])(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_8019279C[]; +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_801EDBA0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80192A18[])(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_80192838[]; +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_80192ABC[])(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_80192C10[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80192A2C; +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_80192C18[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80192A3C; +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_80192A5C; +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_80192C20[])(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(void); +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_80192C48[])(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_80192C54[])(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_80192AC8[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80192CF8; +extern void func_8015D380(s32 a0); +extern unsigned char D_80191DDC[]; +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_80192D0C[]; +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_80192D48[]; +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_80192D90; +extern u16 D_80192D92; +extern u16 D_80192D94; +extern s32 D_80192D98; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80192DA0; +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_80192AAC; +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_80192E24[]; +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_80192ED4[])(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_80192F04[]; +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_80192F68; +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_801EDBB0[]; +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_80192F8C[])(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_801EDC08[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80192FD4[])(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_80192FC4; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801ED2A8[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_80192FDC[])(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_80193030[])(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_80192FF8; +extern s16 D_8019302C; +extern s16 D_8019302A; +extern s16 D_80193028; +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_8019303C[])(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_801EDC68; +extern u8 D_801EDC69; +extern u8 D_801EDC6A; +extern u8 D_801EDC6B; +extern u8 D_801EDC6C; +extern u8 D_801EDC6D; +extern u8 D_801EDC6E; +extern u8 D_801EDC6F; +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_8019304C[])(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_801EDCA8; +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_80193090[])(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_8019310C[]; +extern s32 D_8019312C[]; +extern u8 D_801931A8[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801931C8[]; +extern u8 D_801931E8[]; +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_80193284[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80193300[])(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_801ED2B8; +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_8019330C[])(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_80193314[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801933DC[])(void); +extern void func_80166618(void *a0); +extern void (*D_801933EC[])(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_801933FC[])(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_80193408[])(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_80193368[]; +extern u8 D_8019337C[]; +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_80193420[])(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_80193428[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80193430[])(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_80193438[])(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_80193440[])(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_80193448[])(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_80193450[])(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_80193504[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8019350C[])(void); +extern void func_80169F00(void *a0); +extern char D_801934BC[]; +extern char D_8019347C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80193544[])(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_80193550[])(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_80193598[])(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_80193614[])(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_801EDFC8; +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_80193608[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8019364C[]; +extern unsigned short D_80193654[]; +extern unsigned short D_8019365C[]; +extern unsigned char D_801EDFD0[]; +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_801EDFC8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80193664[])(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_801EE104; +extern M2C_UNK D_801EE108; +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_801EE090; +extern void (*D_80193694[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801EE10C[]; +extern u8 D_801EE114[]; +extern u8 D_801EE0C4[]; +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_8019369C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801936B8[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801936C0[])(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_80193728[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801936CC; +extern u8 D_801936D8; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8019375C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80193764[])(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_801937B8[])(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_801937EC[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801937DC[]; +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_80193808; +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); +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_80193880[])(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_80193888[])(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_80193890[])(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_80193898[])(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_801938A0[])(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_801938A8[])(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_801938B4[])(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_801938C0[])(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_801938CC[])(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_801938DC[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801938EC[])(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_801938F4[])(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_801938FC[])(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_80193904[])(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_8019390C[])(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_80193914[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8019391C[])(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_80193924[])(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_8019392C[])(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_80193934[])(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_8019393C[])(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_80193944[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8019394C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80193954[])(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_8019395C[])(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_80193964[])(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_8019396C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80193974[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8019397C[])(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_80193984[])(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_8019398C[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80193994[])(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_8019399C[])(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_801939E0[])(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_801939A4; +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_80193A10[])(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_80193A4C[])(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(s32); +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_80193AA4[])(); +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_80193AB4[])(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_80193ABC[])(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_80193C24[])(); +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_80193C30[])(); +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_801ED500; +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 int func_801789AC(void); +extern s16 D_801F1638; +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_801EE848; +extern short D_801F16AC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801EEC74; +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_801EEC9C; +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_801EEC58; +extern s32 func_8017A3B0(void); +extern short D_801EEC94; +extern short D_801EEC90; +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_801F1608; +extern s16 D_801F160A; +extern s16 D_801F1614; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801F1608; + + 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_801F1614); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801F1608+0xC == &D_801F1614; 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_801F1608 + 0xC)) < 0x101) { + D_801F1608 = 0; + D_801F160A = 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_801F1614); + 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_801F1608 + 0xC)) < 0x101) { + D_801F1608 = 0; + D_801F160A = 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_801EECD4; + extern s16 D_801EECD6; + extern s16 D_801EECD8; + extern s16 D_801EECCC; + extern s16 D_801EECCE; + extern s16 D_801EECD0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801EECD4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801EECD6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801EECD8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801EECCC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801EECCE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801EECD0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801EEC5C; +extern u16 D_801EECDC; +extern u16 D_801EECDE; +extern u16 D_801EECE0; +extern s16 D_801F1638; + +void func_8017B1D8(void) { + func_8012A418(); + D_801F1638 = 0; + D_801EEC5C = 0; + D_801EECDC = D_80126B5E; + D_801EECDE = D_80126B62; + D_801EECE0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80193D6C[]; + extern s16 D_801EECD4; + extern s16 D_801EECCC; + 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_80193D6C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80193D6C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801EECD4; + s16 *p78C = &D_801EECCC; + *(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_801F1638 = 1; + D_801EEC5C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801EEC7C; + extern SV4_8017B368 D_801EEC84; + extern s16 D_801EECD4; + extern s16 D_801EECCC; + extern u16 D_80193D6C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801EEC7C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801EEC84; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80193D6C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80193D6C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801EECD4) = loc0; + (*(SV4_8017B368 *)&D_801EECCC) = loc1; + D_801F1638 = 1; + D_801EEC5C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80193D6C[]; + extern s16 D_801EECD4; + extern s16 D_801EECD6; + extern s16 D_801EECD8; + extern s16 D_801EECCC; + extern s16 D_801EECCE; + extern s16 D_801EECD0; + 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_80193D6C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80193D6C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801EECD4; + s16 *p78C = &D_801EECCC; + *(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_801EECD6; + v798 = D_801EECD8; + v78C = *p78C; + v78E = D_801EECCE; + v790 = D_801EECD0; + __asm__ __volatile__(""); + D_801F1638 = 1; + D_801EEC5C = 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_801EEC5C; +extern s16 D_801EECD4; +extern s16 D_801EECD6; +extern s16 D_801EECD8; +extern s16 D_801EECCC; +extern s16 D_801EECCE; +extern s16 D_801EECD0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801EEC5C = 0; + D_801EECD4 = (s16) D_80114F30; + D_801EECD6 = (s16) D_80114F34; + D_801EECD8 = (s16) D_80114F38; + D_801EECCC = (s16) D_80114F24; + D_801EECCE = (s16) D_80114F28; + D_801EECD0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801EECEC; +extern s16 D_801EECEE; +extern s16 D_801EECF0; +extern s16 D_801EECF4; +extern s16 D_801EECF6; +extern s16 D_801EECF8; + +void func_8017B824(void) { + D_801EECEC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801EECEE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801EECF0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801EECF4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801EECF6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801EECF8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801EECEC; +extern s16 D_801EECEE; +extern s16 D_801EECF0; +extern s16 D_801EECF4; +extern s16 D_801EECF6; +extern s16 D_801EECF8; + +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_801EECEC; + D_80114F34 = D_801EECEE; + D_80114F38 = D_801EECF0; + D_80114F24 = D_801EECF4; + D_80114F28 = D_801EECF6; + D_80114F2C = D_801EECF8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801EECD4), src[8..15] -> (*(S8_8017B8E8 *)&D_801EECCC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801EECD4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801EECCC) = ((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_801EECDC; +extern u16 D_801EECDE; +extern u16 D_801EECE0; + +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_801EEC5C; +extern short D_801EECE4; +extern short D_801EECE6; +extern short D_801EECE8; +extern s16 D_801EECD4; +extern s16 D_801EECD6; +extern s16 D_801EECD8; +extern s16 D_801EECCC; +extern s16 D_801EECCE; +extern s16 D_801EECD0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801EECDC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801EECDE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801EECE0); + (*(s16 *)&D_801EECE4) = buf[0]; + (*(s16 *)&D_801EECE6) = buf[1]; + (*(s16 *)&D_801EECE8) = buf[2]; + D_801EECD4 = D_80114F30 + buf[0]; + D_801EEC5C = 0; + D_801EECD6 = D_80114F34 + buf[1]; + D_801EECD8 = D_80114F38 + buf[2]; + D_801EECCC = D_80114F24 + buf[0]; + D_801EECCE = D_80114F28 + buf[1]; + D_801EECD0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801EEC7C; +extern SV4 D_801EEC84; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801EEC84) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801EEC7C = 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_801EEC84 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801EEC84)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801EEC7C) = 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_801EEC84) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801EECA4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801EECA4; + 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_801EEC5C; +extern s16 D_801F1638; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801EEC5C = D_801EEC5C + 1; + if (D_801EEC5C >= 0x1F) { + D_801F1638 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801EEC5C; +extern s16 D_801F1638; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801EEC5C = D_801EEC5C + 1; + if (0x18 < D_801EEC5C) { + func_8012A4BC(); + D_801F1638 = 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_801EEC5C; +extern void (*D_801EECA0)(void); +extern short D_801EECE4; +extern short D_801EECE6; +extern short D_801EECE8; +extern s16 D_801F1638; + +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_801EEC5C = D_801EEC5C + 1; + if (D_801EEC5C >= 0x19) { + if (D_801EECA0 != 0) { + (*D_801EECA0)(); + } else { + D_80114F30 = D_80114F30 + D_801EECE4; + D_80114F34 = D_80114F34 + D_801EECE6; + D_80114F38 = D_80114F38 + D_801EECE8; + D_80114F24 = D_80114F24 + D_801EECE4; + D_80114F28 = D_80114F28 + D_801EECE6; + D_80114F2C = D_80114F2C + D_801EECE8; + func_8012A4BC(); + } + D_801F1638 = 0; + } +} + + + +extern void (*D_80193E0C[])(void); + +void func_8017BE60(void *a0) { + D_80193E0C[*(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) */ + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017BEBC); + + +extern void (*D_80193E44[])(void); + +void func_8017BEF8(void *a0) { + D_80193E44[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017BF34); + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017BF84); + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017BFE0); + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017C064); + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017C1CC); + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017C218); + + +extern void (*D_80193E58[])(void); + +void func_8017C524(void *a0) { + D_80193E58[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017C560); + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017C5A0); + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017C610); + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017C69C); + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017C770); + + +extern void (*D_80193E6C[])(void); + +void func_8017C7C4(void *a0) { + D_80193E6C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017C800); + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017C8B4); + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017C910); + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017CA80); + +extern void func_8017CAF8(s32 arg0, s32 arg1, s32 arg2, s32 arg3); + void func_8017CAA4(s32 arg0, s32 arg1, s16 arg2) { + func_8017CAF8(arg0, arg1, arg2, 0); + } + + + + +extern void func_8017CAF8(s32 arg0, s32 arg1, s32 arg2, s32 arg3); + void func_8017CACC(void *a0, void *a1, s32 a2, s32 a3) { + ((void (*)(void *, void *, s32, s32))func_8017CAF8)(a0, a1, (s16)a2, (s16)a3); + } + + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017CAF8); + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017CB80); + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017CBD4); + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017CC2C); + + +extern void (*D_80193EC8[])(void); + +void func_8017CCD8(void *a0) { + D_80193EC8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017CD14); + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017AE2C", func_8017D000); + diff --git a/src/ov_SC04_012/ov_SC04_012_jr_8017A4AC.c b/src/ov_SC04_012/ov_SC04_012_jr_8017A4AC.c index d1ae59987..948fa3535 100644 --- a/src/ov_SC04_012/ov_SC04_012_jr_8017A4AC.c +++ b/src/ov_SC04_012/ov_SC04_012_jr_8017A4AC.c @@ -2946,774 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_80191C44; - extern s16 D_80191C46; - extern s16 D_80191C48; - extern s16 D_80191C3C; - extern s16 D_80191C3E; - extern s16 D_80191C40; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80191C44, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80191C46, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80191C48, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_80191C3C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_80191C3E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80191C40, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80191BCC; -extern u16 D_80191C4C; -extern u16 D_80191C4E; -extern u16 D_80191C50; -extern s16 D_801931C8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801931C8 = 0; - D_80191BCC = 0; - D_80191C4C = D_80126B5E; - D_80191C4E = D_80126B62; - D_80191C50 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80181F40[]; - extern s16 D_80191C44; - extern s16 D_80191C3C; - 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_80181F40[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80181F40[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80191C44; - s16 *p78C = &D_80191C3C; - *(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_801931C8 = 1; - D_80191BCC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_80191BEC; - extern SV4_8017B368 D_80191BF4; - extern s16 D_80191C44; - extern s16 D_80191C3C; - extern u16 D_80181F40; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_80191BEC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_80191BF4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80181F40)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80181F40)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_80191C44) = loc0; - (*(SV4_8017B368 *)&D_80191C3C) = loc1; - D_801931C8 = 1; - D_80191BCC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80181F40[]; - extern s16 D_80191C44; - extern s16 D_80191C46; - extern s16 D_80191C48; - extern s16 D_80191C3C; - extern s16 D_80191C3E; - extern s16 D_80191C40; - 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_80181F40[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80181F40[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80191C44; - s16 *p78C = &D_80191C3C; - *(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_80191C46; - v798 = D_80191C48; - v78C = *p78C; - v78E = D_80191C3E; - v790 = D_80191C40; - __asm__ __volatile__(""); - D_801931C8 = 1; - D_80191BCC = 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_80191BCC; -extern s16 D_80191C44; -extern s16 D_80191C46; -extern s16 D_80191C48; -extern s16 D_80191C3C; -extern s16 D_80191C3E; -extern s16 D_80191C40; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_80191BCC = 0; - D_80191C44 = (s16) D_80114F30; - D_80191C46 = (s16) D_80114F34; - D_80191C48 = (s16) D_80114F38; - D_80191C3C = (s16) D_80114F24; - D_80191C3E = (s16) D_80114F28; - D_80191C40 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_80191C5C; -extern s16 D_80191C5E; -extern s16 D_80191C60; -extern s16 D_80191C64; -extern s16 D_80191C66; -extern s16 D_80191C68; - -void func_8017B824(void) { - D_80191C5C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_80191C5E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_80191C60 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_80191C64 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_80191C66 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_80191C68 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_80191C5C; -extern s16 D_80191C5E; -extern s16 D_80191C60; -extern s16 D_80191C64; -extern s16 D_80191C66; -extern s16 D_80191C68; - -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_80191C5C; - D_80114F34 = D_80191C5E; - D_80114F38 = D_80191C60; - D_80114F24 = D_80191C64; - D_80114F28 = D_80191C66; - D_80114F2C = D_80191C68; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_80191C44), src[8..15] -> (*(S8_8017B8E8 *)&D_80191C3C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_80191C44) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_80191C3C) = ((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_80191C4C; -extern u16 D_80191C4E; -extern u16 D_80191C50; - -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_80191BCC; -extern short D_80191C54; -extern short D_80191C56; -extern short D_80191C58; -extern s16 D_80191C44; -extern s16 D_80191C46; -extern s16 D_80191C48; -extern s16 D_80191C3C; -extern s16 D_80191C3E; -extern s16 D_80191C40; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_80191C4C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_80191C4E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80191C50); - (*(s16 *)&D_80191C54) = buf[0]; - (*(s16 *)&D_80191C56) = buf[1]; - (*(s16 *)&D_80191C58) = buf[2]; - D_80191C44 = D_80114F30 + buf[0]; - D_80191BCC = 0; - D_80191C46 = D_80114F34 + buf[1]; - D_80191C48 = D_80114F38 + buf[2]; - D_80191C3C = D_80114F24 + buf[0]; - D_80191C3E = D_80114F28 + buf[1]; - D_80191C40 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_80191BEC; -extern SV4 D_80191BF4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_80191BF4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_80191BEC = 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_80191BF4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80191BF4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_80191BEC) = 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_80191BF4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_80191C14[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_80191C14; - 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_80191BCC; -extern s16 D_801931C8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_80191BCC = D_80191BCC + 1; - if (D_80191BCC >= 0x1F) { - D_801931C8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_80191BCC; -extern s16 D_801931C8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_80191BCC = D_80191BCC + 1; - if (0x18 < D_80191BCC) { - func_8012A4BC(); - D_801931C8 = 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_80191BCC; -extern void (*D_80191C10)(void); -extern short D_80191C54; -extern short D_80191C56; -extern short D_80191C58; -extern s16 D_801931C8; - -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_80191BCC = D_80191BCC + 1; - if (D_80191BCC >= 0x19) { - if (D_80191C10 != 0) { - (*D_80191C10)(); - } else { - D_80114F30 = D_80114F30 + D_80191C54; - D_80114F34 = D_80114F34 + D_80191C56; - D_80114F38 = D_80114F38 + D_80191C58; - D_80114F24 = D_80114F24 + D_80191C54; - D_80114F28 = D_80114F28 + D_80191C56; - D_80114F2C = D_80114F2C + D_80191C58; - func_8012A4BC(); - } - D_801931C8 = 0; - } -} - - - -extern void (*D_80181FE0[])(void); - -void func_8017BE60(void *a0) { - D_80181FE0[*(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) */ - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017BEBC); - - -extern void (*D_80182064[])(void); - -void func_8017CD9C(void *a0) { - D_80182064[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017CDD8); - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017CE44(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_8018206C[])(void); - -void func_8017CE68(void *a0) { - D_8018206C[*(u8 *)((s32)a0 + 0x15)](); -} - - -s32 func_8017CEA4(u8 *a0) { - *(s32 *)(a0 + 0x28) = 0xA; - 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_8017CEC0(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_8017CF3C(void) { - func_800D1EBC(); -} - - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017CF5C); - - -extern void (*D_80182084[])(void); - -void func_8017CFEC(void *a0) { - D_80182084[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017D028); - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017D06C); - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017D094); - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017D0BC); - - -extern void (*D_801820A4[])(void); - -void func_8017D154(void *a0) { - D_801820A4[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017D190); - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017D248); - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017D3E0); - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017D4CC); - - -extern void (*D_80182280[])(void); - -void func_8017D698(void *a0) { - D_80182280[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -extern s32 D_801930E4; - s32 func_8017D6D4(void) { - return 0x2 - D_801930E4; - } - - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017D6E8); - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017D720); - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017D770); - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017D798); - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017D7C0); - -void func_8017D7E8(void) { -} - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017D7F0); - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017D894); - -extern s32 func_8013CB84(void); - void func_8017D910(void) { - func_8013CB84(); - } - - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017D930); - - -extern void (*D_801822B0[])(void); - -void func_8017D960(void *a0) { - D_801822B0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017D99C); - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017DAE4); - - -extern void (*D_801822B8[])(void); - -void func_8017DBB0(void *a0) { - D_801822B8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017DBEC); - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017DD84); - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017DE74); - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017DED4); - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017E060); - - -extern void (*D_801822C4[])(void); - -void func_8017E090(void *a0) { - D_801822C4[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_8012BF4C(s32 *a0, s16 a1); - extern s32 func_8012AD50(void *a0); - void func_8017E0CC(s32 *a0) { - func_8012BF4C(a0, 0); - ((void (*)(void *))func_8012AD50)((void *)a0); - } - - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017E100); - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017E250); - - -extern void (*D_80182300[])(void); - -void func_8017E33C(void *a0) { - D_80182300[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017E378); - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017E45C); - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017A4AC", func_8017E4C8); - - - diff --git a/src/ov_SC04_012/ov_SC04_012_jr_8017AE2C.c b/src/ov_SC04_012/ov_SC04_012_jr_8017AE2C.c new file mode 100644 index 000000000..00c5a1905 --- /dev/null +++ b/src/ov_SC04_012/ov_SC04_012_jr_8017AE2C.c @@ -0,0 +1,3651 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80180B38; +extern u8 D_80180AA8; +extern u8 D_80180A84; +extern u8 D_80180A60; +extern u8 D_80180B14; +extern u8 D_80180AF0; +extern u8 D_80180ACC; +extern u8 D_80180A3C; +extern void func_80145934(void); +extern u8 D_80180BC8; +extern u8 D_80180BA4; +extern u8 D_80180B80; +extern u8 D_80180B5C; +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_8017FFC0[]; +extern unsigned char D_8017FFF0[]; +extern unsigned char D_80180040[]; +extern unsigned char D_80180070[]; +extern unsigned char D_801800A0[]; +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(void); +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_801800F0[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_801801B8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80180240[]; +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_80180248; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_80190AC8; +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_80190ACC; +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_80180278; +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 void 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_80180320[])(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_80180344[])(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_80180334; +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_80180358[])(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_80180364[]; +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_80180374[])(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_8018038C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018037C; +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_801803A0[])(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_801803BC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801803AC; +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_801803D0[])(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_801803E4[])(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_801803F8; +extern void (*D_80180420[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80180400; +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_8018046C[])(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_80180470[])(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(void *a0); +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_801808D4[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_801808E4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_80190B00; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018090C[])(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_801808EC; +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_801808FC; +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_8018094C[])(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_80180954[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180920; +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_80180960[])(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_80180930; +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_80190B08; +extern s32 D_80190B14; +extern s32 D_80190B18; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018099C[])(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_80180970[]; +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_80190B10; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80180BEC[])(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_80180A0C[]; +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_80180C90[])(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_80180DE4[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80180C00; +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_80180DEC[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80180C10; +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_80180C30; +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_80180DF4[])(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(void); +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_80180E1C[])(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_80180E28[])(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_80180C9C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80180ECC; +extern void func_8015D380(s32 a0); +extern unsigned char D_8017FFB0[]; +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_80180EE0[]; +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_80180F1C[]; +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_80180F64; +extern u16 D_80180F66; +extern u16 D_80180F68; +extern s32 D_80180F6C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80180F74; +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_80180C80; +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_80180FF8[]; +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_801810A8[])(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_801810D8[]; +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_8018113C; +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_80190B20[]; +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_80181160[])(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_80190B78[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_801811A8[])(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_80181198; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801903EC[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_801811B0[])(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_80181204[])(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_801811CC; +extern s16 D_80181200; +extern s16 D_801811FE; +extern s16 D_801811FC; +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_80181210[])(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_80190BD8; +extern u8 D_80190BD9; +extern u8 D_80190BDA; +extern u8 D_80190BDB; +extern u8 D_80190BDC; +extern u8 D_80190BDD; +extern u8 D_80190BDE; +extern u8 D_80190BDF; +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_80181220[])(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_80190C18; +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_80181264[])(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_801812E0[]; +extern s32 D_80181300[]; +extern u8 D_8018137C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018139C[]; +extern u8 D_801813BC[]; +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_80181458[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801814D4[])(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_801903FC; +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_801814E0[])(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_801814E8[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801815B0[])(void); +extern void func_80166618(void *a0); +extern void (*D_801815C0[])(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_801815D0[])(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_801815DC[])(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_8018153C[]; +extern u8 D_80181550[]; +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_801815F4[])(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_801815FC[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80181604[])(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_8018160C[])(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_80181614[])(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_8018161C[])(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_80181624[])(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_801816D8[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801816E0[])(void); +extern void func_80169F00(void *a0); +extern char D_80181690[]; +extern char D_80181650[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80181718[])(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_80181724[])(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_8018176C[])(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_801817E8[])(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_80190F38; +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_801817DC[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80181820[]; +extern unsigned short D_80181828[]; +extern unsigned short D_80181830[]; +extern unsigned char D_80190F40[]; +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_80190F38; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80181838[])(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_80191074; +extern M2C_UNK D_80191078; +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_80191000; +extern void (*D_80181868[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8019107C[]; +extern u8 D_80191084[]; +extern u8 D_80191034[]; +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_80181870[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018188C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80181894[])(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_801818FC[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801818A0; +extern u8 D_801818AC; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80181930[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80181938[])(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_8018198C[])(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_801819C0[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801819B0[]; +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_801819DC; +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); +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_80181A54[])(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_80181A5C[])(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_80181A64[])(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_80181A6C[])(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_80181A74[])(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_80181A7C[])(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_80181A88[])(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_80181A94[])(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_80181AA0[])(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_80181AB0[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80181AC0[])(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_80181AC8[])(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_80181AD0[])(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_80181AD8[])(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_80181AE0[])(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_80181AE8[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80181AF0[])(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_80181AF8[])(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_80181B00[])(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_80181B08[])(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_80181B10[])(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_80181B18[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80181B20[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80181B28[])(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_80181B30[])(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_80181B38[])(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_80181B40[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80181B48[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80181B50[])(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_80181B58[])(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_80181B60[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80181B68[])(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_80181B70[])(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_80181BB4[])(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_80181B78; +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_80181BE4[])(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_80181C20[])(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(s32); +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_80181C78[])(); +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_80181C88[])(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_80181C90[])(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_80181DF8[])(); +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_80181E04[])(); +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_80190644; +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 int func_801789AC(void); +extern s16 D_801931C8; +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_801917B8; +extern short D_8019323C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_80191BE4; +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_80191C0C; +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_80191BC8; +extern s32 func_8017A3B0(void); +extern short D_80191C04; +extern short D_80191C00; +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_80193198; +extern s16 D_8019319A; +extern s16 D_801931A4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_80193198; + + 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_801931A4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_80193198+0xC == &D_801931A4; 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_80193198 + 0xC)) < 0x101) { + D_80193198 = 0; + D_8019319A = 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_801931A4); + 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_80193198 + 0xC)) < 0x101) { + D_80193198 = 0; + D_8019319A = 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_80191C44; + extern s16 D_80191C46; + extern s16 D_80191C48; + extern s16 D_80191C3C; + extern s16 D_80191C3E; + extern s16 D_80191C40; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80191C44, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80191C46, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80191C48, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_80191C3C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_80191C3E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80191C40, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_80191BCC; +extern u16 D_80191C4C; +extern u16 D_80191C4E; +extern u16 D_80191C50; +extern s16 D_801931C8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801931C8 = 0; + D_80191BCC = 0; + D_80191C4C = D_80126B5E; + D_80191C4E = D_80126B62; + D_80191C50 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80181F40[]; + extern s16 D_80191C44; + extern s16 D_80191C3C; + 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_80181F40[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80181F40[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80191C44; + s16 *p78C = &D_80191C3C; + *(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_801931C8 = 1; + D_80191BCC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_80191BEC; + extern SV4_8017B368 D_80191BF4; + extern s16 D_80191C44; + extern s16 D_80191C3C; + extern u16 D_80181F40; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_80191BEC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_80191BF4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80181F40)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80181F40)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_80191C44) = loc0; + (*(SV4_8017B368 *)&D_80191C3C) = loc1; + D_801931C8 = 1; + D_80191BCC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80181F40[]; + extern s16 D_80191C44; + extern s16 D_80191C46; + extern s16 D_80191C48; + extern s16 D_80191C3C; + extern s16 D_80191C3E; + extern s16 D_80191C40; + 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_80181F40[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80181F40[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80191C44; + s16 *p78C = &D_80191C3C; + *(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_80191C46; + v798 = D_80191C48; + v78C = *p78C; + v78E = D_80191C3E; + v790 = D_80191C40; + __asm__ __volatile__(""); + D_801931C8 = 1; + D_80191BCC = 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_80191BCC; +extern s16 D_80191C44; +extern s16 D_80191C46; +extern s16 D_80191C48; +extern s16 D_80191C3C; +extern s16 D_80191C3E; +extern s16 D_80191C40; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_80191BCC = 0; + D_80191C44 = (s16) D_80114F30; + D_80191C46 = (s16) D_80114F34; + D_80191C48 = (s16) D_80114F38; + D_80191C3C = (s16) D_80114F24; + D_80191C3E = (s16) D_80114F28; + D_80191C40 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_80191C5C; +extern s16 D_80191C5E; +extern s16 D_80191C60; +extern s16 D_80191C64; +extern s16 D_80191C66; +extern s16 D_80191C68; + +void func_8017B824(void) { + D_80191C5C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_80191C5E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_80191C60 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_80191C64 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_80191C66 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_80191C68 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_80191C5C; +extern s16 D_80191C5E; +extern s16 D_80191C60; +extern s16 D_80191C64; +extern s16 D_80191C66; +extern s16 D_80191C68; + +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_80191C5C; + D_80114F34 = D_80191C5E; + D_80114F38 = D_80191C60; + D_80114F24 = D_80191C64; + D_80114F28 = D_80191C66; + D_80114F2C = D_80191C68; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_80191C44), src[8..15] -> (*(S8_8017B8E8 *)&D_80191C3C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_80191C44) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_80191C3C) = ((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_80191C4C; +extern u16 D_80191C4E; +extern u16 D_80191C50; + +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_80191BCC; +extern short D_80191C54; +extern short D_80191C56; +extern short D_80191C58; +extern s16 D_80191C44; +extern s16 D_80191C46; +extern s16 D_80191C48; +extern s16 D_80191C3C; +extern s16 D_80191C3E; +extern s16 D_80191C40; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_80191C4C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_80191C4E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80191C50); + (*(s16 *)&D_80191C54) = buf[0]; + (*(s16 *)&D_80191C56) = buf[1]; + (*(s16 *)&D_80191C58) = buf[2]; + D_80191C44 = D_80114F30 + buf[0]; + D_80191BCC = 0; + D_80191C46 = D_80114F34 + buf[1]; + D_80191C48 = D_80114F38 + buf[2]; + D_80191C3C = D_80114F24 + buf[0]; + D_80191C3E = D_80114F28 + buf[1]; + D_80191C40 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_80191BEC; +extern SV4 D_80191BF4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_80191BF4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_80191BEC = 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_80191BF4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80191BF4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_80191BEC) = 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_80191BF4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_80191C14[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_80191C14; + 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_80191BCC; +extern s16 D_801931C8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_80191BCC = D_80191BCC + 1; + if (D_80191BCC >= 0x1F) { + D_801931C8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_80191BCC; +extern s16 D_801931C8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_80191BCC = D_80191BCC + 1; + if (0x18 < D_80191BCC) { + func_8012A4BC(); + D_801931C8 = 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_80191BCC; +extern void (*D_80191C10)(void); +extern short D_80191C54; +extern short D_80191C56; +extern short D_80191C58; +extern s16 D_801931C8; + +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_80191BCC = D_80191BCC + 1; + if (D_80191BCC >= 0x19) { + if (D_80191C10 != 0) { + (*D_80191C10)(); + } else { + D_80114F30 = D_80114F30 + D_80191C54; + D_80114F34 = D_80114F34 + D_80191C56; + D_80114F38 = D_80114F38 + D_80191C58; + D_80114F24 = D_80114F24 + D_80191C54; + D_80114F28 = D_80114F28 + D_80191C56; + D_80114F2C = D_80114F2C + D_80191C58; + func_8012A4BC(); + } + D_801931C8 = 0; + } +} + + + +extern void (*D_80181FE0[])(void); + +void func_8017BE60(void *a0) { + D_80181FE0[*(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) */ + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017BEBC); + + +extern void (*D_80182064[])(void); + +void func_8017CD9C(void *a0) { + D_80182064[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017CDD8); + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017CE44(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_8018206C[])(void); + +void func_8017CE68(void *a0) { + D_8018206C[*(u8 *)((s32)a0 + 0x15)](); +} + + +s32 func_8017CEA4(u8 *a0) { + *(s32 *)(a0 + 0x28) = 0xA; + 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_8017CEC0(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_8017CF3C(void) { + func_800D1EBC(); +} + + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017CF5C); + + +extern void (*D_80182084[])(void); + +void func_8017CFEC(void *a0) { + D_80182084[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D028); + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D06C); + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D094); + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D0BC); + + +extern void (*D_801820A4[])(void); + +void func_8017D154(void *a0) { + D_801820A4[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D190); + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D248); + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D3E0); + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D4CC); + + +extern void (*D_80182280[])(void); + +void func_8017D698(void *a0) { + D_80182280[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +extern s32 D_801930E4; + s32 func_8017D6D4(void) { + return 0x2 - D_801930E4; + } + + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D6E8); + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D720); + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D770); + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D798); + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D7C0); + +void func_8017D7E8(void) { +} + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D7F0); + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D894); + +extern s32 func_8013CB84(void); + void func_8017D910(void) { + func_8013CB84(); + } + + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D930); + + +extern void (*D_801822B0[])(void); + +void func_8017D960(void *a0) { + D_801822B0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D99C); + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017DAE4); + + +extern void (*D_801822B8[])(void); + +void func_8017DBB0(void *a0) { + D_801822B8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017DBEC); + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017DD84); + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017DE74); + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017DED4); + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017E060); + + +extern void (*D_801822C4[])(void); + +void func_8017E090(void *a0) { + D_801822C4[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_8012BF4C(s32 *a0, s16 a1); + extern s32 func_8012AD50(void *a0); + void func_8017E0CC(s32 *a0) { + func_8012BF4C(a0, 0); + ((void (*)(void *))func_8012AD50)((void *)a0); + } + + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017E100); + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017E250); + + +extern void (*D_80182300[])(void); + +void func_8017E33C(void *a0) { + D_80182300[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017E378); + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017E45C); + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017E4C8); + + + + diff --git a/src/ov_SC04_015/ov_SC04_015_jr_8017A4AC.c b/src/ov_SC04_015/ov_SC04_015_jr_8017A4AC.c index 2812ca782..de37f9bfb 100644 --- a/src/ov_SC04_015/ov_SC04_015_jr_8017A4AC.c +++ b/src/ov_SC04_015/ov_SC04_015_jr_8017A4AC.c @@ -2946,1683 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801C892C; - extern s16 D_801C892E; - extern s16 D_801C8930; - extern s16 D_801C8924; - extern s16 D_801C8926; - extern s16 D_801C8928; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C892C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C892E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C8930, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C8924, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C8926, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C8928, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801C88B4; -extern u16 D_801C8934; -extern u16 D_801C8936; -extern u16 D_801C8938; -extern s16 D_801C9368; - -void func_8017B1D8(void) { - func_8012A418(); - D_801C9368 = 0; - D_801C88B4 = 0; - D_801C8934 = D_80126B5E; - D_801C8936 = D_80126B62; - D_801C8938 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80187E78[]; - extern s16 D_801C892C; - extern s16 D_801C8924; - 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_80187E78[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80187E78[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C892C; - s16 *p78C = &D_801C8924; - *(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_801C9368 = 1; - D_801C88B4 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C88D4; - extern SV4_8017B368 D_801C88DC; - extern s16 D_801C892C; - extern s16 D_801C8924; - extern u16 D_80187E78; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801C88D4; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801C88DC; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80187E78)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80187E78)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801C892C) = loc0; - (*(SV4_8017B368 *)&D_801C8924) = loc1; - D_801C9368 = 1; - D_801C88B4 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80187E78[]; - extern s16 D_801C892C; - extern s16 D_801C892E; - extern s16 D_801C8930; - extern s16 D_801C8924; - extern s16 D_801C8926; - extern s16 D_801C8928; - 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_80187E78[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80187E78[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C892C; - s16 *p78C = &D_801C8924; - *(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_801C892E; - v798 = D_801C8930; - v78C = *p78C; - v78E = D_801C8926; - v790 = D_801C8928; - __asm__ __volatile__(""); - D_801C9368 = 1; - D_801C88B4 = 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_801C88B4; -extern s16 D_801C892C; -extern s16 D_801C892E; -extern s16 D_801C8930; -extern s16 D_801C8924; -extern s16 D_801C8926; -extern s16 D_801C8928; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801C88B4 = 0; - D_801C892C = (s16) D_80114F30; - D_801C892E = (s16) D_80114F34; - D_801C8930 = (s16) D_80114F38; - D_801C8924 = (s16) D_80114F24; - D_801C8926 = (s16) D_80114F28; - D_801C8928 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801C8944; -extern s16 D_801C8946; -extern s16 D_801C8948; -extern s16 D_801C894C; -extern s16 D_801C894E; -extern s16 D_801C8950; - -void func_8017B824(void) { - D_801C8944 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801C8946 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801C8948 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801C894C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801C894E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801C8950 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801C8944; -extern s16 D_801C8946; -extern s16 D_801C8948; -extern s16 D_801C894C; -extern s16 D_801C894E; -extern s16 D_801C8950; - -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_801C8944; - D_80114F34 = D_801C8946; - D_80114F38 = D_801C8948; - D_80114F24 = D_801C894C; - D_80114F28 = D_801C894E; - D_80114F2C = D_801C8950; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801C892C), src[8..15] -> (*(S8_8017B8E8 *)&D_801C8924) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801C892C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801C8924) = ((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_801C8934; -extern u16 D_801C8936; -extern u16 D_801C8938; - -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_801C88B4; -extern short D_801C893C; -extern short D_801C893E; -extern short D_801C8940; -extern s16 D_801C892C; -extern s16 D_801C892E; -extern s16 D_801C8930; -extern s16 D_801C8924; -extern s16 D_801C8926; -extern s16 D_801C8928; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C8934); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C8936); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C8938); - (*(s16 *)&D_801C893C) = buf[0]; - (*(s16 *)&D_801C893E) = buf[1]; - (*(s16 *)&D_801C8940) = buf[2]; - D_801C892C = D_80114F30 + buf[0]; - D_801C88B4 = 0; - D_801C892E = D_80114F34 + buf[1]; - D_801C8930 = D_80114F38 + buf[2]; - D_801C8924 = D_80114F24 + buf[0]; - D_801C8926 = D_80114F28 + buf[1]; - D_801C8928 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801C88D4; -extern SV4 D_801C88DC; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C88DC) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801C88D4 = 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_801C88DC = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C88DC)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801C88D4) = 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_801C88DC) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801C88FC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801C88FC; - 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_801C88B4; -extern s16 D_801C9368; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801C88B4 = D_801C88B4 + 1; - if (D_801C88B4 >= 0x1F) { - D_801C9368 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801C88B4; -extern s16 D_801C9368; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801C88B4 = D_801C88B4 + 1; - if (0x18 < D_801C88B4) { - func_8012A4BC(); - D_801C9368 = 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_801C88B4; -extern void (*D_801C88F8)(void); -extern short D_801C893C; -extern short D_801C893E; -extern short D_801C8940; -extern s16 D_801C9368; - -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_801C88B4 = D_801C88B4 + 1; - if (D_801C88B4 >= 0x19) { - if (D_801C88F8 != 0) { - (*D_801C88F8)(); - } else { - D_80114F30 = D_80114F30 + D_801C893C; - D_80114F34 = D_80114F34 + D_801C893E; - D_80114F38 = D_80114F38 + D_801C8940; - D_80114F24 = D_80114F24 + D_801C893C; - D_80114F28 = D_80114F28 + D_801C893E; - D_80114F2C = D_80114F2C + D_801C8940; - func_8012A4BC(); - } - D_801C9368 = 0; - } -} - - - -extern void (*D_80187F18[])(void); - -void func_8017BE60(void *a0) { - D_80187F18[*(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 (*D_80187FB8[])(void); - -void func_8017BEBC(void *a0) { - D_80187FB8[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80187FC0[])(void); - -void func_8017BEF8(void *a0) { - D_80187FC0[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80187FC8[])(void); - -void func_8017BF34(void *a0) { - D_80187FC8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017BF70); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017C0B4); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017C120); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017C1CC); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017C20C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017C2D0); - - -extern void (*D_80187FE8[])(void); - -void func_8017C358(void *a0) { - D_80187FE8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017C394); - -extern void func_80146C3C(void); -void func_8017C558(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_80187FF0[])(void); - -void func_8017C5EC(void *a0) { - D_80187FF0[*(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_80187FDC; - -void func_8017C628(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_80187FDC, 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_8017C6CC(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; - } -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017C730); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017D610); - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017D674(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017D698); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017D6FC); - -extern void func_800D1EBC(void); - void func_8017D7AC(void) { - func_800D1EBC(); - } - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017D7CC); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017D83C); - -s32 func_8017D878(void) { - return 0; - } - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017D880); - - -extern void (*D_80187FF8[])(void); - -void func_8017D8C8(void *a0) { - D_80187FF8[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void (*D_80188000[])(void); - -void func_8017D904(void *a0) { - D_80188000[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void (*D_80188018[])(void); - -void func_8017D940(void *a0) { - D_80188018[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void (*D_801882F0[])(void); - -void func_8017D97C(void *a0) { - D_801882F0[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017D9B8); - -extern void func_8016F0E4(void); -extern void func_80165770(void); -void func_8017D9CC(s32 a0) { - func_8016F0E4(); - ((void (*)(s32))func_80165770)(a0); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017D9FC); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017DA24); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017DA5C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017DA90); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017DAB8); - - -extern void (*D_80188320[])(void); - -void func_8017DB70(void *a0) { - D_80188320[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017DBAC); - -void func_8017DBE0(u8 *a0) { - *(s8 *)(a0 + 0xA0) = 0x6; - } - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017DBEC); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017DD2C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017DF20); - - -extern void (*D_80188584[])(void); - -void func_8017DF90(void *a0) { - D_80188584[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017DFCC); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017E004); - -extern void func_80029124(s32 a, s32 b); -void func_8017E014(void) { - func_80029124(0x13C, 0x1); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017E038); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017E0CC); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017E16C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017E230); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017E2CC); - - -extern void (*D_801885C0[])(void); - -void func_8017E4E4(void *a0) { - D_801885C0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017E520); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017E830); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017E9B0); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017EA2C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017EB14); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017EB78); - -extern void func_80016714(void *a0, s32 a1); -extern s32 D_801C8C64; - -void func_8017ED00(void) { - func_80016714(&D_801C8C64, 0x380); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017ED28); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017EE80); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017F018); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017F0EC); - - -extern void (*D_801888F4[])(void); - -void func_8017F408(void *a0) { - D_801888F4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017F444); - -extern s16 D_801C8B70; - -s32 func_8017F53C(void) { - return D_801C8B70; -} - - - -extern void (*D_80188948[])(void); - -void func_8017F54C(void *a0) { - D_80188948[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017F588); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017F600); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017F708); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017F748); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017F7E4); - - -extern void (*D_801889E0[])(void); - -void func_8017F90C(void *a0) { - D_801889E0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017F948); - -extern void func_80029124(s32 arg0, s32 arg1); - void func_8017F990(void) { - func_80029124(0x13A, 1); - } - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017F9B4); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017FA78); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017FB40); - - -extern void (*D_80188A78[])(void); - -void func_8017FBD4(void *a0) { - D_80188A78[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017FC10); - -extern void func_80029124(s32 arg0, s32 arg1); - void func_8017FC58(void) { - func_80029124(0x139, 1); - } - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017FC7C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017FD40); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017FE08); - - -extern void (*D_80188B10[])(void); - -void func_8017FE9C(void *a0) { - D_80188B10[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017FED8); - -extern void func_80029124(s32 arg0, s32 arg1); - void func_8017FF20(void) { - func_80029124(0x13B, 1); - func_80029124(0x116, 1); - } - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8017FF50); - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80180014); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_801800DC); - - -extern void (*D_80188B74[])(void); - -void func_80180170(void *a0) { - D_80188B74[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_801801AC); - -DEFINE_func_80180210() /* dedup: shared engine-core @0x80180210 (src/shared) */ - - -extern void func_80178CBC(s32 arg0, s32 arg1); -extern s32 D_80188B5C; - -void func_80180218(void *arg0) { - ((void (*)(void *, void *))func_80178CBC)(arg0, &D_80188B5C); - *(s16 *)((u8 *)arg0 + 0x2) = 0x3; -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80180250); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80180290); - -extern s32 func_8018030C(void); - void func_801802EC(void) { - func_8018030C(); - } - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8018030C); - - -extern void (*D_80188C10[])(void); - -void func_80180398(void *a0) { - D_80188C10[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_801803D4); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80180440); - -extern s32 func_80180514(void); - -s32 func_80180514(void) { - return 0x5B; -} - - - -extern void (*D_80189330[])(void); - -void func_8018051C(void *a0) { - D_80189330[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32, s32); -extern u32 D_80189320; - -void func_80180558(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_80189320 | 0x40000000; - *(s16*)((u8*)(*(s32*)((u8*)arg0 + 0x20)) + 0x12) = *(u16*)((u8*)arg0 + 0xFC); - } -} - - -void func_801805D4(void) { -} - - -extern void (*D_80189368[])(void); - -void func_801805DC(void *a0) { - D_80189368[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80180618); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_801806A8); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_801808E4); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80180934); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_801809F0); - -void func_80180B08(void *a0) { - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; - } - - -void func_80180B18(void *a0) { - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 2; - } - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80180B28); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80180BC4); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80180BF0); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80180C1C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80180C48); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80180CCC); - - -extern s32 func_80180CCC(s32 arg); -extern void func_80180E30(void *a0); - -void func_80180DFC(void *a0) { - *(s32 *)((char *)a0 + 0xe0) = func_80180CCC((s32)a0); - func_80180E30(a0); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80180E30); - - -extern short D_800BA2BA; - s32 func_80180E70(s32 arg0) { - return *(short *)((char *)&D_800BA2BA + (*(short *)(*(s32 *)(arg0 + 0xd0) + 0x10) << 2)); - } - - - -extern void (*D_801B2954[])(void); - -void func_80180E98(void *a0) { - D_801B2954[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_80180ED4(void) { -} - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80180EDC); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80180F18); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80180F3C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80180F94); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80180FFC); - -void func_8018101C(void *a0) { - *(s16 *)((s32)a0 + 0x5C) = 0; - } - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80181024); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8018106C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_801810C8); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8018113C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_801811B0); - -extern s32 func_80029504(void); -extern void func_80029514(s32 arg0); - -void func_8018120C(void) { - if (((s32 (*)(void))func_80029504)() == 0x3A2) { - ((void (*)(s32))func_80029514)(0x3AC); - } -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80181240); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80181310); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_801814D8); - - -extern void (*D_801B2974[])(void); - -void func_80181520(void *a0) { - D_801B2974[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_8018155C(void) { -} - -void func_80181564(void) { -} - -void func_8018156C(void) { -} - -void func_80181574(void) { -} - -void func_8018157C(void) { -} - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80181584); - -void func_801815C8(void) { -} - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_801815D0); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80181658); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80181830); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_801819D0); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80181A4C); - -extern s32 func_80182258(void); - void func_80181B18(void) { - func_80182258(); - } - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80181B38); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80181C08); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80181C70); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80181CE4); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80181D44); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80181DC4); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80181E1C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80181E7C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80181EC4); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80181F14); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80181F4C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80181FD8); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8018207C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_801820DC); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80182258); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8018228C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_801822C0); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80182324); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80182398); - - -extern void (*D_801B2C70[])(void); - -void func_801823F0(void *a0) { - D_801B2C70[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8018242C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_801824A8); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_801825C8); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80182614); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80182720); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8018277C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_801827BC); - - -extern void func_8012B2CC(s32 arg); - void func_80182820(void *arg0) { - s32 *p = *(s32 **)((char *)arg0 + 0x20); - *(s16 *)((char *)arg0 + 0x2) = 2; - *(s16 *)((char *)p + 0x12) = -0x600; - func_8012B2CC((s32)arg0); - } - - -extern void func_8012B2CC(s32 a0); - void func_80182850(void * arg0) { - s32 temp_v1; - temp_v1 = *(s32 *)((char *)arg0 + 0x20); - *(s16 *)((char *)arg0 + 0x2) = 0x4; - *(s16 *)(temp_v1 + 0x12) = 0x600; - func_8012B2CC((s32)arg0); - } - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80182880); - - -extern void (*D_801C402C[])(void); - -void func_801829F0(void *a0) { - D_801C402C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80182A2C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80182AA8); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80182B18); - -extern void func_8002D4C8(s32 arg0, s32 arg1); - void func_80182B30(void) { - func_8002D4C8(0x7E0, 0); - } - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80182B54); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80182C88); - -void func_80182CF0(void) { -} - -void func_80182CF8(void) { -} - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80182D00); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80182DB4); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80182E1C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80182E70); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80182F2C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80183314); - - -extern void (*D_801C4480[])(void); - -void func_8018338C(void *a0) { - D_801C4480[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_801833C8); - - -extern void (*D_801C44AC[])(void); - -void func_801834E4(void *a0) { - D_801C44AC[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801C44B4[])(void); - -void func_80183520(void *a0) { - D_801C44B4[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801C44C4[])(void); - -void func_8018355C(void *a0) { - D_801C44C4[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801C44D4[])(void); - -void func_80183598(void *a0) { - D_801C44D4[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_801835D4(void) { -} - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_801835DC); - - -extern void (*D_801C44E4[])(void); - -void func_80183788(void *a0) { - D_801C44E4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_801837C4); - - -extern s32 D_801C4180; -extern s32 D_801C9238; -extern void func_80182DB4(s32 arg0, s32 arg1); - -void func_80183920(void) { - D_801C9238 = &D_801C4180; - func_80182DB4(0x474, 0x4B0); -} - - - -extern s32 D_801C41B8; -extern s32 D_801C9238; -extern void func_80182DB4(s32 arg0, s32 arg1); - -void func_80183954(void) { - D_801C9238 = &D_801C41B8; - func_80182DB4(0x474, 0x4EC); -} - - - -extern s32 D_801C41F0; -extern s32 D_801C9238; -extern void func_80182DB4(s32 arg0, s32 arg1); - -void func_80183988(void) { - D_801C9238 = &D_801C41F0; - func_80182DB4(0x474, 0x4B0); -} - - - -extern s32 D_801C4218; -extern s32 D_801C9238; -extern void func_80182DB4(s32 arg0, s32 arg1); - -void func_801839BC(void) { - D_801C9238 = &D_801C4218; - func_80182DB4(0x474, 0x4B0); -} - - -extern s32 D_801C4250; -extern s32 D_801C9238; -extern void func_80182DB4(s32 arg0, s32 arg1); - -void func_801839F0(void) { - D_801C9238 = &D_801C4250; - func_80182DB4(0x474, 0x528); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80183A24); - -extern s32 D_801C42C8; -extern s32 D_801C9238; -extern void func_80182DB4(s32 arg0, s32 arg1); - -void func_80183A98(void) { - D_801C9238 = &D_801C42C8; - func_80182DB4(0x474, 0x1A4); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80183ACC); - -extern void func_80182DB4(s32 arg0, s32 arg1); -extern s32 D_801C4320; -extern s32 D_801C9238; - -void func_80183B18(void) { - D_801C9238 = &D_801C4320; - func_80182DB4(0x12C, 0x1A4); -} - - - -extern s32 D_801C4370; -extern s32 D_801C9238; -extern void func_80182DB4(s32 arg0, s32 arg1); - -void func_80183B4C(void) { - D_801C9238 = &D_801C4370; - func_80182DB4(0x474, 0x4B0); -} - - - -extern s32 D_801C43D0; -extern s32 D_801C9238; -extern void func_80182DB4(s32 arg0, s32 arg1); - -void func_80183B80(void) { - D_801C9238 = &D_801C43D0; - func_80182DB4(0x474, 0x4B0); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80183BB4); - -extern s32 D_801C4418; -extern s32 D_801C9238; -extern void func_80182DB4(s32 arg0, s32 arg1); - -void func_80183C00(void) { - D_801C9238 = &D_801C4418; - func_80182DB4(0x564, 0x1A4); -} - - -extern s32 func_80183C34(void); - -s32 func_80183C34(void) { - return -1; -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80183C3C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80183CF8); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80183DA4); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80183DE8); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80183F04); - - -extern void func_8012B414(int a0); - void func_80183FA0(s32 arg0) { - s32 temp_v1 = *(s32 *)(arg0 + 0x20); - *(s16 *)(temp_v1 + 0x14) += 0x8; - ((void (*)(void))func_8012B414)(); - } - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80183FD4); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_8018404C); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80184094); - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017A4AC", func_80184138); - - -extern void (*D_801C5F0C[])(void); - -void func_801841B0(void *a0) { - D_801C5F0C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: iv-combine -// @stuck: none — MATCH (49 ins). gcc folds (v0+0x1800)-0x1000 -> v0+0x800; re-tie barrier on the WORKING reg v0 (NOT a saved local) forces the target chain v0=base+0x1800; s2=copy; v0-=0x1000; s1=v0<<5. NO register pins (pins re-trigger the lhu/lh dual-load CSE collapse and shrink the frame; natural alloc gives s0-s3 + frame 0x38). -extern int rand(void); -extern u8 *func_8012913C(s32 a0); - -extern unsigned short D_801C5EEC[]; - -void func_801841EC(s32 param_1, s32 param_2) -{ - int s3; - unsigned short s0; - int s2; - int s1; - int v0; - int iVar3; - - s0 = D_801C5EEC[*(short *)(param_1 + 0xfc)]; - s3 = param_2; - if (((short *)D_801C5EEC)[*(short *)(param_1 + 0xfc)] == 0) { - *(short *)(param_1 + 0xfc) = 0; - s0 = D_801C5EEC[0]; - } - *(short *)(param_1 + 0xfc) = *(short *)(param_1 + 0xfc) + 1; - v0 = (rand() & 3) * 0x400 + 0x1800; - s2 = v0; - __asm__ __volatile__("" : "=r"(v0) : "0"(v0)); - s1 = (v0 - 0x1000) * 0x20; - iVar3 = ((int (*)(int))func_8012913C)(4); - if (iVar3 != 0) { - *(short *)(iVar3 + 6) = s3; - *(short *)(iVar3 + 0xa) = s0; - *(short *)(iVar3 + 0xe) = 0; - *(int *)(iVar3 + 0x10) = s1; - *(short *)(iVar3 + 0x2c) = s2; - } -} - - - -extern void (*D_801C5F20[])(void); - -void func_801842B0(void *a0) { - D_801C5F20[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH - -extern void func_801841EC(s32, s32); -extern s32 func_8012AD50(void *a0); - -void func_801842EC(int param_1) { - short uVar1; - - *(short *)(param_1 + 0xfc) = 0; - *(int *)(param_1 + 0x1c) = 1; - uVar1 = *(unsigned short *)(param_1 + 0x70) & 7; - *(short *)(param_1 + 0xfe) = (uVar1 < 2) ? 0x1e : 0xf; - if (uVar1 != 0) { - func_801841EC(param_1, -0x80); - func_801841EC(param_1, -0x30); - func_801841EC(param_1, 0x20); - func_801841EC(param_1, 0x70); - func_801841EC(param_1, 0xc0); - } - if (1 < uVar1) { - func_801841EC(param_1, -0x58); - func_801841EC(param_1, -0x8); - func_801841EC(param_1, 0x48); - func_801841EC(param_1, 0x98); - func_801841EC(param_1, 0xe8); - } - ((void (*)(int))func_8012AD50)(param_1); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (param_1 naturally lands in $s0 across the call, mirrors sibling func_80184AEC) - -extern s32 func_8012BEE8(s32 a0); -extern void func_801841EC(s32, s32); - -void func_801843D4(s32 arg0) { - if (func_8012BEE8(arg0)) { - *(s32 *)(arg0 + 0x1c) = (s32)*(s16 *)(arg0 + 0xfe); - func_801841EC(arg0, 0x110); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (expected) -extern void func_8001CB00(int param_1, void *src, int len, int n); - -extern unsigned char D_801C5F14; - -void func_80184414(int param_1) -{ - unsigned short uVar1; - int iVar2; - - iVar2 = *(int *)(param_1 + 0x20); - func_8001CB00(iVar2, &D_801C5F14, 0x280, 0x100); - *(unsigned int *)(iVar2 + 4) = *(unsigned int *)(iVar2 + 4) | 0x70000000; - uVar1 = *(unsigned short *)(param_1 + 0x2c); - *(unsigned char *)(iVar2 + 0x27) = 0x9e; - *(unsigned short *)(iVar2 + 0x2c) = 4; - *(unsigned short *)(iVar2 + 0x1c) = uVar1; - *(unsigned short *)(iVar2 + 0x1a) = uVar1; - *(unsigned short *)(iVar2 + 0x18) = uVar1; - *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + 1; - return; -} - - - -extern void func_801292C8(u8 *a0); - -void func_8018449C(u8 *a0) { - *(s32 *)(a0 + 0x4) = *(s32 *)(a0 + 0x4) - *(s32 *)(a0 + 0x10); - if (*(s16 *)(a0 + 0x6) < -0x110) { - func_801292C8(a0); - } -} - - - - diff --git a/src/ov_SC04_015/ov_SC04_015_jr_8017AE2C.c b/src/ov_SC04_015/ov_SC04_015_jr_8017AE2C.c new file mode 100644 index 000000000..a592f2a69 --- /dev/null +++ b/src/ov_SC04_015/ov_SC04_015_jr_8017AE2C.c @@ -0,0 +1,4560 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80186A70; +extern u8 D_801869E0; +extern u8 D_801869BC; +extern u8 D_80186998; +extern u8 D_80186A4C; +extern u8 D_80186A28; +extern u8 D_80186A04; +extern u8 D_80186974; +extern void func_80145934(void); +extern u8 D_80186B00; +extern u8 D_80186ADC; +extern u8 D_80186AB8; +extern u8 D_80186A94; +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_80185EF8[]; +extern unsigned char D_80185F28[]; +extern unsigned char D_80185F78[]; +extern unsigned char D_80185FA8[]; +extern unsigned char D_80185FD8[]; +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(void); +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_80186028[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_801860F0[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80186178[]; +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_80186180; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801C77B0; +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_801C77B4; +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_801861B0; +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 void 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_80186258[])(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_8018627C[])(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_8018626C; +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_80186290[])(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_8018629C[]; +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_801862AC[])(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_801862C4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801862B4; +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_801862D8[])(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_801862F4[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801862E4; +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_80186308[])(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_8018631C[])(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_80186330; +extern void (*D_80186358[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80186338; +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_801863A4[])(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_801863A8[])(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(void *a0); +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_8018680C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018681C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801C77E8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80186844[])(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_80186824; +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_80186834; +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_80186884[])(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_8018688C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80186858; +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_80186898[])(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_80186868; +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_801C77F0; +extern s32 D_801C77FC; +extern s32 D_801C7800; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801868D4[])(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_801868A8[]; +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_801C77F8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80186B24[])(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_80186944[]; +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_80186BC8[])(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_80186D1C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80186B38; +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_80186D24[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80186B48; +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_80186B68; +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_80186D2C[])(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(void); +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_80186D54[])(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_80186D60[])(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_80186BD4[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80186E04; +extern void func_8015D380(s32 a0); +extern unsigned char D_80185EE8[]; +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_80186E18[]; +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_80186E54[]; +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_80186E9C; +extern u16 D_80186E9E; +extern u16 D_80186EA0; +extern s32 D_80186EA4; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80186EAC; +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_80186BB8; +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_80186F30[]; +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_80186FE0[])(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_80187010[]; +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_80187074; +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_801C7808[]; +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_80187098[])(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_801C7860[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_801870E0[])(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_801870D0; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801C7084[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_801870E8[])(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_8018713C[])(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_80187104; +extern s16 D_80187138; +extern s16 D_80187136; +extern s16 D_80187134; +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_80187148[])(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_801C78C0; +extern u8 D_801C78C1; +extern u8 D_801C78C2; +extern u8 D_801C78C3; +extern u8 D_801C78C4; +extern u8 D_801C78C5; +extern u8 D_801C78C6; +extern u8 D_801C78C7; +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_80187158[])(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_801C7900; +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_8018719C[])(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_80187218[]; +extern s32 D_80187238[]; +extern u8 D_801872B4[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801872D4[]; +extern u8 D_801872F4[]; +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_80187390[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018740C[])(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_801C7094; +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_80187418[])(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_80187420[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801874E8[])(void); +extern void func_80166618(void *a0); +extern void (*D_801874F8[])(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_80187508[])(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_80187514[])(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_80187474[]; +extern u8 D_80187488[]; +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_8018752C[])(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_80187534[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018753C[])(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_80187544[])(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_8018754C[])(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_80187554[])(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_8018755C[])(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_80187610[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80187618[])(void); +extern void func_80169F00(void *a0); +extern char D_801875C8[]; +extern char D_80187588[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80187650[])(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_8018765C[])(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_801876A4[])(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_80187720[])(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_801C7C20; +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_80187714[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80187758[]; +extern unsigned short D_80187760[]; +extern unsigned short D_80187768[]; +extern unsigned char D_801C7C28[]; +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_801C7C20; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80187770[])(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_801C7D5C; +extern M2C_UNK D_801C7D60; +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_801C7CE8; +extern void (*D_801877A0[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801C7D64[]; +extern u8 D_801C7D6C[]; +extern u8 D_801C7D1C[]; +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_801877A8[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801877C4[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801877CC[])(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_80187834[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801877D8; +extern u8 D_801877E4; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80187868[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80187870[])(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_801878C4[])(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_801878F8[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801878E8[]; +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_80187914; +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); +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_8018798C[])(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_80187994[])(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_8018799C[])(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_801879A4[])(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_801879AC[])(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_801879B4[])(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_801879C0[])(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_801879CC[])(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_801879D8[])(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_801879E8[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801879F8[])(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_80187A00[])(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_80187A08[])(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_80187A10[])(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_80187A18[])(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_80187A20[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80187A28[])(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_80187A30[])(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_80187A38[])(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_80187A40[])(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_80187A48[])(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_80187A50[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80187A58[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80187A60[])(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_80187A68[])(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_80187A70[])(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_80187A78[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80187A80[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80187A88[])(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_80187A90[])(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_80187A98[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80187AA0[])(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_80187AA8[])(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_80187AEC[])(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_80187AB0; +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_80187B1C[])(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_80187B58[])(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(s32); +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_80187BB0[])(); +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_80187BC0[])(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_80187BC8[])(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_80187D30[])(); +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_80187D3C[])(); +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_801C72DC; +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 int func_801789AC(void); +extern s16 D_801C9368; +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_801C84A0; +extern short D_801C93DC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801C88CC; +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_801C88F4; +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_801C88B0; +extern s32 func_8017A3B0(void); +extern short D_801C88EC; +extern short D_801C88E8; +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_801C9320; +extern s16 D_801C9322; +extern s16 D_801C932C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801C9320; + + 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_801C932C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801C9320+0xC == &D_801C932C; 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_801C9320 + 0xC)) < 0x101) { + D_801C9320 = 0; + D_801C9322 = 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_801C932C); + 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_801C9320 + 0xC)) < 0x101) { + D_801C9320 = 0; + D_801C9322 = 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_801C892C; + extern s16 D_801C892E; + extern s16 D_801C8930; + extern s16 D_801C8924; + extern s16 D_801C8926; + extern s16 D_801C8928; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C892C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C892E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C8930, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C8924, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C8926, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C8928, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801C88B4; +extern u16 D_801C8934; +extern u16 D_801C8936; +extern u16 D_801C8938; +extern s16 D_801C9368; + +void func_8017B1D8(void) { + func_8012A418(); + D_801C9368 = 0; + D_801C88B4 = 0; + D_801C8934 = D_80126B5E; + D_801C8936 = D_80126B62; + D_801C8938 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80187E78[]; + extern s16 D_801C892C; + extern s16 D_801C8924; + 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_80187E78[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80187E78[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C892C; + s16 *p78C = &D_801C8924; + *(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_801C9368 = 1; + D_801C88B4 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C88D4; + extern SV4_8017B368 D_801C88DC; + extern s16 D_801C892C; + extern s16 D_801C8924; + extern u16 D_80187E78; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801C88D4; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801C88DC; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80187E78)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80187E78)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801C892C) = loc0; + (*(SV4_8017B368 *)&D_801C8924) = loc1; + D_801C9368 = 1; + D_801C88B4 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80187E78[]; + extern s16 D_801C892C; + extern s16 D_801C892E; + extern s16 D_801C8930; + extern s16 D_801C8924; + extern s16 D_801C8926; + extern s16 D_801C8928; + 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_80187E78[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80187E78[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C892C; + s16 *p78C = &D_801C8924; + *(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_801C892E; + v798 = D_801C8930; + v78C = *p78C; + v78E = D_801C8926; + v790 = D_801C8928; + __asm__ __volatile__(""); + D_801C9368 = 1; + D_801C88B4 = 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_801C88B4; +extern s16 D_801C892C; +extern s16 D_801C892E; +extern s16 D_801C8930; +extern s16 D_801C8924; +extern s16 D_801C8926; +extern s16 D_801C8928; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801C88B4 = 0; + D_801C892C = (s16) D_80114F30; + D_801C892E = (s16) D_80114F34; + D_801C8930 = (s16) D_80114F38; + D_801C8924 = (s16) D_80114F24; + D_801C8926 = (s16) D_80114F28; + D_801C8928 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801C8944; +extern s16 D_801C8946; +extern s16 D_801C8948; +extern s16 D_801C894C; +extern s16 D_801C894E; +extern s16 D_801C8950; + +void func_8017B824(void) { + D_801C8944 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801C8946 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801C8948 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801C894C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801C894E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801C8950 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801C8944; +extern s16 D_801C8946; +extern s16 D_801C8948; +extern s16 D_801C894C; +extern s16 D_801C894E; +extern s16 D_801C8950; + +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_801C8944; + D_80114F34 = D_801C8946; + D_80114F38 = D_801C8948; + D_80114F24 = D_801C894C; + D_80114F28 = D_801C894E; + D_80114F2C = D_801C8950; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801C892C), src[8..15] -> (*(S8_8017B8E8 *)&D_801C8924) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801C892C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801C8924) = ((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_801C8934; +extern u16 D_801C8936; +extern u16 D_801C8938; + +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_801C88B4; +extern short D_801C893C; +extern short D_801C893E; +extern short D_801C8940; +extern s16 D_801C892C; +extern s16 D_801C892E; +extern s16 D_801C8930; +extern s16 D_801C8924; +extern s16 D_801C8926; +extern s16 D_801C8928; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C8934); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C8936); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C8938); + (*(s16 *)&D_801C893C) = buf[0]; + (*(s16 *)&D_801C893E) = buf[1]; + (*(s16 *)&D_801C8940) = buf[2]; + D_801C892C = D_80114F30 + buf[0]; + D_801C88B4 = 0; + D_801C892E = D_80114F34 + buf[1]; + D_801C8930 = D_80114F38 + buf[2]; + D_801C8924 = D_80114F24 + buf[0]; + D_801C8926 = D_80114F28 + buf[1]; + D_801C8928 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801C88D4; +extern SV4 D_801C88DC; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C88DC) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801C88D4 = 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_801C88DC = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C88DC)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801C88D4) = 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_801C88DC) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801C88FC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801C88FC; + 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_801C88B4; +extern s16 D_801C9368; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801C88B4 = D_801C88B4 + 1; + if (D_801C88B4 >= 0x1F) { + D_801C9368 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801C88B4; +extern s16 D_801C9368; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801C88B4 = D_801C88B4 + 1; + if (0x18 < D_801C88B4) { + func_8012A4BC(); + D_801C9368 = 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_801C88B4; +extern void (*D_801C88F8)(void); +extern short D_801C893C; +extern short D_801C893E; +extern short D_801C8940; +extern s16 D_801C9368; + +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_801C88B4 = D_801C88B4 + 1; + if (D_801C88B4 >= 0x19) { + if (D_801C88F8 != 0) { + (*D_801C88F8)(); + } else { + D_80114F30 = D_80114F30 + D_801C893C; + D_80114F34 = D_80114F34 + D_801C893E; + D_80114F38 = D_80114F38 + D_801C8940; + D_80114F24 = D_80114F24 + D_801C893C; + D_80114F28 = D_80114F28 + D_801C893E; + D_80114F2C = D_80114F2C + D_801C8940; + func_8012A4BC(); + } + D_801C9368 = 0; + } +} + + + +extern void (*D_80187F18[])(void); + +void func_8017BE60(void *a0) { + D_80187F18[*(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 (*D_80187FB8[])(void); + +void func_8017BEBC(void *a0) { + D_80187FB8[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80187FC0[])(void); + +void func_8017BEF8(void *a0) { + D_80187FC0[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80187FC8[])(void); + +void func_8017BF34(void *a0) { + D_80187FC8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017BF70); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017C0B4); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017C120); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017C1CC); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017C20C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017C2D0); + + +extern void (*D_80187FE8[])(void); + +void func_8017C358(void *a0) { + D_80187FE8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017C394); + +extern void func_80146C3C(void); +void func_8017C558(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_80187FF0[])(void); + +void func_8017C5EC(void *a0) { + D_80187FF0[*(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_80187FDC; + +void func_8017C628(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_80187FDC, 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_8017C6CC(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; + } +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017C730); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017D610); + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017D674(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017D698); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017D6FC); + +extern void func_800D1EBC(void); + void func_8017D7AC(void) { + func_800D1EBC(); + } + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017D7CC); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017D83C); + +s32 func_8017D878(void) { + return 0; + } + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017D880); + + +extern void (*D_80187FF8[])(void); + +void func_8017D8C8(void *a0) { + D_80187FF8[*(u8 *)((s32)a0 + 0x15)](); +} + + + +extern void (*D_80188000[])(void); + +void func_8017D904(void *a0) { + D_80188000[*(u8 *)((s32)a0 + 0x15)](); +} + + + +extern void (*D_80188018[])(void); + +void func_8017D940(void *a0) { + D_80188018[*(u8 *)((s32)a0 + 0x15)](); +} + + + +extern void (*D_801882F0[])(void); + +void func_8017D97C(void *a0) { + D_801882F0[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017D9B8); + +extern void func_8016F0E4(void); +extern void func_80165770(void); +void func_8017D9CC(s32 a0) { + func_8016F0E4(); + ((void (*)(s32))func_80165770)(a0); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017D9FC); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017DA24); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017DA5C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017DA90); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017DAB8); + + +extern void (*D_80188320[])(void); + +void func_8017DB70(void *a0) { + D_80188320[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017DBAC); + +void func_8017DBE0(u8 *a0) { + *(s8 *)(a0 + 0xA0) = 0x6; + } + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017DBEC); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017DD2C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017DF20); + + +extern void (*D_80188584[])(void); + +void func_8017DF90(void *a0) { + D_80188584[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017DFCC); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017E004); + +extern void func_80029124(s32 a, s32 b); +void func_8017E014(void) { + func_80029124(0x13C, 0x1); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017E038); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017E0CC); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017E16C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017E230); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017E2CC); + + +extern void (*D_801885C0[])(void); + +void func_8017E4E4(void *a0) { + D_801885C0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017E520); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017E830); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017E9B0); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017EA2C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017EB14); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017EB78); + +extern void func_80016714(void *a0, s32 a1); +extern s32 D_801C8C64; + +void func_8017ED00(void) { + func_80016714(&D_801C8C64, 0x380); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017ED28); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017EE80); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017F018); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017F0EC); + + +extern void (*D_801888F4[])(void); + +void func_8017F408(void *a0) { + D_801888F4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017F444); + +extern s16 D_801C8B70; + +s32 func_8017F53C(void) { + return D_801C8B70; +} + + + +extern void (*D_80188948[])(void); + +void func_8017F54C(void *a0) { + D_80188948[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017F588); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017F600); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017F708); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017F748); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017F7E4); + + +extern void (*D_801889E0[])(void); + +void func_8017F90C(void *a0) { + D_801889E0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017F948); + +extern void func_80029124(s32 arg0, s32 arg1); + void func_8017F990(void) { + func_80029124(0x13A, 1); + } + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017F9B4); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017FA78); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017FB40); + + +extern void (*D_80188A78[])(void); + +void func_8017FBD4(void *a0) { + D_80188A78[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017FC10); + +extern void func_80029124(s32 arg0, s32 arg1); + void func_8017FC58(void) { + func_80029124(0x139, 1); + } + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017FC7C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017FD40); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017FE08); + + +extern void (*D_80188B10[])(void); + +void func_8017FE9C(void *a0) { + D_80188B10[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017FED8); + +extern void func_80029124(s32 arg0, s32 arg1); + void func_8017FF20(void) { + func_80029124(0x13B, 1); + func_80029124(0x116, 1); + } + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017FF50); + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80180014); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801800DC); + + +extern void (*D_80188B74[])(void); + +void func_80180170(void *a0) { + D_80188B74[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801801AC); + +DEFINE_func_80180210() /* dedup: shared engine-core @0x80180210 (src/shared) */ + + +extern void func_80178CBC(s32 arg0, s32 arg1); +extern s32 D_80188B5C; + +void func_80180218(void *arg0) { + ((void (*)(void *, void *))func_80178CBC)(arg0, &D_80188B5C); + *(s16 *)((u8 *)arg0 + 0x2) = 0x3; +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80180250); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80180290); + +extern s32 func_8018030C(void); + void func_801802EC(void) { + func_8018030C(); + } + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8018030C); + + +extern void (*D_80188C10[])(void); + +void func_80180398(void *a0) { + D_80188C10[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801803D4); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80180440); + +extern s32 func_80180514(void); + +s32 func_80180514(void) { + return 0x5B; +} + + + +extern void (*D_80189330[])(void); + +void func_8018051C(void *a0) { + D_80189330[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32, s32); +extern u32 D_80189320; + +void func_80180558(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_80189320 | 0x40000000; + *(s16*)((u8*)(*(s32*)((u8*)arg0 + 0x20)) + 0x12) = *(u16*)((u8*)arg0 + 0xFC); + } +} + + +void func_801805D4(void) { +} + + +extern void (*D_80189368[])(void); + +void func_801805DC(void *a0) { + D_80189368[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80180618); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801806A8); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801808E4); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80180934); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801809F0); + +void func_80180B08(void *a0) { + *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; + } + + +void func_80180B18(void *a0) { + *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 2; + } + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80180B28); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80180BC4); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80180BF0); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80180C1C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80180C48); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80180CCC); + + +extern s32 func_80180CCC(s32 arg); +extern void func_80180E30(void *a0); + +void func_80180DFC(void *a0) { + *(s32 *)((char *)a0 + 0xe0) = func_80180CCC((s32)a0); + func_80180E30(a0); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80180E30); + + +extern short D_800BA2BA; + s32 func_80180E70(s32 arg0) { + return *(short *)((char *)&D_800BA2BA + (*(short *)(*(s32 *)(arg0 + 0xd0) + 0x10) << 2)); + } + + + +extern void (*D_801B2954[])(void); + +void func_80180E98(void *a0) { + D_801B2954[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_80180ED4(void) { +} + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80180EDC); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80180F18); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80180F3C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80180F94); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80180FFC); + +void func_8018101C(void *a0) { + *(s16 *)((s32)a0 + 0x5C) = 0; + } + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80181024); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8018106C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801810C8); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8018113C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801811B0); + +extern s32 func_80029504(void); +extern void func_80029514(s32 arg0); + +void func_8018120C(void) { + if (((s32 (*)(void))func_80029504)() == 0x3A2) { + ((void (*)(s32))func_80029514)(0x3AC); + } +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80181240); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80181310); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801814D8); + + +extern void (*D_801B2974[])(void); + +void func_80181520(void *a0) { + D_801B2974[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_8018155C(void) { +} + +void func_80181564(void) { +} + +void func_8018156C(void) { +} + +void func_80181574(void) { +} + +void func_8018157C(void) { +} + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80181584); + +void func_801815C8(void) { +} + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801815D0); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80181658); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80181830); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801819D0); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80181A4C); + +extern s32 func_80182258(void); + void func_80181B18(void) { + func_80182258(); + } + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80181B38); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80181C08); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80181C70); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80181CE4); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80181D44); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80181DC4); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80181E1C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80181E7C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80181EC4); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80181F14); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80181F4C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80181FD8); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8018207C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801820DC); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80182258); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8018228C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801822C0); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80182324); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80182398); + + +extern void (*D_801B2C70[])(void); + +void func_801823F0(void *a0) { + D_801B2C70[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8018242C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801824A8); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801825C8); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80182614); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80182720); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8018277C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801827BC); + + +extern void func_8012B2CC(s32 arg); + void func_80182820(void *arg0) { + s32 *p = *(s32 **)((char *)arg0 + 0x20); + *(s16 *)((char *)arg0 + 0x2) = 2; + *(s16 *)((char *)p + 0x12) = -0x600; + func_8012B2CC((s32)arg0); + } + + +extern void func_8012B2CC(s32 a0); + void func_80182850(void * arg0) { + s32 temp_v1; + temp_v1 = *(s32 *)((char *)arg0 + 0x20); + *(s16 *)((char *)arg0 + 0x2) = 0x4; + *(s16 *)(temp_v1 + 0x12) = 0x600; + func_8012B2CC((s32)arg0); + } + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80182880); + + +extern void (*D_801C402C[])(void); + +void func_801829F0(void *a0) { + D_801C402C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80182A2C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80182AA8); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80182B18); + +extern void func_8002D4C8(s32 arg0, s32 arg1); + void func_80182B30(void) { + func_8002D4C8(0x7E0, 0); + } + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80182B54); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80182C88); + +void func_80182CF0(void) { +} + +void func_80182CF8(void) { +} + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80182D00); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80182DB4); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80182E1C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80182E70); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80182F2C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80183314); + + +extern void (*D_801C4480[])(void); + +void func_8018338C(void *a0) { + D_801C4480[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801833C8); + + +extern void (*D_801C44AC[])(void); + +void func_801834E4(void *a0) { + D_801C44AC[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_801C44B4[])(void); + +void func_80183520(void *a0) { + D_801C44B4[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_801C44C4[])(void); + +void func_8018355C(void *a0) { + D_801C44C4[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_801C44D4[])(void); + +void func_80183598(void *a0) { + D_801C44D4[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_801835D4(void) { +} + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801835DC); + + +extern void (*D_801C44E4[])(void); + +void func_80183788(void *a0) { + D_801C44E4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801837C4); + + +extern s32 D_801C4180; +extern s32 D_801C9238; +extern void func_80182DB4(s32 arg0, s32 arg1); + +void func_80183920(void) { + D_801C9238 = &D_801C4180; + func_80182DB4(0x474, 0x4B0); +} + + + +extern s32 D_801C41B8; +extern s32 D_801C9238; +extern void func_80182DB4(s32 arg0, s32 arg1); + +void func_80183954(void) { + D_801C9238 = &D_801C41B8; + func_80182DB4(0x474, 0x4EC); +} + + + +extern s32 D_801C41F0; +extern s32 D_801C9238; +extern void func_80182DB4(s32 arg0, s32 arg1); + +void func_80183988(void) { + D_801C9238 = &D_801C41F0; + func_80182DB4(0x474, 0x4B0); +} + + + +extern s32 D_801C4218; +extern s32 D_801C9238; +extern void func_80182DB4(s32 arg0, s32 arg1); + +void func_801839BC(void) { + D_801C9238 = &D_801C4218; + func_80182DB4(0x474, 0x4B0); +} + + +extern s32 D_801C4250; +extern s32 D_801C9238; +extern void func_80182DB4(s32 arg0, s32 arg1); + +void func_801839F0(void) { + D_801C9238 = &D_801C4250; + func_80182DB4(0x474, 0x528); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80183A24); + +extern s32 D_801C42C8; +extern s32 D_801C9238; +extern void func_80182DB4(s32 arg0, s32 arg1); + +void func_80183A98(void) { + D_801C9238 = &D_801C42C8; + func_80182DB4(0x474, 0x1A4); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80183ACC); + +extern void func_80182DB4(s32 arg0, s32 arg1); +extern s32 D_801C4320; +extern s32 D_801C9238; + +void func_80183B18(void) { + D_801C9238 = &D_801C4320; + func_80182DB4(0x12C, 0x1A4); +} + + + +extern s32 D_801C4370; +extern s32 D_801C9238; +extern void func_80182DB4(s32 arg0, s32 arg1); + +void func_80183B4C(void) { + D_801C9238 = &D_801C4370; + func_80182DB4(0x474, 0x4B0); +} + + + +extern s32 D_801C43D0; +extern s32 D_801C9238; +extern void func_80182DB4(s32 arg0, s32 arg1); + +void func_80183B80(void) { + D_801C9238 = &D_801C43D0; + func_80182DB4(0x474, 0x4B0); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80183BB4); + +extern s32 D_801C4418; +extern s32 D_801C9238; +extern void func_80182DB4(s32 arg0, s32 arg1); + +void func_80183C00(void) { + D_801C9238 = &D_801C4418; + func_80182DB4(0x564, 0x1A4); +} + + +extern s32 func_80183C34(void); + +s32 func_80183C34(void) { + return -1; +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80183C3C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80183CF8); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80183DA4); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80183DE8); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80183F04); + + +extern void func_8012B414(int a0); + void func_80183FA0(s32 arg0) { + s32 temp_v1 = *(s32 *)(arg0 + 0x20); + *(s16 *)(temp_v1 + 0x14) += 0x8; + ((void (*)(void))func_8012B414)(); + } + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80183FD4); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8018404C); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80184094); + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80184138); + + +extern void (*D_801C5F0C[])(void); + +void func_801841B0(void *a0) { + D_801C5F0C[*(u16 *)((s32)a0 + 0x2)](); +} + + + +// @class: iv-combine +// @stuck: none — MATCH (49 ins). gcc folds (v0+0x1800)-0x1000 -> v0+0x800; re-tie barrier on the WORKING reg v0 (NOT a saved local) forces the target chain v0=base+0x1800; s2=copy; v0-=0x1000; s1=v0<<5. NO register pins (pins re-trigger the lhu/lh dual-load CSE collapse and shrink the frame; natural alloc gives s0-s3 + frame 0x38). +extern int rand(void); +extern u8 *func_8012913C(s32 a0); + +extern unsigned short D_801C5EEC[]; + +void func_801841EC(s32 param_1, s32 param_2) +{ + int s3; + unsigned short s0; + int s2; + int s1; + int v0; + int iVar3; + + s0 = D_801C5EEC[*(short *)(param_1 + 0xfc)]; + s3 = param_2; + if (((short *)D_801C5EEC)[*(short *)(param_1 + 0xfc)] == 0) { + *(short *)(param_1 + 0xfc) = 0; + s0 = D_801C5EEC[0]; + } + *(short *)(param_1 + 0xfc) = *(short *)(param_1 + 0xfc) + 1; + v0 = (rand() & 3) * 0x400 + 0x1800; + s2 = v0; + __asm__ __volatile__("" : "=r"(v0) : "0"(v0)); + s1 = (v0 - 0x1000) * 0x20; + iVar3 = ((int (*)(int))func_8012913C)(4); + if (iVar3 != 0) { + *(short *)(iVar3 + 6) = s3; + *(short *)(iVar3 + 0xa) = s0; + *(short *)(iVar3 + 0xe) = 0; + *(int *)(iVar3 + 0x10) = s1; + *(short *)(iVar3 + 0x2c) = s2; + } +} + + + +extern void (*D_801C5F20[])(void); + +void func_801842B0(void *a0) { + D_801C5F20[*(u16 *)((s32)a0 + 0x2)](); +} + + + +// @class: regalloc-order +// @stuck: none — MATCH + +extern void func_801841EC(s32, s32); +extern s32 func_8012AD50(void *a0); + +void func_801842EC(int param_1) { + short uVar1; + + *(short *)(param_1 + 0xfc) = 0; + *(int *)(param_1 + 0x1c) = 1; + uVar1 = *(unsigned short *)(param_1 + 0x70) & 7; + *(short *)(param_1 + 0xfe) = (uVar1 < 2) ? 0x1e : 0xf; + if (uVar1 != 0) { + func_801841EC(param_1, -0x80); + func_801841EC(param_1, -0x30); + func_801841EC(param_1, 0x20); + func_801841EC(param_1, 0x70); + func_801841EC(param_1, 0xc0); + } + if (1 < uVar1) { + func_801841EC(param_1, -0x58); + func_801841EC(param_1, -0x8); + func_801841EC(param_1, 0x48); + func_801841EC(param_1, 0x98); + func_801841EC(param_1, 0xe8); + } + ((void (*)(int))func_8012AD50)(param_1); +} + + + +// @class: regalloc-order +// @stuck: none — MATCH (param_1 naturally lands in $s0 across the call, mirrors sibling func_80184AEC) + +extern s32 func_8012BEE8(s32 a0); +extern void func_801841EC(s32, s32); + +void func_801843D4(s32 arg0) { + if (func_8012BEE8(arg0)) { + *(s32 *)(arg0 + 0x1c) = (s32)*(s16 *)(arg0 + 0xfe); + func_801841EC(arg0, 0x110); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (expected) +extern void func_8001CB00(int param_1, void *src, int len, int n); + +extern unsigned char D_801C5F14; + +void func_80184414(int param_1) +{ + unsigned short uVar1; + int iVar2; + + iVar2 = *(int *)(param_1 + 0x20); + func_8001CB00(iVar2, &D_801C5F14, 0x280, 0x100); + *(unsigned int *)(iVar2 + 4) = *(unsigned int *)(iVar2 + 4) | 0x70000000; + uVar1 = *(unsigned short *)(param_1 + 0x2c); + *(unsigned char *)(iVar2 + 0x27) = 0x9e; + *(unsigned short *)(iVar2 + 0x2c) = 4; + *(unsigned short *)(iVar2 + 0x1c) = uVar1; + *(unsigned short *)(iVar2 + 0x1a) = uVar1; + *(unsigned short *)(iVar2 + 0x18) = uVar1; + *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + 1; + return; +} + + + +extern void func_801292C8(u8 *a0); + +void func_8018449C(u8 *a0) { + *(s32 *)(a0 + 0x4) = *(s32 *)(a0 + 0x4) - *(s32 *)(a0 + 0x10); + if (*(s16 *)(a0 + 0x6) < -0x110) { + func_801292C8(a0); + } +} + + + + + diff --git a/src/ov_SC04_016/ov_SC04_016_jr_8017A4AC.c b/src/ov_SC04_016/ov_SC04_016_jr_8017A4AC.c index 8395c5b67..0a80f139f 100644 --- a/src/ov_SC04_016/ov_SC04_016_jr_8017A4AC.c +++ b/src/ov_SC04_016/ov_SC04_016_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801A6AD4; - extern s16 D_801A6AD6; - extern s16 D_801A6AD8; - extern s16 D_801A6ACC; - extern s16 D_801A6ACE; - extern s16 D_801A6AD0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A6AD4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A6AD6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A6AD8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A6ACC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A6ACE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A6AD0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801A6A5C; -extern u16 D_801A6ADC; -extern u16 D_801A6ADE; -extern u16 D_801A6AE0; -extern s16 D_801AC268; - -void func_8017B1D8(void) { - func_8012A418(); - D_801AC268 = 0; - D_801A6A5C = 0; - D_801A6ADC = D_80126B5E; - D_801A6ADE = D_80126B62; - D_801A6AE0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018393C[]; - extern s16 D_801A6AD4; - extern s16 D_801A6ACC; - 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_8018393C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018393C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A6AD4; - s16 *p78C = &D_801A6ACC; - *(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_801AC268 = 1; - D_801A6A5C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A6A7C; - extern SV4_8017B368 D_801A6A84; - extern s16 D_801A6AD4; - extern s16 D_801A6ACC; - extern u16 D_8018393C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801A6A7C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801A6A84; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018393C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018393C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801A6AD4) = loc0; - (*(SV4_8017B368 *)&D_801A6ACC) = loc1; - D_801AC268 = 1; - D_801A6A5C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018393C[]; - extern s16 D_801A6AD4; - extern s16 D_801A6AD6; - extern s16 D_801A6AD8; - extern s16 D_801A6ACC; - extern s16 D_801A6ACE; - extern s16 D_801A6AD0; - 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_8018393C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018393C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A6AD4; - s16 *p78C = &D_801A6ACC; - *(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_801A6AD6; - v798 = D_801A6AD8; - v78C = *p78C; - v78E = D_801A6ACE; - v790 = D_801A6AD0; - __asm__ __volatile__(""); - D_801AC268 = 1; - D_801A6A5C = 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_801A6A5C; -extern s16 D_801A6AD4; -extern s16 D_801A6AD6; -extern s16 D_801A6AD8; -extern s16 D_801A6ACC; -extern s16 D_801A6ACE; -extern s16 D_801A6AD0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801A6A5C = 0; - D_801A6AD4 = (s16) D_80114F30; - D_801A6AD6 = (s16) D_80114F34; - D_801A6AD8 = (s16) D_80114F38; - D_801A6ACC = (s16) D_80114F24; - D_801A6ACE = (s16) D_80114F28; - D_801A6AD0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801A6AEC; -extern s16 D_801A6AEE; -extern s16 D_801A6AF0; -extern s16 D_801A6AF4; -extern s16 D_801A6AF6; -extern s16 D_801A6AF8; - -void func_8017B824(void) { - D_801A6AEC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801A6AEE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801A6AF0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801A6AF4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801A6AF6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801A6AF8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801A6AEC; -extern s16 D_801A6AEE; -extern s16 D_801A6AF0; -extern s16 D_801A6AF4; -extern s16 D_801A6AF6; -extern s16 D_801A6AF8; - -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_801A6AEC; - D_80114F34 = D_801A6AEE; - D_80114F38 = D_801A6AF0; - D_80114F24 = D_801A6AF4; - D_80114F28 = D_801A6AF6; - D_80114F2C = D_801A6AF8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801A6AD4), src[8..15] -> (*(S8_8017B8E8 *)&D_801A6ACC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801A6AD4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801A6ACC) = ((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_801A6ADC; -extern u16 D_801A6ADE; -extern u16 D_801A6AE0; - -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_801A6A5C; -extern short D_801A6AE4; -extern short D_801A6AE6; -extern short D_801A6AE8; -extern s16 D_801A6AD4; -extern s16 D_801A6AD6; -extern s16 D_801A6AD8; -extern s16 D_801A6ACC; -extern s16 D_801A6ACE; -extern s16 D_801A6AD0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A6ADC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A6ADE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A6AE0); - (*(s16 *)&D_801A6AE4) = buf[0]; - (*(s16 *)&D_801A6AE6) = buf[1]; - (*(s16 *)&D_801A6AE8) = buf[2]; - D_801A6AD4 = D_80114F30 + buf[0]; - D_801A6A5C = 0; - D_801A6AD6 = D_80114F34 + buf[1]; - D_801A6AD8 = D_80114F38 + buf[2]; - D_801A6ACC = D_80114F24 + buf[0]; - D_801A6ACE = D_80114F28 + buf[1]; - D_801A6AD0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801A6A7C; -extern SV4 D_801A6A84; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A6A84) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801A6A7C = 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_801A6A84 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A6A84)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801A6A7C) = 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_801A6A84) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801A6AA4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801A6AA4; - 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_801A6A5C; -extern s16 D_801AC268; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801A6A5C = D_801A6A5C + 1; - if (D_801A6A5C >= 0x1F) { - D_801AC268 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801A6A5C; -extern s16 D_801AC268; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801A6A5C = D_801A6A5C + 1; - if (0x18 < D_801A6A5C) { - func_8012A4BC(); - D_801AC268 = 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_801A6A5C; -extern void (*D_801A6AA0)(void); -extern short D_801A6AE4; -extern short D_801A6AE6; -extern short D_801A6AE8; -extern s16 D_801AC268; - -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_801A6A5C = D_801A6A5C + 1; - if (D_801A6A5C >= 0x19) { - if (D_801A6AA0 != 0) { - (*D_801A6AA0)(); - } else { - D_80114F30 = D_80114F30 + D_801A6AE4; - D_80114F34 = D_80114F34 + D_801A6AE6; - D_80114F38 = D_80114F38 + D_801A6AE8; - D_80114F24 = D_80114F24 + D_801A6AE4; - D_80114F28 = D_80114F28 + D_801A6AE6; - D_80114F2C = D_80114F2C + D_801A6AE8; - func_8012A4BC(); - } - D_801AC268 = 0; - } -} - - - -extern void (*D_801839DC[])(void); - -void func_8017BE60(void *a0) { - D_801839DC[*(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) */ diff --git a/src/ov_SC04_016/ov_SC04_016_jr_8017AE2C.c b/src/ov_SC04_016/ov_SC04_016_jr_8017AE2C.c new file mode 100644 index 000000000..adf11166c --- /dev/null +++ b/src/ov_SC04_016/ov_SC04_016_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80182534; +extern u8 D_801824A4; +extern u8 D_80182480; +extern u8 D_8018245C; +extern u8 D_80182510; +extern u8 D_801824EC; +extern u8 D_801824C8; +extern u8 D_80182438; +extern void func_80145934(void); +extern u8 D_801825C4; +extern u8 D_801825A0; +extern u8 D_8018257C; +extern u8 D_80182558; +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_801819BC[]; +extern unsigned char D_801819EC[]; +extern unsigned char D_80181A3C[]; +extern unsigned char D_80181A6C[]; +extern unsigned char D_80181A9C[]; +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(void); +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_80181AEC[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80181BB4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80181C3C[]; +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_80181C44; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801A5958; +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_801A595C; +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_80181C74; +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 void 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_80181D1C[])(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_80181D40[])(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_80181D30; +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_80181D54[])(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_80181D60[]; +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_80181D70[])(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_80181D88[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80181D78; +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_80181D9C[])(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_80181DB8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181DA8; +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_80181DCC[])(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_80181DE0[])(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_80181DF4; +extern void (*D_80181E1C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80181DFC; +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_80181E68[])(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_80181E6C[])(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(void *a0); +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_801822D0[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_801822E0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801A5990; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80182308[])(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_801822E8; +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_801822F8; +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_80182348[])(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_80182350[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018231C; +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_8018235C[])(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_8018232C; +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_801A5998; +extern s32 D_801A59A4; +extern s32 D_801A59A8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80182398[])(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_8018236C[]; +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_801A59A0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801825E8[])(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_80182408[]; +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_8018268C[])(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_801827E0[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801825FC; +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_801827E8[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018260C; +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_8018262C; +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_801827F0[])(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(void); +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_80182818[])(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_80182824[])(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_80182698[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801828C8; +extern void func_8015D380(s32 a0); +extern unsigned char D_801819AC[]; +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_801828DC[]; +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_80182918[]; +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_80182960; +extern u16 D_80182962; +extern u16 D_80182964; +extern s32 D_80182968; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80182970; +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_8018267C; +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_801829F4[]; +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_80182AA4[])(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_80182AD4[]; +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_80182B38; +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_801A59B0[]; +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_80182B5C[])(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_801A5A08[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80182BA4[])(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_80182B94; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801A523C[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_80182BAC[])(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_80182C00[])(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_80182BC8; +extern s16 D_80182BFC; +extern s16 D_80182BFA; +extern s16 D_80182BF8; +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_80182C0C[])(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_801A5A68; +extern u8 D_801A5A69; +extern u8 D_801A5A6A; +extern u8 D_801A5A6B; +extern u8 D_801A5A6C; +extern u8 D_801A5A6D; +extern u8 D_801A5A6E; +extern u8 D_801A5A6F; +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_80182C1C[])(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_801A5AA8; +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_80182C60[])(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_80182CDC[]; +extern s32 D_80182CFC[]; +extern u8 D_80182D78[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80182D98[]; +extern u8 D_80182DB8[]; +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_80182E54[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80182ED0[])(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_801A524C; +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_80182EDC[])(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_80182EE4[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80182FAC[])(void); +extern void func_80166618(void *a0); +extern void (*D_80182FBC[])(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_80182FCC[])(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_80182FD8[])(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_80182F38[]; +extern u8 D_80182F4C[]; +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_80182FF0[])(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_80182FF8[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80183000[])(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_80183008[])(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_80183010[])(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_80183018[])(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_80183020[])(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_801830D4[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801830DC[])(void); +extern void func_80169F00(void *a0); +extern char D_8018308C[]; +extern char D_8018304C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80183114[])(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_80183120[])(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_80183168[])(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_801831E4[])(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_801A5DC8; +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_801831D8[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018321C[]; +extern unsigned short D_80183224[]; +extern unsigned short D_8018322C[]; +extern unsigned char D_801A5DD0[]; +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_801A5DC8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80183234[])(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_801A5F04; +extern M2C_UNK D_801A5F08; +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_801A5E90; +extern void (*D_80183264[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801A5F0C[]; +extern u8 D_801A5F14[]; +extern u8 D_801A5EC4[]; +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_8018326C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80183288[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80183290[])(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_801832F8[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018329C; +extern u8 D_801832A8; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018332C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80183334[])(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_80183388[])(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_801833BC[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801833AC[]; +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_801833D8; +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); +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_80183450[])(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_80183458[])(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_80183460[])(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_80183468[])(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_80183470[])(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_80183478[])(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_80183484[])(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_80183490[])(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_8018349C[])(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_801834AC[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801834BC[])(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_801834C4[])(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_801834CC[])(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_801834D4[])(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_801834DC[])(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_801834E4[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801834EC[])(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_801834F4[])(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_801834FC[])(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_80183504[])(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_8018350C[])(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_80183514[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018351C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80183524[])(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_8018352C[])(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_80183534[])(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_8018353C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80183544[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018354C[])(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_80183554[])(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_8018355C[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80183564[])(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_8018356C[])(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_801835B0[])(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_80183574; +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_801835E0[])(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_8018361C[])(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(s32); +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_80183674[])(); +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_80183684[])(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_8018368C[])(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_801837F4[])(); +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_80183800[])(); +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_801A5494; +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 int func_801789AC(void); +extern s16 D_801AC268; +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_801A6648; +extern short D_801AC2DC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801A6A74; +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_801A6A9C; +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_801A6A58; +extern s32 func_8017A3B0(void); +extern short D_801A6A94; +extern short D_801A6A90; +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_801AC238; +extern s16 D_801AC23A; +extern s16 D_801AC244; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801AC238; + + 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_801AC244); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801AC238+0xC == &D_801AC244; 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_801AC238 + 0xC)) < 0x101) { + D_801AC238 = 0; + D_801AC23A = 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_801AC244); + 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_801AC238 + 0xC)) < 0x101) { + D_801AC238 = 0; + D_801AC23A = 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_801A6AD4; + extern s16 D_801A6AD6; + extern s16 D_801A6AD8; + extern s16 D_801A6ACC; + extern s16 D_801A6ACE; + extern s16 D_801A6AD0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A6AD4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A6AD6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A6AD8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A6ACC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A6ACE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A6AD0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801A6A5C; +extern u16 D_801A6ADC; +extern u16 D_801A6ADE; +extern u16 D_801A6AE0; +extern s16 D_801AC268; + +void func_8017B1D8(void) { + func_8012A418(); + D_801AC268 = 0; + D_801A6A5C = 0; + D_801A6ADC = D_80126B5E; + D_801A6ADE = D_80126B62; + D_801A6AE0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018393C[]; + extern s16 D_801A6AD4; + extern s16 D_801A6ACC; + 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_8018393C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018393C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A6AD4; + s16 *p78C = &D_801A6ACC; + *(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_801AC268 = 1; + D_801A6A5C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A6A7C; + extern SV4_8017B368 D_801A6A84; + extern s16 D_801A6AD4; + extern s16 D_801A6ACC; + extern u16 D_8018393C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801A6A7C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801A6A84; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018393C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018393C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801A6AD4) = loc0; + (*(SV4_8017B368 *)&D_801A6ACC) = loc1; + D_801AC268 = 1; + D_801A6A5C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018393C[]; + extern s16 D_801A6AD4; + extern s16 D_801A6AD6; + extern s16 D_801A6AD8; + extern s16 D_801A6ACC; + extern s16 D_801A6ACE; + extern s16 D_801A6AD0; + 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_8018393C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018393C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A6AD4; + s16 *p78C = &D_801A6ACC; + *(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_801A6AD6; + v798 = D_801A6AD8; + v78C = *p78C; + v78E = D_801A6ACE; + v790 = D_801A6AD0; + __asm__ __volatile__(""); + D_801AC268 = 1; + D_801A6A5C = 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_801A6A5C; +extern s16 D_801A6AD4; +extern s16 D_801A6AD6; +extern s16 D_801A6AD8; +extern s16 D_801A6ACC; +extern s16 D_801A6ACE; +extern s16 D_801A6AD0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801A6A5C = 0; + D_801A6AD4 = (s16) D_80114F30; + D_801A6AD6 = (s16) D_80114F34; + D_801A6AD8 = (s16) D_80114F38; + D_801A6ACC = (s16) D_80114F24; + D_801A6ACE = (s16) D_80114F28; + D_801A6AD0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801A6AEC; +extern s16 D_801A6AEE; +extern s16 D_801A6AF0; +extern s16 D_801A6AF4; +extern s16 D_801A6AF6; +extern s16 D_801A6AF8; + +void func_8017B824(void) { + D_801A6AEC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801A6AEE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801A6AF0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801A6AF4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801A6AF6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801A6AF8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801A6AEC; +extern s16 D_801A6AEE; +extern s16 D_801A6AF0; +extern s16 D_801A6AF4; +extern s16 D_801A6AF6; +extern s16 D_801A6AF8; + +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_801A6AEC; + D_80114F34 = D_801A6AEE; + D_80114F38 = D_801A6AF0; + D_80114F24 = D_801A6AF4; + D_80114F28 = D_801A6AF6; + D_80114F2C = D_801A6AF8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801A6AD4), src[8..15] -> (*(S8_8017B8E8 *)&D_801A6ACC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801A6AD4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801A6ACC) = ((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_801A6ADC; +extern u16 D_801A6ADE; +extern u16 D_801A6AE0; + +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_801A6A5C; +extern short D_801A6AE4; +extern short D_801A6AE6; +extern short D_801A6AE8; +extern s16 D_801A6AD4; +extern s16 D_801A6AD6; +extern s16 D_801A6AD8; +extern s16 D_801A6ACC; +extern s16 D_801A6ACE; +extern s16 D_801A6AD0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A6ADC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A6ADE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A6AE0); + (*(s16 *)&D_801A6AE4) = buf[0]; + (*(s16 *)&D_801A6AE6) = buf[1]; + (*(s16 *)&D_801A6AE8) = buf[2]; + D_801A6AD4 = D_80114F30 + buf[0]; + D_801A6A5C = 0; + D_801A6AD6 = D_80114F34 + buf[1]; + D_801A6AD8 = D_80114F38 + buf[2]; + D_801A6ACC = D_80114F24 + buf[0]; + D_801A6ACE = D_80114F28 + buf[1]; + D_801A6AD0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801A6A7C; +extern SV4 D_801A6A84; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A6A84) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801A6A7C = 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_801A6A84 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A6A84)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801A6A7C) = 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_801A6A84) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801A6AA4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801A6AA4; + 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_801A6A5C; +extern s16 D_801AC268; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801A6A5C = D_801A6A5C + 1; + if (D_801A6A5C >= 0x1F) { + D_801AC268 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801A6A5C; +extern s16 D_801AC268; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801A6A5C = D_801A6A5C + 1; + if (0x18 < D_801A6A5C) { + func_8012A4BC(); + D_801AC268 = 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_801A6A5C; +extern void (*D_801A6AA0)(void); +extern short D_801A6AE4; +extern short D_801A6AE6; +extern short D_801A6AE8; +extern s16 D_801AC268; + +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_801A6A5C = D_801A6A5C + 1; + if (D_801A6A5C >= 0x19) { + if (D_801A6AA0 != 0) { + (*D_801A6AA0)(); + } else { + D_80114F30 = D_80114F30 + D_801A6AE4; + D_80114F34 = D_80114F34 + D_801A6AE6; + D_80114F38 = D_80114F38 + D_801A6AE8; + D_80114F24 = D_80114F24 + D_801A6AE4; + D_80114F28 = D_80114F28 + D_801A6AE6; + D_80114F2C = D_80114F2C + D_801A6AE8; + func_8012A4BC(); + } + D_801AC268 = 0; + } +} + + + +extern void (*D_801839DC[])(void); + +void func_8017BE60(void *a0) { + D_801839DC[*(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) */ + diff --git a/src/ov_SC04_018/ov_SC04_018_jr_8017A4AC.c b/src/ov_SC04_018/ov_SC04_018_jr_8017A4AC.c index bc0ffa81d..c28deac27 100644 --- a/src/ov_SC04_018/ov_SC04_018_jr_8017A4AC.c +++ b/src/ov_SC04_018/ov_SC04_018_jr_8017A4AC.c @@ -2944,2274 +2944,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017AE2C); - -// @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 u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801E6CAC; -extern u16 D_801E6D2C; -extern u16 D_801E6D2E; -extern u16 D_801E6D30; -extern s16 D_801E7AB0; - -void func_8017B1D8(void) { - 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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; -} - - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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 s32 D_801151D4; -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) { - 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. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -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_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -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) -{ - 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: 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, 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" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017BF50); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017C094); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017C100); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017C1AC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017C1EC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017C2B0); - - -extern void (*D_80190CC4[])(void); - -void func_8017C338(void *a0) { - D_80190CC4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017C374); - -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; - } -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017C710); - - -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) */ - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017D6EC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017D77C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017D9B8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017DA08); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017DAC4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017DBDC); - - -// @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; -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017DD0C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017DD7C); - -extern void func_800D1EBC(void); -void func_8017DE2C(void) { - func_800D1EBC(); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017DE4C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017DEA0); - - -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)](); -} - - - -extern s32 D_80127050; - -void func_8017E024(void) { - D_80127050 = 1; -} - - - -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) */ - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017E088); - - -extern void (*D_80191068[])(void); - -void func_8017E0C0(void *a0) { - D_80191068[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_8017E0FC() /* dedup: shared engine-core @0x8017E0FC (src/shared) */ - - -extern void func_8016F0E4(void); -void func_8017E110(void) { - func_8016F0E4(); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017E130); - - -extern void (*D_80191070[])(void); - -void func_8017E1F4(void *a0) { - D_80191070[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017E230); - -DEFINE_func_8017E264() /* dedup: shared engine-core @0x8017E264 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017E26C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017E3AC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017E5A0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017E5CC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017E628); - - -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); - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017E7CC); - - -extern void (*D_801912C8[])(void); - -void func_8017E810(void *a0) { - D_801912C8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017E84C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017E878); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017E8A4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017E8FC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017E950); - -extern void func_8012C588(s32, s32); -void func_8017E99C(void) { - func_8012C588(0x22B, 0); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017E9C0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017EA0C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017EAAC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017EAFC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017EBA0); - - -extern void func_8017E7CC(void); - void func_8017EBE0(u8 *a0) { - if (*(u16 *)((s32)a0 + 0x34) == 1) { - func_8017E7CC(); - } - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017EC10); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017ECF4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017EDA4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017EE6C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017F02C); - -DEFINE_func_8017F058() /* dedup: shared engine-core @0x8017F058 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017F094); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017F0C0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017F0D8); - - -extern void func_80029124(s32 arg0, s32 arg1); - void func_8017F108(void) { - func_80029124(0x10C, 0); - func_80029124(0x10D, 1); - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017F138); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017F174); - -extern void func_80029514(int); -void func_8017F1A8(void) { - func_80029514(0x280); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017F1C8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017F224); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017F28C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017F2DC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017F35C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017F418); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017F500); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017F564); - - -extern void (*D_801916E4[])(void); - -void func_8017F5BC(void *a0) { - D_801916E4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017F5F8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017F6D8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017F7B8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017F898); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017F978); - -extern void func_80029124(s32 arg0, s32 arg1); - void func_8017FA34(void) { - func_80029124(0x107, 1); - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017FA58); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017FAAC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017FB0C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017FBB0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017FC58); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017FCD8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017FD28); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017FD88); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017FDE4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017FE54); - - -extern void (*D_80191814[])(void); - -void func_8017FF34(void *a0) { - D_80191814[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8017FF70); - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018001C); - -DEFINE_func_801800E0() /* dedup: shared engine-core @0x801800E0 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018011C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80180134); - -DEFINE_func_8018015C() /* dedup: shared engine-core @0x8018015C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80180164); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80180190); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801801E0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80180284); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018034C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801803BC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018042C); - - -extern void (*D_801919C4[])(void); - -void func_8018048C(void *a0) { - D_801919C4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801804C8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80180504); - -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; - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80180580); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801805C0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80180618); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018067C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801806CC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80180740); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80180814); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80180888); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801808FC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80180954); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801809DC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80180A08); - - -extern void (*D_80191A80[])(void); - -void func_80180B6C(void *a0) { - D_80191A80[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80180BA8); - -extern void func_80178CBC(s32 *a0, s32 a1); - extern short D_80191A20; - void func_80180C0C(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x7; - ((void (*)(s32, s32))func_80178CBC)((int)a0, (int)&D_80191A20); - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80180C38); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80180CC0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80180D38); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80180E28); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80180EE8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80180F7C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181020); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181090); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181124); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801811F4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181244); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181270); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801812D0); - - -extern void (*D_80191B20[])(void); - -void func_801812FC(void *a0) { - D_80191B20[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181338); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181364); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801813A4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181400); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181474); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801814C4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181564); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801815DC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181648); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801816A8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018170C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181738); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018178C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801817B8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181804); - - -extern void (*D_80191BDC[])(void); - -void func_80181924(void *a0) { - D_80191BDC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181960); - -DEFINE_func_80181998() /* dedup: shared engine-core @0x80181998 (src/shared) */ - - -DEFINE_func_801819B0() /* dedup: shared engine-core @0x801819B0 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801819C8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181A28); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181A68); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181AA8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181B34); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181B74); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181BEC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181C78); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181CB8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181DC4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181E04); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181EFC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181F70); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80181FE4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018203C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80182120); - -extern void func_80184CB8(s32 *a0, s32 a1); - extern short D_80191C08; - void func_801821A8(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x5; - func_80184CB8((s32 *)a0, (s32)&D_80191C08); - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801821D4); - -DEFINE_func_8018233C() /* dedup: shared engine-core @0x8018233C (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80182378); - -extern void func_80178CBC(s32 *a0, s32 a1); - extern short D_80191C48; - void func_80182490(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x7; - func_80178CBC((s32 *)a0, (s32)&D_80191C48); - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801824BC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80182544); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801825BC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801826AC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018276C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80182800); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801828B0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80182920); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801829AC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80182A7C); - -extern void func_80178CBC(s32 *a0, s32 a1); - extern short D_80191EB0; - void func_80182ACC(void *a0) { - *(short *)((char *)a0 + 0x2) = 0xB; - func_80178CBC(a0, &D_80191EB0); - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80182AF8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80182B58); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80182BCC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80182C24); - - -extern void (*D_80192014[])(void); - -void func_80182C98(void *a0) { - D_80192014[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80182CD4); - - -extern s32 D_801D7E84; -extern s32 D_801D6C98; - -void func_80182D0C(void) { - D_801D6C98 = D_801D7E84; -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80182D24); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80182D84); - - -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; - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80182E00); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80182E40); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80182ED8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80182F18); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80182F88); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183024); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801830F4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801831AC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801831D8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183248); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801832A8); - -extern void func_80184CB8(s32 *a0, s32 a1); - extern short D_80192030; - void func_8018330C(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x8; - func_80184CB8((s32 *)a0, (s32)&D_80192030); - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183338); - - -extern void (*D_8019211C[])(void); - -void func_80183438(void *a0) { - D_8019211C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183474); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801834A0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801834CC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801834F8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183538); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183578); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183604); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183674); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801836C0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018370C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018375C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801837A8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801837EC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183838); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183890); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801838E0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183938); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801839A8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183A08); - - -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(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x5; - ((void (*)(s32, s32))func_80178CBC)((int)a0, (int)&D_801921B8); - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183AD0); - - -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; - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183B4C); - -extern s32 func_80184FA4(s32 a0); -extern s32 func_801839A8(void *a0); -void func_80183B8C(int param_1) -{ - if (((int (*)(void))func_80184FA4)() != 0) { - ((void (*)(int))func_801839A8)(param_1); - } -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183BC4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183C28); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183C78); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183CBC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183D80); - -extern void func_80184CB8(s32 *a0, s32 a1); - extern short D_8019224C; - void func_80183DF4(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 1; - ((void (*)(s32, s32))func_80184CB8)((int)arg0, (int)&D_8019224C); - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183E20); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183E6C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183FA8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80183FF4); - - -extern void (*D_80192414[])(void); - -void func_80184130(void *a0) { - D_80192414[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018416C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801841AC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801841EC); - - -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 *a0, s32 a1); - extern short D_801922E4; - void func_80184268(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x8; - *(short *)((char *)a0 + 0x34) = 0; - func_80178CBC((s32 *)a0, (s32)&D_801922E4); - } - - -extern void func_80178CBC(s32 *a0, s32 a1); - extern short D_8019232C; - void func_80184298(short *a0) { - *(short *)((char *)a0 + 0x2) = 0xE; - *(short *)((char *)a0 + 0x34) = 0; - ((void (*)(void *, s32))func_80178CBC)(a0, &D_8019232C); - } - - - -extern void func_80178CBC(s32 *a0, s32 a1); - extern short D_80192334; - void func_801842C8(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x4; - *(short *)((char *)a0 + 0x34) = 0; - func_80178CBC((s32 *)a0, (s32)&D_80192334); - } - - - -extern void func_80178CBC(s32 *a0, s32 a1); - extern short D_801923A4; - void func_801842F8(short *a0) { - *(short *)((char *)a0 + 0x2) = 0xb; - *(short *)((char *)a0 + 0x34) = 0; - func_80178CBC((s32 *)a0, (s32)&D_801923A4); - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184328); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184374); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801843C4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184410); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184460); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801844AC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184504); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184560); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801845B8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018465C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184738); - - -void func_8018479C(void *a0) { - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; - } - - - -void func_801847AC(void *a0) { - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 2; - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801847BC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184858); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184884); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801848B0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801848DC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184960); - - -extern s32 func_80184960(s32 arg); -extern void func_80184AC4(void *a0); - -void func_80184A90(void *a0) { - *(s32 *)((char *)a0 + 0xe0) = func_80184960((s32)a0); - func_80184AC4(a0); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184AC4); - - -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) */ - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184B70); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184BAC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184BD0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184C28); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184C90); - -DEFINE_func_80184CB0() /* dedup: shared engine-core @0x80184CB0 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184CB8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184D00); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184D5C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184DD0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184E44); - - -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); - } - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184ED4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80184FA4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018516C); - - -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) */ - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80185218); - -DEFINE_func_8018525C() /* dedup: shared engine-core @0x8018525C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80185264); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801852EC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801854C4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80185664); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801856E0); - -extern s32 func_80185EEC(void); - void func_801857AC(void) { - func_80185EEC(); - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801857CC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018589C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80185904); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80185978); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801859D8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80185A58); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80185AB0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80185B10); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80185B58); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80185BA8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80185BE0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80185C6C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80185D10); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80185D70); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80185EEC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80185F20); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80185F54); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80185FB8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018602C); - -DEFINE_func_80186084() /* dedup: shared engine-core @0x80186084 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801860C0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018613C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018625C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801862A8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801863B4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80186410); - -extern s16 D_801E7030; - s32 func_80186450(void) { - return D_801E7030; - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80186460); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801864AC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018651C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80186570); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80186E24); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801877B0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801878E8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801880EC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80188428); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80188778); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_801889B8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80188B84); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80188E1C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80189214); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80189540); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80189DDC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80189E14); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80189E54); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_80189EA0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018A0B4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018A168); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018A1D0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018A224); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018A2E0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018A6C8); - -DEFINE_func_8018A740() /* dedup: shared engine-core @0x8018A740 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018A77C); - -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) */ - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018A990); - -DEFINE_func_8018AB3C() /* dedup: shared engine-core @0x8018AB3C (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018AB78); - - -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 void func_8018A168(s32 arg0, s32 arg1); - extern s32 D_801E0228; - extern s32 D_801E7980; - void func_8018AD08(void) { - D_801E7980 = &D_801E0228; - func_8018A168(0x474, 0x4EC); - } - - - -extern s32 D_801E0260; -extern s32 D_801E7980; -extern void func_8018A168(s32 arg0, s32 arg1); - -void func_8018AD3C(void) { - D_801E7980 = &D_801E0260; - func_8018A168(0x474, 0x4B0); -} - - - -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); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018ADD8); - - -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); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018AE80); - - -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); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018AF68); - - -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) */ - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018AFF0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018B0AC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018B158); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018B19C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018B2B8); - -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)(); - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018B388); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018B400); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018B448); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018B4EC); - -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)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018B5AC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018B614); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018B660); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018B6A0); - -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)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018B730); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018B798); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018B7FC); - -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)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018B8B0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018B904); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018B948); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018B988); - -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)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018BA18); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018BA80); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018BAE4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018BB50); - - -extern void (*D_801E05B4[])(void); - -void func_8018BC3C(void *a0) { - D_801E05B4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018BC78); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018BCDC); - - -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; - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018BDA4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018BDE0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018BE0C); - - -extern void (*D_801E0690[])(void); - -void func_8018BE38(void *a0) { - D_801E0690[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018BE74); - - - -extern s32 func_8014CB1C(void); - -s32 func_8018BEE8(void) { - return (u32)func_8014CB1C() != 0; -} - - -DEFINE_func_8018BF08() /* dedup: shared engine-core @0x8018BF08 (src/shared) */ - - -extern void func_80178CBC(s32 *a0, s32 a1); - extern short D_801E0648; - void func_8018BF34(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x5; - *(short *)((char *)a0 + 0x34) = 0; - func_80178CBC((s32 *)a0, (s32)&D_801E0648); - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018BF64); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018BFCC); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018C038); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018C0B0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018C114); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018C1E0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018C24C); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018C278); - - -extern void (*D_801E077C[])(void); - -void func_8018C368(void *a0) { - D_801E077C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018C3A4); - -extern s32 func_800D0EC4(); -s32 func_8018C3D0(void) { - return func_800D0EC4() == 0; -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018C3F0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018C494); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018C518); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018C5AC); - - -extern void (*D_801E3AF4[])(void); - -void func_8018C5FC(void *a0) { - D_801E3AF4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018C638); - -DEFINE_func_8018C69C() /* dedup: shared engine-core @0x8018C69C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018C6A4); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018C6F0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018C730); - - -extern void (*D_801E3BA4[])(void); - -void func_8018C78C(void *a0) { - D_801E3BA4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018C7C8); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018C7F0); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018C8A8); - - -extern void func_8012B2CC(s32 arg); - void func_8018C90C(void *arg0) { - s32 *p = *(s32 **)((char *)arg0 + 0x20); - *(s16 *)((char *)arg0 + 0x2) = 2; - *(s16 *)((char *)p + 0x12) = -0x600; - func_8012B2CC((s32)arg0); - } - - -extern void func_8012B2CC(s32 arg); - void func_8018C93C(void *a0) { - s32 v1 = *(s32 *)((char *)a0 + 0x20); - *(s16 *)((char *)a0 + 0x2) = 0x4; - *(s16 *)(v1 + 0x12) = 0x600; - func_8012B2CC((s32)a0); - } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018C96C); - - -extern void (*D_801E3CEC[])(void); - -void func_8018CADC(void *a0) { - D_801E3CEC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018CB18); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018CB94); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018CC04); - -extern void func_8002D4C8(s32, s32); -void func_8018CC1C(void) { - func_8002D4C8(0x7E0, 0); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018CC40); - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018CD74); - -DEFINE_func_8018CDDC() /* dedup: shared engine-core @0x8018CDDC (src/shared) */ - -DEFINE_func_8018CDE4() /* dedup: shared engine-core @0x8018CDE4 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017A4AC", func_8018CDEC); - - - diff --git a/src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c b/src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c new file mode 100644 index 000000000..6bdcc45c1 --- /dev/null +++ b/src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c @@ -0,0 +1,5149 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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(void); +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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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, s32, s32, s32); +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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 void 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(void *a0); +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 a0, s32 a1, s32 a2, s32 a3); +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 void 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(void); +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, s32 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(void *a0, void *a1); +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); +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(s32); +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 int func_801789AC(void); +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 short D_801E7B24; +extern void func_80178D18(void); +extern s32 func_80178D40(s32 arg0, s32 arg1); +extern void func_80179B28(s32 a0); +extern void func_80179B74(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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 u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801E6CAC; +extern u16 D_801E6D2C; +extern u16 D_801E6D2E; +extern u16 D_801E6D30; +extern s16 D_801E7AB0; + +void func_8017B1D8(void) { + 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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; +} + + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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 s32 D_801151D4; +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) { + 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. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +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_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +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) +{ + 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: 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, 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" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017BF50); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017C094); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017C100); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017C1AC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017C1EC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017C2B0); + + +extern void (*D_80190CC4[])(void); + +void func_8017C338(void *a0) { + D_80190CC4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017C374); + +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; + } +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017C710); + + +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) */ + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017D6EC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017D77C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017D9B8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017DA08); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017DAC4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017DBDC); + + +// @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; +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017DD0C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017DD7C); + +extern void func_800D1EBC(void); +void func_8017DE2C(void) { + func_800D1EBC(); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017DE4C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017DEA0); + + +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)](); +} + + + +extern s32 D_80127050; + +void func_8017E024(void) { + D_80127050 = 1; +} + + + +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) */ + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017E088); + + +extern void (*D_80191068[])(void); + +void func_8017E0C0(void *a0) { + D_80191068[*(u8 *)((s32)a0 + 0x214)](); +} + + +DEFINE_func_8017E0FC() /* dedup: shared engine-core @0x8017E0FC (src/shared) */ + + +extern void func_8016F0E4(void); +void func_8017E110(void) { + func_8016F0E4(); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017E130); + + +extern void (*D_80191070[])(void); + +void func_8017E1F4(void *a0) { + D_80191070[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017E230); + +DEFINE_func_8017E264() /* dedup: shared engine-core @0x8017E264 (src/shared) */ + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017E26C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017E3AC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017E5A0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017E5CC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017E628); + + +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); + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017E7CC); + + +extern void (*D_801912C8[])(void); + +void func_8017E810(void *a0) { + D_801912C8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017E84C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017E878); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017E8A4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017E8FC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017E950); + +extern void func_8012C588(s32, s32); +void func_8017E99C(void) { + func_8012C588(0x22B, 0); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017E9C0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017EA0C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017EAAC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017EAFC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017EBA0); + + +extern void func_8017E7CC(void); + void func_8017EBE0(u8 *a0) { + if (*(u16 *)((s32)a0 + 0x34) == 1) { + func_8017E7CC(); + } + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017EC10); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017ECF4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017EDA4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017EE6C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F02C); + +DEFINE_func_8017F058() /* dedup: shared engine-core @0x8017F058 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F094); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F0C0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F0D8); + + +extern void func_80029124(s32 arg0, s32 arg1); + void func_8017F108(void) { + func_80029124(0x10C, 0); + func_80029124(0x10D, 1); + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F138); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F174); + +extern void func_80029514(int); +void func_8017F1A8(void) { + func_80029514(0x280); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F1C8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F224); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F28C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F2DC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F35C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F418); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F500); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F564); + + +extern void (*D_801916E4[])(void); + +void func_8017F5BC(void *a0) { + D_801916E4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F5F8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F6D8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F7B8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F898); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F978); + +extern void func_80029124(s32 arg0, s32 arg1); + void func_8017FA34(void) { + func_80029124(0x107, 1); + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017FA58); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017FAAC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017FB0C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017FBB0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017FC58); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017FCD8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017FD28); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017FD88); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017FDE4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017FE54); + + +extern void (*D_80191814[])(void); + +void func_8017FF34(void *a0) { + D_80191814[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017FF70); + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018001C); + +DEFINE_func_801800E0() /* dedup: shared engine-core @0x801800E0 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018011C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180134); + +DEFINE_func_8018015C() /* dedup: shared engine-core @0x8018015C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180164); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180190); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801801E0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180284); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018034C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801803BC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018042C); + + +extern void (*D_801919C4[])(void); + +void func_8018048C(void *a0) { + D_801919C4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801804C8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180504); + +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; + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180580); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801805C0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180618); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018067C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801806CC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180740); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180814); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180888); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801808FC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180954); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801809DC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180A08); + + +extern void (*D_80191A80[])(void); + +void func_80180B6C(void *a0) { + D_80191A80[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180BA8); + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_80191A20; + void func_80180C0C(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x7; + ((void (*)(s32, s32))func_80178CBC)((int)a0, (int)&D_80191A20); + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180C38); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180CC0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180D38); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180E28); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180EE8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180F7C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181020); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181090); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181124); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801811F4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181244); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181270); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801812D0); + + +extern void (*D_80191B20[])(void); + +void func_801812FC(void *a0) { + D_80191B20[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181338); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181364); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801813A4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181400); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181474); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801814C4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181564); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801815DC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181648); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801816A8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018170C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181738); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018178C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801817B8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181804); + + +extern void (*D_80191BDC[])(void); + +void func_80181924(void *a0) { + D_80191BDC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181960); + +DEFINE_func_80181998() /* dedup: shared engine-core @0x80181998 (src/shared) */ + + +DEFINE_func_801819B0() /* dedup: shared engine-core @0x801819B0 (src/shared) */ + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801819C8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181A28); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181A68); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181AA8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181B34); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181B74); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181BEC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181C78); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181CB8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181DC4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181E04); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181EFC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181F70); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181FE4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018203C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80182120); + +extern void func_80184CB8(s32 *a0, s32 a1); + extern short D_80191C08; + void func_801821A8(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x5; + func_80184CB8((s32 *)a0, (s32)&D_80191C08); + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801821D4); + +DEFINE_func_8018233C() /* dedup: shared engine-core @0x8018233C (src/shared) */ + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80182378); + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_80191C48; + void func_80182490(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x7; + func_80178CBC((s32 *)a0, (s32)&D_80191C48); + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801824BC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80182544); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801825BC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801826AC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018276C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80182800); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801828B0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80182920); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801829AC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80182A7C); + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_80191EB0; + void func_80182ACC(void *a0) { + *(short *)((char *)a0 + 0x2) = 0xB; + func_80178CBC(a0, &D_80191EB0); + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80182AF8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80182B58); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80182BCC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80182C24); + + +extern void (*D_80192014[])(void); + +void func_80182C98(void *a0) { + D_80192014[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80182CD4); + + +extern s32 D_801D7E84; +extern s32 D_801D6C98; + +void func_80182D0C(void) { + D_801D6C98 = D_801D7E84; +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80182D24); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80182D84); + + +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; + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80182E00); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80182E40); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80182ED8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80182F18); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80182F88); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183024); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801830F4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801831AC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801831D8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183248); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801832A8); + +extern void func_80184CB8(s32 *a0, s32 a1); + extern short D_80192030; + void func_8018330C(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x8; + func_80184CB8((s32 *)a0, (s32)&D_80192030); + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183338); + + +extern void (*D_8019211C[])(void); + +void func_80183438(void *a0) { + D_8019211C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183474); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801834A0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801834CC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801834F8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183538); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183578); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183604); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183674); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801836C0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018370C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018375C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801837A8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801837EC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183838); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183890); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801838E0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183938); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801839A8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183A08); + + +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(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x5; + ((void (*)(s32, s32))func_80178CBC)((int)a0, (int)&D_801921B8); + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183AD0); + + +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; + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183B4C); + +extern s32 func_80184FA4(s32 a0); +extern s32 func_801839A8(void *a0); +void func_80183B8C(int param_1) +{ + if (((int (*)(void))func_80184FA4)() != 0) { + ((void (*)(int))func_801839A8)(param_1); + } +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183BC4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183C28); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183C78); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183CBC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183D80); + +extern void func_80184CB8(s32 *a0, s32 a1); + extern short D_8019224C; + void func_80183DF4(void * arg0) { + *(short *)((char *)arg0 + 0x2) = 1; + ((void (*)(s32, s32))func_80184CB8)((int)arg0, (int)&D_8019224C); + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183E20); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183E6C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183FA8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183FF4); + + +extern void (*D_80192414[])(void); + +void func_80184130(void *a0) { + D_80192414[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018416C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801841AC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801841EC); + + +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 *a0, s32 a1); + extern short D_801922E4; + void func_80184268(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x8; + *(short *)((char *)a0 + 0x34) = 0; + func_80178CBC((s32 *)a0, (s32)&D_801922E4); + } + + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_8019232C; + void func_80184298(short *a0) { + *(short *)((char *)a0 + 0x2) = 0xE; + *(short *)((char *)a0 + 0x34) = 0; + ((void (*)(void *, s32))func_80178CBC)(a0, &D_8019232C); + } + + + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_80192334; + void func_801842C8(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x4; + *(short *)((char *)a0 + 0x34) = 0; + func_80178CBC((s32 *)a0, (s32)&D_80192334); + } + + + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_801923A4; + void func_801842F8(short *a0) { + *(short *)((char *)a0 + 0x2) = 0xb; + *(short *)((char *)a0 + 0x34) = 0; + func_80178CBC((s32 *)a0, (s32)&D_801923A4); + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184328); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184374); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801843C4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184410); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184460); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801844AC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184504); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184560); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801845B8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018465C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184738); + + +void func_8018479C(void *a0) { + *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; + } + + + +void func_801847AC(void *a0) { + *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 2; + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801847BC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184858); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184884); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801848B0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801848DC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184960); + + +extern s32 func_80184960(s32 arg); +extern void func_80184AC4(void *a0); + +void func_80184A90(void *a0) { + *(s32 *)((char *)a0 + 0xe0) = func_80184960((s32)a0); + func_80184AC4(a0); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184AC4); + + +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) */ + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184B70); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184BAC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184BD0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184C28); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184C90); + +DEFINE_func_80184CB0() /* dedup: shared engine-core @0x80184CB0 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184CB8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184D00); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184D5C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184DD0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184E44); + + +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); + } + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184ED4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80184FA4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018516C); + + +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) */ + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80185218); + +DEFINE_func_8018525C() /* dedup: shared engine-core @0x8018525C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80185264); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801852EC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801854C4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80185664); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801856E0); + +extern s32 func_80185EEC(void); + void func_801857AC(void) { + func_80185EEC(); + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801857CC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018589C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80185904); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80185978); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801859D8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80185A58); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80185AB0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80185B10); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80185B58); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80185BA8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80185BE0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80185C6C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80185D10); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80185D70); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80185EEC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80185F20); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80185F54); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80185FB8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018602C); + +DEFINE_func_80186084() /* dedup: shared engine-core @0x80186084 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801860C0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018613C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018625C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801862A8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801863B4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80186410); + +extern s16 D_801E7030; + s32 func_80186450(void) { + return D_801E7030; + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80186460); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801864AC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018651C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80186570); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80186E24); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801877B0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801878E8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801880EC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80188428); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80188778); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801889B8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80188B84); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80188E1C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80189214); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80189540); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80189DDC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80189E14); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80189E54); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80189EA0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018A0B4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018A168); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018A1D0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018A224); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018A2E0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018A6C8); + +DEFINE_func_8018A740() /* dedup: shared engine-core @0x8018A740 (src/shared) */ + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018A77C); + +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) */ + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018A990); + +DEFINE_func_8018AB3C() /* dedup: shared engine-core @0x8018AB3C (src/shared) */ + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018AB78); + + +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 void func_8018A168(s32 arg0, s32 arg1); + extern s32 D_801E0228; + extern s32 D_801E7980; + void func_8018AD08(void) { + D_801E7980 = &D_801E0228; + func_8018A168(0x474, 0x4EC); + } + + + +extern s32 D_801E0260; +extern s32 D_801E7980; +extern void func_8018A168(s32 arg0, s32 arg1); + +void func_8018AD3C(void) { + D_801E7980 = &D_801E0260; + func_8018A168(0x474, 0x4B0); +} + + + +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); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018ADD8); + + +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); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018AE80); + + +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); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018AF68); + + +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) */ + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018AFF0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018B0AC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018B158); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018B19C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018B2B8); + +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)(); + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018B388); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018B400); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018B448); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018B4EC); + +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)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018B5AC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018B614); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018B660); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018B6A0); + +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)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018B730); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018B798); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018B7FC); + +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)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018B8B0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018B904); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018B948); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018B988); + +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)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018BA18); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018BA80); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018BAE4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018BB50); + + +extern void (*D_801E05B4[])(void); + +void func_8018BC3C(void *a0) { + D_801E05B4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018BC78); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018BCDC); + + +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; + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018BDA4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018BDE0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018BE0C); + + +extern void (*D_801E0690[])(void); + +void func_8018BE38(void *a0) { + D_801E0690[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018BE74); + + + +extern s32 func_8014CB1C(void); + +s32 func_8018BEE8(void) { + return (u32)func_8014CB1C() != 0; +} + + +DEFINE_func_8018BF08() /* dedup: shared engine-core @0x8018BF08 (src/shared) */ + + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_801E0648; + void func_8018BF34(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x5; + *(short *)((char *)a0 + 0x34) = 0; + func_80178CBC((s32 *)a0, (s32)&D_801E0648); + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018BF64); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018BFCC); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018C038); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018C0B0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018C114); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018C1E0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018C24C); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018C278); + + +extern void (*D_801E077C[])(void); + +void func_8018C368(void *a0) { + D_801E077C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018C3A4); + +extern s32 func_800D0EC4(); +s32 func_8018C3D0(void) { + return func_800D0EC4() == 0; +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018C3F0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018C494); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018C518); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018C5AC); + + +extern void (*D_801E3AF4[])(void); + +void func_8018C5FC(void *a0) { + D_801E3AF4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018C638); + +DEFINE_func_8018C69C() /* dedup: shared engine-core @0x8018C69C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018C6A4); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018C6F0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018C730); + + +extern void (*D_801E3BA4[])(void); + +void func_8018C78C(void *a0) { + D_801E3BA4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018C7C8); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018C7F0); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018C8A8); + + +extern void func_8012B2CC(s32 arg); + void func_8018C90C(void *arg0) { + s32 *p = *(s32 **)((char *)arg0 + 0x20); + *(s16 *)((char *)arg0 + 0x2) = 2; + *(s16 *)((char *)p + 0x12) = -0x600; + func_8012B2CC((s32)arg0); + } + + +extern void func_8012B2CC(s32 arg); + void func_8018C93C(void *a0) { + s32 v1 = *(s32 *)((char *)a0 + 0x20); + *(s16 *)((char *)a0 + 0x2) = 0x4; + *(s16 *)(v1 + 0x12) = 0x600; + func_8012B2CC((s32)a0); + } + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018C96C); + + +extern void (*D_801E3CEC[])(void); + +void func_8018CADC(void *a0) { + D_801E3CEC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018CB18); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018CB94); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018CC04); + +extern void func_8002D4C8(s32, s32); +void func_8018CC1C(void) { + func_8002D4C8(0x7E0, 0); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018CC40); + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018CD74); + +DEFINE_func_8018CDDC() /* dedup: shared engine-core @0x8018CDDC (src/shared) */ + +DEFINE_func_8018CDE4() /* dedup: shared engine-core @0x8018CDE4 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8018CDEC); + + + + diff --git a/src/ov_SC04_019/ov_SC04_019_jr_8017A4AC.c b/src/ov_SC04_019/ov_SC04_019_jr_8017A4AC.c index 73ed77a57..64c1eeaeb 100644 --- a/src/ov_SC04_019/ov_SC04_019_jr_8017A4AC.c +++ b/src/ov_SC04_019/ov_SC04_019_jr_8017A4AC.c @@ -2946,2289 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017AE2C); - -// @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 u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801E6CAC; -extern u16 D_801E6D2C; -extern u16 D_801E6D2E; -extern u16 D_801E6D30; -extern s16 D_801E7AB0; - -void func_8017B1D8(void) { - 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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; -} - - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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 s32 D_801151D4; -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) { - 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. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -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_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -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) -{ - 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: 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, 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" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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)](); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017BF50); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017C094); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017C100); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017C1AC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017C1EC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017C2B0); - - -extern void (*D_80190CC4[])(void); - -void func_8017C338(void *a0) { - D_80190CC4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017C374); - -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; - } -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017C710); - - -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) */ - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017D6EC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017D77C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017D9B8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017DA08); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017DAC4); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017DBDC); - - -// @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; -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017DD0C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017DD7C); - -extern void func_800D1EBC(void); - void func_8017DE2C(void) { - func_800D1EBC(); - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017DE4C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017DEA0); - - -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)](); -} - - -extern s32 D_80127050; - void func_8017E024(void) { - D_80127050 = 1; - } - - - -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) */ - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017E088); - - -extern void (*D_80191068[])(void); - -void func_8017E0C0(void *a0) { - D_80191068[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_8017E0FC() /* dedup: shared engine-core @0x8017E0FC (src/shared) */ - -extern void func_8016F0E4(void); -void func_8017E110(void) { - func_8016F0E4(); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017E130); - - -extern void (*D_80191070[])(void); - -void func_8017E1F4(void *a0) { - D_80191070[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017E230); - -DEFINE_func_8017E264() /* dedup: shared engine-core @0x8017E264 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017E26C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017E3AC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017E5A0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017E5CC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017E628); - - -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); - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017E7CC); - - -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); - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017E8A4); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017E8FC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017E950); - -extern void func_8012C588(s32, s32); -void func_8017E99C(void) { - func_8012C588(0x22B, 0); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017E9C0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017EA0C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017EAAC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017EAFC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017EBA0); - -extern void func_8017E7CC(void); - void func_8017EBE0(u8 *a0) { - if (*(u16 *)((s32)a0 + 0x34) == 1) { - func_8017E7CC(); - } - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017EC10); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017ECF4); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017EDA4); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017EE6C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017F02C); - -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); - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017F0C0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017F0D8); - -extern void func_80029124(s32 arg0, s32 arg1); - void func_8017F108(void) { - func_80029124(0x10C, 0); - func_80029124(0x10D, 1); - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017F138); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017F174); - -extern void func_80029514(int); -void func_8017F1A8(void) { - func_80029514(0x280); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017F1C8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017F224); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017F28C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017F2DC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017F35C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017F418); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017F500); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017F564); - - -extern void (*D_801916E4[])(void); - -void func_8017F5BC(void *a0) { - D_801916E4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017F5F8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017F6D8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017F7B8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017F898); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017F978); - -extern void func_80029124(s32 a, s32 b); -void func_8017FA34(void) { - func_80029124(0x107, 0x1); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017FA58); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017FAAC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017FB0C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017FBB0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017FC58); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017FCD8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017FD28); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017FD88); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017FDE4); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017FE54); - - -extern void (*D_80191814[])(void); - -void func_8017FF34(void *a0) { - D_80191814[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8017FF70); - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018001C); - -DEFINE_func_801800E0() /* dedup: shared engine-core @0x801800E0 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018011C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80180134); - -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_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80180190); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801801E0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80180284); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018034C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801803BC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018042C); - - -extern void (*D_801919C4[])(void); - -void func_8018048C(void *a0) { - D_801919C4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801804C8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80180504); - - -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; - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80180580); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801805C0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80180618); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018067C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801806CC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80180740); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80180814); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80180888); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801808FC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80180954); - -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); - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80180A08); - - -extern void (*D_80191A80[])(void); - -void func_80180B6C(void *a0) { - D_80191A80[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80180BA8); - - -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); - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80180C38); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80180CC0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80180D38); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80180E28); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80180EE8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80180F7C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181020); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181090); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181124); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801811F4); - -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); - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181270); - -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); - } - - - -extern void (*D_80191B20[])(void); - -void func_801812FC(void *a0) { - D_80191B20[*(u16 *)((s32)a0 + 0x2)](); -} - - -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); - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181364); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801813A4); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181400); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181474); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801814C4); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181564); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801815DC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181648); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801816A8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018170C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181738); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018178C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801817B8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181804); - - -extern void (*D_80191BDC[])(void); - -void func_80181924(void *a0) { - D_80191BDC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181960); - -DEFINE_func_80181998() /* dedup: shared engine-core @0x80181998 (src/shared) */ - -DEFINE_func_801819B0() /* dedup: shared engine-core @0x801819B0 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801819C8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181A28); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181A68); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181AA8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181B34); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181B74); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181BEC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181C78); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181CB8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181DC4); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181E04); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181EFC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181F70); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80181FE4); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018203C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80182120); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801821A8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801821D4); - -DEFINE_func_8018233C() /* dedup: shared engine-core @0x8018233C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80182378); - - -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); - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801824BC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80182544); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801825BC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801826AC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018276C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80182800); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801828B0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80182920); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801829AC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80182A7C); - - -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); - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80182AF8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80182B58); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80182BCC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80182C24); - - -extern void (*D_80192014[])(void); - -void func_80182C98(void *a0) { - D_80192014[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80182CD4); - -extern s32 D_801D7E84; - extern s32 D_801D6C98; - void func_80182D0C(void) { - D_801D6C98 = D_801D7E84; - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80182D24); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80182D84); - - -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; - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80182E00); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80182E40); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80182ED8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80182F18); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80182F88); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183024); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801830F4); - -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); - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801831D8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183248); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801832A8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018330C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183338); - - -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); - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801834F8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183538); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183578); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183604); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183674); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801836C0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018370C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018375C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801837A8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801837EC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183838); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183890); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801838E0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183938); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801839A8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183A08); - - -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); - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183AD0); - - -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; - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183B4C); - -extern s32 func_80184FA4(void); - extern void func_801839A8(s32 arg0); - void func_80183B8C(s32 param_1) { - if (((s32 (*)(void))func_80184FA4)() != 0) { - ((void (*)(s32))func_801839A8)(param_1); - } - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183BC4); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183C28); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183C78); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183CBC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183D80); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183DF4); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183E20); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183E6C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183FA8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80183FF4); - - -extern void (*D_80192414[])(void); - -void func_80184130(void *a0) { - D_80192414[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018416C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801841AC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801841EC); - - -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; - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184268); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184298); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801842C8); - -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); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184328); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184374); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801843C4); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184410); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184460); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801844AC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184504); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184560); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801845B8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018465C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184738); - - -void func_8018479C(void *a0) { - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; - } - - - -void func_801847AC(void *a0) { - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 2; - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801847BC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184858); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184884); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801848B0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801848DC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184960); - -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); - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184AC4); - -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) */ - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184B70); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184BAC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184BD0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184C28); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184C90); - -DEFINE_func_80184CB0() /* dedup: shared engine-core @0x80184CB0 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184CB8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184D00); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184D5C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184DD0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184E44); - - -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); - } - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184ED4); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80184FA4); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018516C); - - -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) */ - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80185218); - -DEFINE_func_8018525C() /* dedup: shared engine-core @0x8018525C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80185264); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801852EC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801854C4); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80185664); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801856E0); - -extern void func_80185EEC(void); -void func_801857AC(void) { - func_80185EEC(); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801857CC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018589C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80185904); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80185978); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801859D8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80185A58); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80185AB0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80185B10); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80185B58); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80185BA8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80185BE0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80185C6C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80185D10); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80185D70); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80185EEC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80185F20); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80185F54); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80185FB8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018602C); - -DEFINE_func_80186084() /* dedup: shared engine-core @0x80186084 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801860C0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018613C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018625C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801862A8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801863B4); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80186410); - -s16 func_80186450(void) { - - extern s16 D_801E7030; - return D_801E7030; -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80186460); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801864AC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018651C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80186570); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80186E24); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801877B0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801878E8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801880EC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80188428); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80188778); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_801889B8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80188B84); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80188E1C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80189214); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80189540); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80189DDC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80189E14); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80189E54); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_80189EA0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018A0B4); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018A168); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018A1D0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018A224); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018A2E0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018A6C8); - -DEFINE_func_8018A740() /* dedup: shared engine-core @0x8018A740 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018A77C); - -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) */ - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018A990); - -DEFINE_func_8018AB3C() /* dedup: shared engine-core @0x8018AB3C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018AB78); - - -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); -} - - - -extern s32 D_801E0260; -extern s32 D_801E7980; -extern void func_8018A168(s32 arg0, s32 arg1); - -void func_8018AD3C(void) { - D_801E7980 = &D_801E0260; - func_8018A168(0x474, 0x4B0); -} - - - -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); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018ADD8); - - -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); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018AE80); - - -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); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018AF68); - - -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) */ - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018AFF0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018B0AC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018B158); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018B19C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018B2B8); - - -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)(); - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018B388); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018B400); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018B448); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018B4EC); - -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)](); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018B5AC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018B614); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018B660); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018B6A0); - -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)](); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018B730); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018B798); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018B7FC); - -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)](); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018B8B0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018B904); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018B948); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018B988); - -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)](); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018BA18); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018BA80); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018BAE4); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018BB50); - - -extern void (*D_801E05B4[])(void); - -void func_8018BC3C(void *a0) { - D_801E05B4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018BC78); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018BCDC); - - -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; - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018BDA4); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018BDE0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018BE0C); - - -extern void (*D_801E0690[])(void); - -void func_8018BE38(void *a0) { - D_801E0690[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018BE74); - -extern s32 func_8014CB1C(void); - s32 func_8018BEE8(void) { - return func_8014CB1C() != 0; - } - - -DEFINE_func_8018BF08() /* dedup: shared engine-core @0x8018BF08 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018BF34); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018BF64); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018BFCC); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018C038); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018C0B0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018C114); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018C1E0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018C24C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018C278); - - -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; -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018C3F0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018C494); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018C518); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018C5AC); - - -extern void (*D_801E3AF4[])(void); - -void func_8018C5FC(void *a0) { - D_801E3AF4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018C638); - -DEFINE_func_8018C69C() /* dedup: shared engine-core @0x8018C69C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018C6A4); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018C6F0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018C730); - - -extern void (*D_801E3BA4[])(void); - -void func_8018C78C(void *a0) { - D_801E3BA4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018C7C8); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018C7F0); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018C8A8); - -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); - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018C93C); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018C96C); - - -extern void (*D_801E3CEC[])(void); - -void func_8018CADC(void *a0) { - D_801E3CEC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018CB18); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018CB94); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018CC04); - -extern void func_8002D4C8(s32 arg0, s32 arg1); - void func_8018CC1C(void) { - func_8002D4C8(0x7E0, 0); - } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018CC40); - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018CD74); - -DEFINE_func_8018CDDC() /* dedup: shared engine-core @0x8018CDDC (src/shared) */ - -DEFINE_func_8018CDE4() /* dedup: shared engine-core @0x8018CDE4 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017A4AC", func_8018CDEC); - - - diff --git a/src/ov_SC04_019/ov_SC04_019_jr_8017AE2C.c b/src/ov_SC04_019/ov_SC04_019_jr_8017AE2C.c new file mode 100644 index 000000000..57524bd56 --- /dev/null +++ b/src/ov_SC04_019/ov_SC04_019_jr_8017AE2C.c @@ -0,0 +1,5166 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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(void); +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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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, s32, s32, s32); +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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 void 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(void *a0); +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 a0, s32 a1, s32 a2, s32 a3); +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 void 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(void); +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, s32 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(void *a0, void *a1); +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); +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(s32); +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 int func_801789AC(void); +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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 u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801E6CAC; +extern u16 D_801E6D2C; +extern u16 D_801E6D2E; +extern u16 D_801E6D30; +extern s16 D_801E7AB0; + +void func_8017B1D8(void) { + 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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; +} + + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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 s32 D_801151D4; +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) { + 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. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +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_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +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) +{ + 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: 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, 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" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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)](); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017BF50); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017C094); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017C100); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017C1AC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017C1EC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017C2B0); + + +extern void (*D_80190CC4[])(void); + +void func_8017C338(void *a0) { + D_80190CC4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017C374); + +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; + } +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017C710); + + +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) */ + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017D6EC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017D77C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017D9B8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017DA08); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017DAC4); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017DBDC); + + +// @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; +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017DD0C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017DD7C); + +extern void func_800D1EBC(void); + void func_8017DE2C(void) { + func_800D1EBC(); + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017DE4C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017DEA0); + + +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)](); +} + + +extern s32 D_80127050; + void func_8017E024(void) { + D_80127050 = 1; + } + + + +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) */ + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017E088); + + +extern void (*D_80191068[])(void); + +void func_8017E0C0(void *a0) { + D_80191068[*(u8 *)((s32)a0 + 0x214)](); +} + + +DEFINE_func_8017E0FC() /* dedup: shared engine-core @0x8017E0FC (src/shared) */ + +extern void func_8016F0E4(void); +void func_8017E110(void) { + func_8016F0E4(); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017E130); + + +extern void (*D_80191070[])(void); + +void func_8017E1F4(void *a0) { + D_80191070[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017E230); + +DEFINE_func_8017E264() /* dedup: shared engine-core @0x8017E264 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017E26C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017E3AC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017E5A0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017E5CC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017E628); + + +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); + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017E7CC); + + +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); + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017E8A4); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017E8FC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017E950); + +extern void func_8012C588(s32, s32); +void func_8017E99C(void) { + func_8012C588(0x22B, 0); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017E9C0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017EA0C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017EAAC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017EAFC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017EBA0); + +extern void func_8017E7CC(void); + void func_8017EBE0(u8 *a0) { + if (*(u16 *)((s32)a0 + 0x34) == 1) { + func_8017E7CC(); + } + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017EC10); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017ECF4); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017EDA4); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017EE6C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017F02C); + +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); + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017F0C0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017F0D8); + +extern void func_80029124(s32 arg0, s32 arg1); + void func_8017F108(void) { + func_80029124(0x10C, 0); + func_80029124(0x10D, 1); + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017F138); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017F174); + +extern void func_80029514(int); +void func_8017F1A8(void) { + func_80029514(0x280); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017F1C8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017F224); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017F28C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017F2DC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017F35C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017F418); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017F500); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017F564); + + +extern void (*D_801916E4[])(void); + +void func_8017F5BC(void *a0) { + D_801916E4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017F5F8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017F6D8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017F7B8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017F898); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017F978); + +extern void func_80029124(s32 a, s32 b); +void func_8017FA34(void) { + func_80029124(0x107, 0x1); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017FA58); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017FAAC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017FB0C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017FBB0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017FC58); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017FCD8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017FD28); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017FD88); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017FDE4); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017FE54); + + +extern void (*D_80191814[])(void); + +void func_8017FF34(void *a0) { + D_80191814[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8017FF70); + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018001C); + +DEFINE_func_801800E0() /* dedup: shared engine-core @0x801800E0 (src/shared) */ + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018011C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80180134); + +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_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80180190); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801801E0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80180284); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018034C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801803BC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018042C); + + +extern void (*D_801919C4[])(void); + +void func_8018048C(void *a0) { + D_801919C4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801804C8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80180504); + + +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; + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80180580); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801805C0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80180618); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018067C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801806CC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80180740); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80180814); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80180888); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801808FC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80180954); + +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); + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80180A08); + + +extern void (*D_80191A80[])(void); + +void func_80180B6C(void *a0) { + D_80191A80[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80180BA8); + + +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); + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80180C38); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80180CC0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80180D38); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80180E28); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80180EE8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80180F7C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181020); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181090); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181124); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801811F4); + +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); + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181270); + +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); + } + + + +extern void (*D_80191B20[])(void); + +void func_801812FC(void *a0) { + D_80191B20[*(u16 *)((s32)a0 + 0x2)](); +} + + +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); + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181364); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801813A4); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181400); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181474); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801814C4); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181564); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801815DC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181648); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801816A8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018170C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181738); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018178C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801817B8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181804); + + +extern void (*D_80191BDC[])(void); + +void func_80181924(void *a0) { + D_80191BDC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181960); + +DEFINE_func_80181998() /* dedup: shared engine-core @0x80181998 (src/shared) */ + +DEFINE_func_801819B0() /* dedup: shared engine-core @0x801819B0 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801819C8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181A28); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181A68); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181AA8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181B34); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181B74); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181BEC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181C78); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181CB8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181DC4); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181E04); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181EFC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181F70); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181FE4); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018203C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80182120); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801821A8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801821D4); + +DEFINE_func_8018233C() /* dedup: shared engine-core @0x8018233C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80182378); + + +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); + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801824BC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80182544); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801825BC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801826AC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018276C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80182800); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801828B0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80182920); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801829AC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80182A7C); + + +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); + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80182AF8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80182B58); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80182BCC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80182C24); + + +extern void (*D_80192014[])(void); + +void func_80182C98(void *a0) { + D_80192014[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80182CD4); + +extern s32 D_801D7E84; + extern s32 D_801D6C98; + void func_80182D0C(void) { + D_801D6C98 = D_801D7E84; + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80182D24); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80182D84); + + +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; + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80182E00); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80182E40); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80182ED8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80182F18); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80182F88); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183024); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801830F4); + +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); + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801831D8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183248); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801832A8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018330C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183338); + + +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); + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801834F8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183538); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183578); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183604); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183674); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801836C0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018370C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018375C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801837A8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801837EC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183838); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183890); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801838E0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183938); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801839A8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183A08); + + +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); + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183AD0); + + +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; + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183B4C); + +extern s32 func_80184FA4(void); + extern void func_801839A8(s32 arg0); + void func_80183B8C(s32 param_1) { + if (((s32 (*)(void))func_80184FA4)() != 0) { + ((void (*)(s32))func_801839A8)(param_1); + } + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183BC4); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183C28); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183C78); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183CBC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183D80); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183DF4); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183E20); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183E6C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183FA8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80183FF4); + + +extern void (*D_80192414[])(void); + +void func_80184130(void *a0) { + D_80192414[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018416C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801841AC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801841EC); + + +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; + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184268); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184298); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801842C8); + +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); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184328); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184374); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801843C4); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184410); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184460); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801844AC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184504); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184560); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801845B8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018465C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184738); + + +void func_8018479C(void *a0) { + *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; + } + + + +void func_801847AC(void *a0) { + *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 2; + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801847BC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184858); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184884); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801848B0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801848DC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184960); + +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); + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184AC4); + +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) */ + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184B70); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184BAC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184BD0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184C28); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184C90); + +DEFINE_func_80184CB0() /* dedup: shared engine-core @0x80184CB0 (src/shared) */ + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184CB8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184D00); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184D5C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184DD0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184E44); + + +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); + } + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184ED4); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80184FA4); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018516C); + + +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) */ + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80185218); + +DEFINE_func_8018525C() /* dedup: shared engine-core @0x8018525C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80185264); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801852EC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801854C4); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80185664); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801856E0); + +extern void func_80185EEC(void); +void func_801857AC(void) { + func_80185EEC(); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801857CC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018589C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80185904); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80185978); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801859D8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80185A58); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80185AB0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80185B10); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80185B58); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80185BA8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80185BE0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80185C6C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80185D10); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80185D70); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80185EEC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80185F20); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80185F54); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80185FB8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018602C); + +DEFINE_func_80186084() /* dedup: shared engine-core @0x80186084 (src/shared) */ + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801860C0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018613C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018625C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801862A8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801863B4); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80186410); + +s16 func_80186450(void) { + + extern s16 D_801E7030; + return D_801E7030; +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80186460); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801864AC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018651C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80186570); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80186E24); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801877B0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801878E8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801880EC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80188428); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80188778); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_801889B8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80188B84); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80188E1C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80189214); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80189540); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80189DDC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80189E14); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80189E54); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80189EA0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018A0B4); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018A168); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018A1D0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018A224); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018A2E0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018A6C8); + +DEFINE_func_8018A740() /* dedup: shared engine-core @0x8018A740 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018A77C); + +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) */ + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018A990); + +DEFINE_func_8018AB3C() /* dedup: shared engine-core @0x8018AB3C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018AB78); + + +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); +} + + + +extern s32 D_801E0260; +extern s32 D_801E7980; +extern void func_8018A168(s32 arg0, s32 arg1); + +void func_8018AD3C(void) { + D_801E7980 = &D_801E0260; + func_8018A168(0x474, 0x4B0); +} + + + +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); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018ADD8); + + +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); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018AE80); + + +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); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018AF68); + + +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) */ + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018AFF0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018B0AC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018B158); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018B19C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018B2B8); + + +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)(); + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018B388); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018B400); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018B448); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018B4EC); + +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)](); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018B5AC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018B614); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018B660); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018B6A0); + +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)](); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018B730); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018B798); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018B7FC); + +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)](); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018B8B0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018B904); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018B948); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018B988); + +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)](); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018BA18); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018BA80); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018BAE4); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018BB50); + + +extern void (*D_801E05B4[])(void); + +void func_8018BC3C(void *a0) { + D_801E05B4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018BC78); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018BCDC); + + +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; + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018BDA4); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018BDE0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018BE0C); + + +extern void (*D_801E0690[])(void); + +void func_8018BE38(void *a0) { + D_801E0690[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018BE74); + +extern s32 func_8014CB1C(void); + s32 func_8018BEE8(void) { + return func_8014CB1C() != 0; + } + + +DEFINE_func_8018BF08() /* dedup: shared engine-core @0x8018BF08 (src/shared) */ + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018BF34); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018BF64); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018BFCC); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018C038); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018C0B0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018C114); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018C1E0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018C24C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018C278); + + +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; +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018C3F0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018C494); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018C518); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018C5AC); + + +extern void (*D_801E3AF4[])(void); + +void func_8018C5FC(void *a0) { + D_801E3AF4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018C638); + +DEFINE_func_8018C69C() /* dedup: shared engine-core @0x8018C69C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018C6A4); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018C6F0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018C730); + + +extern void (*D_801E3BA4[])(void); + +void func_8018C78C(void *a0) { + D_801E3BA4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018C7C8); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018C7F0); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018C8A8); + +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); + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018C93C); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018C96C); + + +extern void (*D_801E3CEC[])(void); + +void func_8018CADC(void *a0) { + D_801E3CEC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018CB18); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018CB94); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018CC04); + +extern void func_8002D4C8(s32 arg0, s32 arg1); + void func_8018CC1C(void) { + func_8002D4C8(0x7E0, 0); + } + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018CC40); + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018CD74); + +DEFINE_func_8018CDDC() /* dedup: shared engine-core @0x8018CDDC (src/shared) */ + +DEFINE_func_8018CDE4() /* dedup: shared engine-core @0x8018CDE4 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018CDEC); + + + + diff --git a/src/ov_SC04_020/ov_SC04_020_jr_8017A4AC.c b/src/ov_SC04_020/ov_SC04_020_jr_8017A4AC.c index 930d2c169..ca3a4121a 100644 --- a/src/ov_SC04_020/ov_SC04_020_jr_8017A4AC.c +++ b/src/ov_SC04_020/ov_SC04_020_jr_8017A4AC.c @@ -2946,654 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801BC334; - extern s16 D_801BC336; - extern s16 D_801BC338; - extern s16 D_801BC32C; - extern s16 D_801BC32E; - extern s16 D_801BC330; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801BC334, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801BC336, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801BC338, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801BC32C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801BC32E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801BC330, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801BC2BC; -extern u16 D_801BC33C; -extern u16 D_801BC33E; -extern u16 D_801BC340; -extern s16 D_801BC738; - -void func_8017B1D8(void) { - func_8012A418(); - D_801BC738 = 0; - D_801BC2BC = 0; - D_801BC33C = D_80126B5E; - D_801BC33E = D_80126B62; - D_801BC340 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80186C8C[]; - extern s16 D_801BC334; - extern s16 D_801BC32C; - 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_80186C8C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80186C8C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801BC334; - s16 *p78C = &D_801BC32C; - *(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_801BC738 = 1; - D_801BC2BC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801BC2DC; - extern SV4_8017B368 D_801BC2E4; - extern s16 D_801BC334; - extern s16 D_801BC32C; - extern u16 D_80186C8C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801BC2DC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801BC2E4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80186C8C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80186C8C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801BC334) = loc0; - (*(SV4_8017B368 *)&D_801BC32C) = loc1; - D_801BC738 = 1; - D_801BC2BC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80186C8C[]; - extern s16 D_801BC334; - extern s16 D_801BC336; - extern s16 D_801BC338; - extern s16 D_801BC32C; - extern s16 D_801BC32E; - extern s16 D_801BC330; - 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_80186C8C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80186C8C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801BC334; - s16 *p78C = &D_801BC32C; - *(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_801BC336; - v798 = D_801BC338; - v78C = *p78C; - v78E = D_801BC32E; - v790 = D_801BC330; - __asm__ __volatile__(""); - D_801BC738 = 1; - D_801BC2BC = 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_801BC2BC; -extern s16 D_801BC334; -extern s16 D_801BC336; -extern s16 D_801BC338; -extern s16 D_801BC32C; -extern s16 D_801BC32E; -extern s16 D_801BC330; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801BC2BC = 0; - D_801BC334 = (s16) D_80114F30; - D_801BC336 = (s16) D_80114F34; - D_801BC338 = (s16) D_80114F38; - D_801BC32C = (s16) D_80114F24; - D_801BC32E = (s16) D_80114F28; - D_801BC330 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801BC34C; -extern s16 D_801BC34E; -extern s16 D_801BC350; -extern s16 D_801BC354; -extern s16 D_801BC356; -extern s16 D_801BC358; - -void func_8017B824(void) { - D_801BC34C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801BC34E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801BC350 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801BC354 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801BC356 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801BC358 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801BC34C; -extern s16 D_801BC34E; -extern s16 D_801BC350; -extern s16 D_801BC354; -extern s16 D_801BC356; -extern s16 D_801BC358; - -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_801BC34C; - D_80114F34 = D_801BC34E; - D_80114F38 = D_801BC350; - D_80114F24 = D_801BC354; - D_80114F28 = D_801BC356; - D_80114F2C = D_801BC358; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801BC334), src[8..15] -> (*(S8_8017B8E8 *)&D_801BC32C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801BC334) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801BC32C) = ((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_801BC33C; -extern u16 D_801BC33E; -extern u16 D_801BC340; - -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_801BC2BC; -extern short D_801BC344; -extern short D_801BC346; -extern short D_801BC348; -extern s16 D_801BC334; -extern s16 D_801BC336; -extern s16 D_801BC338; -extern s16 D_801BC32C; -extern s16 D_801BC32E; -extern s16 D_801BC330; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801BC33C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801BC33E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801BC340); - (*(s16 *)&D_801BC344) = buf[0]; - (*(s16 *)&D_801BC346) = buf[1]; - (*(s16 *)&D_801BC348) = buf[2]; - D_801BC334 = D_80114F30 + buf[0]; - D_801BC2BC = 0; - D_801BC336 = D_80114F34 + buf[1]; - D_801BC338 = D_80114F38 + buf[2]; - D_801BC32C = D_80114F24 + buf[0]; - D_801BC32E = D_80114F28 + buf[1]; - D_801BC330 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801BC2DC; -extern SV4 D_801BC2E4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801BC2E4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801BC2DC = 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_801BC2E4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801BC2E4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801BC2DC) = 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_801BC2E4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801BC304[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801BC304; - 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_801BC2BC; -extern s16 D_801BC738; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801BC2BC = D_801BC2BC + 1; - if (D_801BC2BC >= 0x1F) { - D_801BC738 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801BC2BC; -extern s16 D_801BC738; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801BC2BC = D_801BC2BC + 1; - if (0x18 < D_801BC2BC) { - func_8012A4BC(); - D_801BC738 = 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_801BC2BC; -extern void (*D_801BC300)(void); -extern short D_801BC344; -extern short D_801BC346; -extern short D_801BC348; -extern s16 D_801BC738; - -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_801BC2BC = D_801BC2BC + 1; - if (D_801BC2BC >= 0x19) { - if (D_801BC300 != 0) { - (*D_801BC300)(); - } else { - D_80114F30 = D_80114F30 + D_801BC344; - D_80114F34 = D_80114F34 + D_801BC346; - D_80114F38 = D_80114F38 + D_801BC348; - D_80114F24 = D_80114F24 + D_801BC344; - D_80114F28 = D_80114F28 + D_801BC346; - D_80114F2C = D_80114F2C + D_801BC348; - func_8012A4BC(); - } - D_801BC738 = 0; - } -} - - - -extern void (*D_80186D2C[])(void); - -void func_8017BE60(void *a0) { - D_80186D2C[*(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) */ - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017BF88); - - -extern void (*D_80186D44[])(void); - -void func_8017C0E4(void *a0) { - D_80186D44[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017C120); - - -extern void (*D_80186DE0[])(void); - -void func_8017C180(void *a0) { - D_80186DE0[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80186DE8[])(void); - -void func_8017C1BC(void *a0) { - D_80186DE8[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80186DF0[])(void); - -void func_8017C1F8(void *a0) { - D_80186DF0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017C234); - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017C378); - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017C3E4); - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017C490); - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017C4D0); - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017C594); - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017C61C); - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017C7B8); - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017C9BC); - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017CDB0); - - -extern void (*D_801870CC[])(void); - -void func_8017CF30(void *a0) { - D_801870CC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017CF6C); - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017CFE0); - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017D0BC); - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017D2D0); - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017D3A4); - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017D474); - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017D4CC); - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017A4AC", func_8017D5C4); diff --git a/src/ov_SC04_020/ov_SC04_020_jr_8017AE2C.c b/src/ov_SC04_020/ov_SC04_020_jr_8017AE2C.c new file mode 100644 index 000000000..598c10ac3 --- /dev/null +++ b/src/ov_SC04_020/ov_SC04_020_jr_8017AE2C.c @@ -0,0 +1,3531 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80185884; +extern u8 D_801857F4; +extern u8 D_801857D0; +extern u8 D_801857AC; +extern u8 D_80185860; +extern u8 D_8018583C; +extern u8 D_80185818; +extern u8 D_80185788; +extern void func_80145934(void); +extern u8 D_80185914; +extern u8 D_801858F0; +extern u8 D_801858CC; +extern u8 D_801858A8; +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_80184D0C[]; +extern unsigned char D_80184D3C[]; +extern unsigned char D_80184D8C[]; +extern unsigned char D_80184DBC[]; +extern unsigned char D_80184DEC[]; +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(void); +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_80184E3C[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80184F04[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80184F8C[]; +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_80184F94; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801BB1B8; +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_801BB1BC; +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_80184FC4; +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 void 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_8018506C[])(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_80185090[])(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_80185080; +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_801850A4[])(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_801850B0[]; +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_801850C0[])(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_801850D8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801850C8; +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_801850EC[])(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_80185108[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801850F8; +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_8018511C[])(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_80185130[])(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_80185144; +extern void (*D_8018516C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018514C; +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_801851B8[])(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_801851BC[])(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(void *a0); +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_80185620[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80185630[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801BB1F0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80185658[])(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_80185638; +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_80185648; +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_80185698[])(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_801856A0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018566C; +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_801856AC[])(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_8018567C; +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_801BB1F8; +extern s32 D_801BB204; +extern s32 D_801BB208; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801856E8[])(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_801856BC[]; +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_801BB200; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80185938[])(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_80185758[]; +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_801859DC[])(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_80185B30[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018594C; +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_80185B38[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018595C; +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_8018597C; +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_80185B40[])(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(void); +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_80185B68[])(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_80185B74[])(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_801859E8[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80185C18; +extern void func_8015D380(s32 a0); +extern unsigned char D_80184CFC[]; +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_80185C2C[]; +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_80185C68[]; +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_80185CB0; +extern u16 D_80185CB2; +extern u16 D_80185CB4; +extern s32 D_80185CB8; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80185CC0; +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_801859CC; +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_80185D44[]; +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_80185DF4[])(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_80185E24[]; +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_80185E88; +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_801BB210[]; +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_80185EAC[])(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_801BB268[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80185EF4[])(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_80185EE4; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801BAA7C[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_80185EFC[])(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_80185F50[])(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_80185F18; +extern s16 D_80185F4C; +extern s16 D_80185F4A; +extern s16 D_80185F48; +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_80185F5C[])(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_801BB2C8; +extern u8 D_801BB2C9; +extern u8 D_801BB2CA; +extern u8 D_801BB2CB; +extern u8 D_801BB2CC; +extern u8 D_801BB2CD; +extern u8 D_801BB2CE; +extern u8 D_801BB2CF; +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_80185F6C[])(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_801BB308; +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_80185FB0[])(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_8018602C[]; +extern s32 D_8018604C[]; +extern u8 D_801860C8[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801860E8[]; +extern u8 D_80186108[]; +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_801861A4[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80186220[])(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_801BAA8C; +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_8018622C[])(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_80186234[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801862FC[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018630C[])(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_8018631C[])(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_80186328[])(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_80186288[]; +extern u8 D_8018629C[]; +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_80186340[])(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_80186348[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80186350[])(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_80186358[])(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_80186360[])(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_80186368[])(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_80186370[])(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_80186424[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018642C[])(void); +extern void func_80169F00(void *a0); +extern char D_801863DC[]; +extern char D_8018639C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80186464[])(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_80186470[])(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_801864B8[])(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_80186534[])(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_801BB628; +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_80186528[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018656C[]; +extern unsigned short D_80186574[]; +extern unsigned short D_8018657C[]; +extern unsigned char D_801BB630[]; +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_801BB628; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80186584[])(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_801BB764; +extern M2C_UNK D_801BB768; +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_801BB6F0; +extern void (*D_801865B4[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801BB76C[]; +extern u8 D_801BB774[]; +extern u8 D_801BB724[]; +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_801865BC[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801865D8[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801865E0[])(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_80186648[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801865EC; +extern u8 D_801865F8; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018667C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80186684[])(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_801866D8[])(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_8018670C[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801866FC[]; +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_80186728; +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); +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_801867A0[])(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_801867A8[])(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_801867B0[])(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_801867B8[])(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_801867C0[])(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_801867C8[])(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_801867D4[])(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_801867E0[])(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_801867EC[])(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_801867FC[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018680C[])(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_80186814[])(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_8018681C[])(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_80186824[])(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_8018682C[])(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_80186834[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018683C[])(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_80186844[])(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_8018684C[])(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_80186854[])(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_8018685C[])(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_80186864[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018686C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80186874[])(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_8018687C[])(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_80186884[])(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_8018688C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80186894[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018689C[])(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_801868A4[])(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_801868AC[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801868B4[])(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_801868BC[])(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_80186900[])(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_801868C4; +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_80186930[])(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_8018696C[])(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(s32); +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_801869C4[])(); +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_801869D4[])(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_801869DC[])(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_80186B44[])(); +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_80186B50[])(); +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_801BACD4; +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 int func_801789AC(void); +extern s16 D_801BC738; +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_801BBEA8; +extern short D_801BC7AC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801BC2D4; +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_801BC2FC; +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_801BC2B8; +extern s32 func_8017A3B0(void); +extern short D_801BC2F4; +extern short D_801BC2F0; +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_801BC6F0; +extern s16 D_801BC6F2; +extern s16 D_801BC6FC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801BC6F0; + + 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_801BC6FC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801BC6F0+0xC == &D_801BC6FC; 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_801BC6F0 + 0xC)) < 0x101) { + D_801BC6F0 = 0; + D_801BC6F2 = 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_801BC6FC); + 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_801BC6F0 + 0xC)) < 0x101) { + D_801BC6F0 = 0; + D_801BC6F2 = 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_801BC334; + extern s16 D_801BC336; + extern s16 D_801BC338; + extern s16 D_801BC32C; + extern s16 D_801BC32E; + extern s16 D_801BC330; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801BC334, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801BC336, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801BC338, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801BC32C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801BC32E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801BC330, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801BC2BC; +extern u16 D_801BC33C; +extern u16 D_801BC33E; +extern u16 D_801BC340; +extern s16 D_801BC738; + +void func_8017B1D8(void) { + func_8012A418(); + D_801BC738 = 0; + D_801BC2BC = 0; + D_801BC33C = D_80126B5E; + D_801BC33E = D_80126B62; + D_801BC340 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80186C8C[]; + extern s16 D_801BC334; + extern s16 D_801BC32C; + 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_80186C8C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80186C8C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801BC334; + s16 *p78C = &D_801BC32C; + *(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_801BC738 = 1; + D_801BC2BC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801BC2DC; + extern SV4_8017B368 D_801BC2E4; + extern s16 D_801BC334; + extern s16 D_801BC32C; + extern u16 D_80186C8C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801BC2DC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801BC2E4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80186C8C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80186C8C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801BC334) = loc0; + (*(SV4_8017B368 *)&D_801BC32C) = loc1; + D_801BC738 = 1; + D_801BC2BC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80186C8C[]; + extern s16 D_801BC334; + extern s16 D_801BC336; + extern s16 D_801BC338; + extern s16 D_801BC32C; + extern s16 D_801BC32E; + extern s16 D_801BC330; + 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_80186C8C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80186C8C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801BC334; + s16 *p78C = &D_801BC32C; + *(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_801BC336; + v798 = D_801BC338; + v78C = *p78C; + v78E = D_801BC32E; + v790 = D_801BC330; + __asm__ __volatile__(""); + D_801BC738 = 1; + D_801BC2BC = 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_801BC2BC; +extern s16 D_801BC334; +extern s16 D_801BC336; +extern s16 D_801BC338; +extern s16 D_801BC32C; +extern s16 D_801BC32E; +extern s16 D_801BC330; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801BC2BC = 0; + D_801BC334 = (s16) D_80114F30; + D_801BC336 = (s16) D_80114F34; + D_801BC338 = (s16) D_80114F38; + D_801BC32C = (s16) D_80114F24; + D_801BC32E = (s16) D_80114F28; + D_801BC330 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801BC34C; +extern s16 D_801BC34E; +extern s16 D_801BC350; +extern s16 D_801BC354; +extern s16 D_801BC356; +extern s16 D_801BC358; + +void func_8017B824(void) { + D_801BC34C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801BC34E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801BC350 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801BC354 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801BC356 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801BC358 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801BC34C; +extern s16 D_801BC34E; +extern s16 D_801BC350; +extern s16 D_801BC354; +extern s16 D_801BC356; +extern s16 D_801BC358; + +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_801BC34C; + D_80114F34 = D_801BC34E; + D_80114F38 = D_801BC350; + D_80114F24 = D_801BC354; + D_80114F28 = D_801BC356; + D_80114F2C = D_801BC358; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801BC334), src[8..15] -> (*(S8_8017B8E8 *)&D_801BC32C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801BC334) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801BC32C) = ((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_801BC33C; +extern u16 D_801BC33E; +extern u16 D_801BC340; + +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_801BC2BC; +extern short D_801BC344; +extern short D_801BC346; +extern short D_801BC348; +extern s16 D_801BC334; +extern s16 D_801BC336; +extern s16 D_801BC338; +extern s16 D_801BC32C; +extern s16 D_801BC32E; +extern s16 D_801BC330; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801BC33C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801BC33E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801BC340); + (*(s16 *)&D_801BC344) = buf[0]; + (*(s16 *)&D_801BC346) = buf[1]; + (*(s16 *)&D_801BC348) = buf[2]; + D_801BC334 = D_80114F30 + buf[0]; + D_801BC2BC = 0; + D_801BC336 = D_80114F34 + buf[1]; + D_801BC338 = D_80114F38 + buf[2]; + D_801BC32C = D_80114F24 + buf[0]; + D_801BC32E = D_80114F28 + buf[1]; + D_801BC330 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801BC2DC; +extern SV4 D_801BC2E4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801BC2E4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801BC2DC = 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_801BC2E4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801BC2E4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801BC2DC) = 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_801BC2E4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801BC304[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801BC304; + 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_801BC2BC; +extern s16 D_801BC738; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801BC2BC = D_801BC2BC + 1; + if (D_801BC2BC >= 0x1F) { + D_801BC738 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801BC2BC; +extern s16 D_801BC738; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801BC2BC = D_801BC2BC + 1; + if (0x18 < D_801BC2BC) { + func_8012A4BC(); + D_801BC738 = 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_801BC2BC; +extern void (*D_801BC300)(void); +extern short D_801BC344; +extern short D_801BC346; +extern short D_801BC348; +extern s16 D_801BC738; + +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_801BC2BC = D_801BC2BC + 1; + if (D_801BC2BC >= 0x19) { + if (D_801BC300 != 0) { + (*D_801BC300)(); + } else { + D_80114F30 = D_80114F30 + D_801BC344; + D_80114F34 = D_80114F34 + D_801BC346; + D_80114F38 = D_80114F38 + D_801BC348; + D_80114F24 = D_80114F24 + D_801BC344; + D_80114F28 = D_80114F28 + D_801BC346; + D_80114F2C = D_80114F2C + D_801BC348; + func_8012A4BC(); + } + D_801BC738 = 0; + } +} + + + +extern void (*D_80186D2C[])(void); + +void func_8017BE60(void *a0) { + D_80186D2C[*(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) */ + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017BF88); + + +extern void (*D_80186D44[])(void); + +void func_8017C0E4(void *a0) { + D_80186D44[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017C120); + + +extern void (*D_80186DE0[])(void); + +void func_8017C180(void *a0) { + D_80186DE0[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80186DE8[])(void); + +void func_8017C1BC(void *a0) { + D_80186DE8[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80186DF0[])(void); + +void func_8017C1F8(void *a0) { + D_80186DF0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017C234); + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017C378); + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017C3E4); + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017C490); + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017C4D0); + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017C594); + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017C61C); + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017C7B8); + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017C9BC); + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017CDB0); + + +extern void (*D_801870CC[])(void); + +void func_8017CF30(void *a0) { + D_801870CC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017CF6C); + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017CFE0); + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017D0BC); + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017D2D0); + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017D3A4); + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017D474); + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017D4CC); + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017AE2C", func_8017D5C4); + diff --git a/src/ov_SC04_021/ov_SC04_021_jr_8017A4AC.c b/src/ov_SC04_021/ov_SC04_021_jr_8017A4AC.c index 4298f57a2..cf28c8b64 100644 --- a/src/ov_SC04_021/ov_SC04_021_jr_8017A4AC.c +++ b/src/ov_SC04_021/ov_SC04_021_jr_8017A4AC.c @@ -2946,654 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8018F98C; - extern s16 D_8018F98E; - extern s16 D_8018F990; - extern s16 D_8018F984; - extern s16 D_8018F986; - extern s16 D_8018F988; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8018F98C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8018F98E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8018F990, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8018F984, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8018F986, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8018F988, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8018F914; -extern u16 D_8018F994; -extern u16 D_8018F996; -extern u16 D_8018F998; -extern s16 D_8018FAB0; - -void func_8017B1D8(void) { - func_8012A418(); - D_8018FAB0 = 0; - D_8018F914 = 0; - D_8018F994 = D_80126B5E; - D_8018F996 = D_80126B62; - D_8018F998 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80182BB8[]; - extern s16 D_8018F98C; - extern s16 D_8018F984; - 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_80182BB8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182BB8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8018F98C; - s16 *p78C = &D_8018F984; - *(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_8018FAB0 = 1; - D_8018F914 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8018F934; - extern SV4_8017B368 D_8018F93C; - extern s16 D_8018F98C; - extern s16 D_8018F984; - extern u16 D_80182BB8; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8018F934; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8018F93C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80182BB8)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80182BB8)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8018F98C) = loc0; - (*(SV4_8017B368 *)&D_8018F984) = loc1; - D_8018FAB0 = 1; - D_8018F914 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80182BB8[]; - extern s16 D_8018F98C; - extern s16 D_8018F98E; - extern s16 D_8018F990; - extern s16 D_8018F984; - extern s16 D_8018F986; - extern s16 D_8018F988; - 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_80182BB8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182BB8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8018F98C; - s16 *p78C = &D_8018F984; - *(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_8018F98E; - v798 = D_8018F990; - v78C = *p78C; - v78E = D_8018F986; - v790 = D_8018F988; - __asm__ __volatile__(""); - D_8018FAB0 = 1; - D_8018F914 = 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_8018F914; -extern s16 D_8018F98C; -extern s16 D_8018F98E; -extern s16 D_8018F990; -extern s16 D_8018F984; -extern s16 D_8018F986; -extern s16 D_8018F988; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8018F914 = 0; - D_8018F98C = (s16) D_80114F30; - D_8018F98E = (s16) D_80114F34; - D_8018F990 = (s16) D_80114F38; - D_8018F984 = (s16) D_80114F24; - D_8018F986 = (s16) D_80114F28; - D_8018F988 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8018F9A4; -extern s16 D_8018F9A6; -extern s16 D_8018F9A8; -extern s16 D_8018F9AC; -extern s16 D_8018F9AE; -extern s16 D_8018F9B0; - -void func_8017B824(void) { - D_8018F9A4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8018F9A6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8018F9A8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8018F9AC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8018F9AE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8018F9B0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8018F9A4; -extern s16 D_8018F9A6; -extern s16 D_8018F9A8; -extern s16 D_8018F9AC; -extern s16 D_8018F9AE; -extern s16 D_8018F9B0; - -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_8018F9A4; - D_80114F34 = D_8018F9A6; - D_80114F38 = D_8018F9A8; - D_80114F24 = D_8018F9AC; - D_80114F28 = D_8018F9AE; - D_80114F2C = D_8018F9B0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8018F98C), src[8..15] -> (*(S8_8017B8E8 *)&D_8018F984) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8018F98C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8018F984) = ((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_8018F994; -extern u16 D_8018F996; -extern u16 D_8018F998; - -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_8018F914; -extern short D_8018F99C; -extern short D_8018F99E; -extern short D_8018F9A0; -extern s16 D_8018F98C; -extern s16 D_8018F98E; -extern s16 D_8018F990; -extern s16 D_8018F984; -extern s16 D_8018F986; -extern s16 D_8018F988; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8018F994); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8018F996); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8018F998); - (*(s16 *)&D_8018F99C) = buf[0]; - (*(s16 *)&D_8018F99E) = buf[1]; - (*(s16 *)&D_8018F9A0) = buf[2]; - D_8018F98C = D_80114F30 + buf[0]; - D_8018F914 = 0; - D_8018F98E = D_80114F34 + buf[1]; - D_8018F990 = D_80114F38 + buf[2]; - D_8018F984 = D_80114F24 + buf[0]; - D_8018F986 = D_80114F28 + buf[1]; - D_8018F988 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8018F934; -extern SV4 D_8018F93C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8018F93C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8018F934 = 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_8018F93C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8018F93C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8018F934) = 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_8018F93C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8018F95C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8018F95C; - 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_8018F914; -extern s16 D_8018FAB0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8018F914 = D_8018F914 + 1; - if (D_8018F914 >= 0x1F) { - D_8018FAB0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8018F914; -extern s16 D_8018FAB0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8018F914 = D_8018F914 + 1; - if (0x18 < D_8018F914) { - func_8012A4BC(); - D_8018FAB0 = 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_8018F914; -extern void (*D_8018F958)(void); -extern short D_8018F99C; -extern short D_8018F99E; -extern short D_8018F9A0; -extern s16 D_8018FAB0; - -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_8018F914 = D_8018F914 + 1; - if (D_8018F914 >= 0x19) { - if (D_8018F958 != 0) { - (*D_8018F958)(); - } else { - D_80114F30 = D_80114F30 + D_8018F99C; - D_80114F34 = D_80114F34 + D_8018F99E; - D_80114F38 = D_80114F38 + D_8018F9A0; - D_80114F24 = D_80114F24 + D_8018F99C; - D_80114F28 = D_80114F28 + D_8018F99E; - D_80114F2C = D_80114F2C + D_8018F9A0; - func_8012A4BC(); - } - D_8018FAB0 = 0; - } -} - - - -extern void (*D_80182C58[])(void); - -void func_8017BE60(void *a0) { - D_80182C58[*(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 (*D_80182C70[])(void); - -void func_8017BEBC(void *a0) { - D_80182C70[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_8017A4AC", func_8017BEF8); - -INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_8017A4AC", func_8017BFA4); - -INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_8017A4AC", func_8017C014); - -extern void ReadRotMatrix(void *a0); -extern void PushMatrix(void); -extern void func_8004974C(void *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void PopMatrix(void); -void func_8017C3EC(u16 *a0, void *a1) { - s32 mat[8]; - s32 buf[8]; - s16 sv[4]; - ReadRotMatrix((void *)mat); - PushMatrix(); - sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); - sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); - sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); - func_8004974C((void *)mat, (void *)buf); - ApplyMatrixSV((void *)buf, (void *)sv, a1); - PopMatrix(); -} - - -int func_8017C490(short *param_1, short *param_2, short *param_3, int param_4) { - register int i2o __asm__("$5"); - register int i4o __asm__("$9"); - short sVar1; int rx, rz, uVar5; - i4o = param_2[1]; - __asm__ __volatile__("" : : "r"(i4o)); - i2o = param_1[1]; uVar5 = 0; - if (i2o >= i4o) { - rx = param_1[0] - i2o * (param_2[0] - param_1[0]); - rz = param_1[2] - i2o * (param_2[2] - param_1[2]); - } else { - register int den __asm__("$3"); - int p2x = param_2[0], p2z = param_2[2]; - den = i2o - i4o; - rx = p2x + i4o * (p2x - param_1[0]) / den; - rz = p2z + i4o * (p2z - param_1[2]) / den; - } - if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } - else i2o = -0x7fff; - *param_3 = (short)i2o; - if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } - else i2o = -0x7fff; - param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; - if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } - if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } - if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } - if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } - return uVar5; -} - - -extern void ReadGeomOffset(s32 *a0, s32 *a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8004921C(s32 a0, s32 a1); -void func_8017C688(s32 a0, s32 a1) { - s32 ofx; - s32 ofy; - s32 sxy; - s32 p; - ReadGeomOffset(&ofx, &ofy); - func_8004921C(0, 0); - RotTransPers(a0, a1, &sxy, &p); - func_8004921C(ofx, ofy); -} - - -INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_8017A4AC", func_8017C6F4); diff --git a/src/ov_SC04_021/ov_SC04_021_jr_8017AE2C.c b/src/ov_SC04_021/ov_SC04_021_jr_8017AE2C.c new file mode 100644 index 000000000..0b0d9a3d3 --- /dev/null +++ b/src/ov_SC04_021/ov_SC04_021_jr_8017AE2C.c @@ -0,0 +1,3531 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801817B0; +extern u8 D_80181720; +extern u8 D_801816FC; +extern u8 D_801816D8; +extern u8 D_8018178C; +extern u8 D_80181768; +extern u8 D_80181744; +extern u8 D_801816B4; +extern void func_80145934(void); +extern u8 D_80181840; +extern u8 D_8018181C; +extern u8 D_801817F8; +extern u8 D_801817D4; +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_80180C38[]; +extern unsigned char D_80180C68[]; +extern unsigned char D_80180CB8[]; +extern unsigned char D_80180CE8[]; +extern unsigned char D_80180D18[]; +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(void); +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_80180D68[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80180E30[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80180EB8[]; +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_80180EC0; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8018E810; +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_8018E814; +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_80180EF0; +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 void 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_80180F98[])(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_80180FBC[])(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_80180FAC; +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_80180FD0[])(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_80180FDC[]; +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_80180FEC[])(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_80181004[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180FF4; +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_80181018[])(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_80181034[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181024; +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_80181048[])(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_8018105C[])(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_80181070; +extern void (*D_80181098[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80181078; +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_801810E4[])(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_801810E8[])(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(void *a0); +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_8018154C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018155C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8018E848; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80181584[])(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_80181564; +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_80181574; +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_801815C4[])(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_801815CC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80181598; +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_801815D8[])(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_801815A8; +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_8018E850; +extern s32 D_8018E85C; +extern s32 D_8018E860; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80181614[])(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_801815E8[]; +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_8018E858; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80181864[])(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_80181684[]; +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_80181908[])(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_80181A5C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80181878; +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_80181A64[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80181888; +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_801818A8; +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_80181A6C[])(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(void); +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_80181A94[])(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_80181AA0[])(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_80181914[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80181B44; +extern void func_8015D380(s32 a0); +extern unsigned char D_80180C28[]; +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_80181B58[]; +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_80181B94[]; +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_80181BDC; +extern u16 D_80181BDE; +extern u16 D_80181BE0; +extern s32 D_80181BE4; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80181BEC; +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_801818F8; +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_80181C70[]; +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_80181D20[])(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_80181D50[]; +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_80181DB4; +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_8018E868[]; +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_80181DD8[])(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_8018E8C0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80181E20[])(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_80181E10; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8018E118[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_80181E28[])(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_80181E7C[])(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_80181E44; +extern s16 D_80181E78; +extern s16 D_80181E76; +extern s16 D_80181E74; +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_80181E88[])(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_8018E920; +extern u8 D_8018E921; +extern u8 D_8018E922; +extern u8 D_8018E923; +extern u8 D_8018E924; +extern u8 D_8018E925; +extern u8 D_8018E926; +extern u8 D_8018E927; +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_80181E98[])(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_8018E960; +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_80181EDC[])(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_80181F58[]; +extern s32 D_80181F78[]; +extern u8 D_80181FF4[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80182014[]; +extern u8 D_80182034[]; +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_801820D0[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018214C[])(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_8018E128; +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_80182158[])(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_80182160[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80182228[])(void); +extern void func_80166618(void *a0); +extern void (*D_80182238[])(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_80182248[])(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_80182254[])(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_801821B4[]; +extern u8 D_801821C8[]; +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_8018226C[])(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_80182274[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018227C[])(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_80182284[])(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_8018228C[])(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_80182294[])(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_8018229C[])(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_80182350[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80182358[])(void); +extern void func_80169F00(void *a0); +extern char D_80182308[]; +extern char D_801822C8[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80182390[])(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_8018239C[])(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_801823E4[])(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_80182460[])(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_8018EC80; +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_80182454[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80182498[]; +extern unsigned short D_801824A0[]; +extern unsigned short D_801824A8[]; +extern unsigned char D_8018EC88[]; +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_8018EC80; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801824B0[])(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_8018EDBC; +extern M2C_UNK D_8018EDC0; +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_8018ED48; +extern void (*D_801824E0[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018EDC4[]; +extern u8 D_8018EDCC[]; +extern u8 D_8018ED7C[]; +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_801824E8[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80182504[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018250C[])(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_80182574[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80182518; +extern u8 D_80182524; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801825A8[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801825B0[])(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_80182604[])(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_80182638[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80182628[]; +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_80182654; +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); +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_801826CC[])(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_801826D4[])(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_801826DC[])(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_801826E4[])(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_801826EC[])(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_801826F4[])(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_80182700[])(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_8018270C[])(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_80182718[])(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_80182728[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80182738[])(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_80182740[])(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_80182748[])(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_80182750[])(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_80182758[])(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_80182760[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80182768[])(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_80182770[])(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_80182778[])(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_80182780[])(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_80182788[])(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_80182790[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80182798[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801827A0[])(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_801827A8[])(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_801827B0[])(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_801827B8[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801827C0[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801827C8[])(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_801827D0[])(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_801827D8[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801827E0[])(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_801827E8[])(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_8018282C[])(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_801827F0; +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_8018285C[])(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_80182898[])(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(s32); +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_801828F0[])(); +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_80182900[])(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_80182908[])(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_80182A70[])(); +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_80182A7C[])(); +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_8018E370; +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 int func_801789AC(void); +extern s16 D_8018FAB0; +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_8018F500; +extern short D_8018FB24; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8018F92C; +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_8018F954; +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_8018F910; +extern s32 func_8017A3B0(void); +extern short D_8018F94C; +extern short D_8018F948; +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_8018FA80; +extern s16 D_8018FA82; +extern s16 D_8018FA8C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_8018FA80; + + 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_8018FA8C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_8018FA80+0xC == &D_8018FA8C; 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_8018FA80 + 0xC)) < 0x101) { + D_8018FA80 = 0; + D_8018FA82 = 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_8018FA8C); + 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_8018FA80 + 0xC)) < 0x101) { + D_8018FA80 = 0; + D_8018FA82 = 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_8018F98C; + extern s16 D_8018F98E; + extern s16 D_8018F990; + extern s16 D_8018F984; + extern s16 D_8018F986; + extern s16 D_8018F988; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8018F98C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8018F98E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8018F990, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8018F984, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8018F986, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8018F988, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8018F914; +extern u16 D_8018F994; +extern u16 D_8018F996; +extern u16 D_8018F998; +extern s16 D_8018FAB0; + +void func_8017B1D8(void) { + func_8012A418(); + D_8018FAB0 = 0; + D_8018F914 = 0; + D_8018F994 = D_80126B5E; + D_8018F996 = D_80126B62; + D_8018F998 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80182BB8[]; + extern s16 D_8018F98C; + extern s16 D_8018F984; + 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_80182BB8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182BB8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8018F98C; + s16 *p78C = &D_8018F984; + *(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_8018FAB0 = 1; + D_8018F914 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8018F934; + extern SV4_8017B368 D_8018F93C; + extern s16 D_8018F98C; + extern s16 D_8018F984; + extern u16 D_80182BB8; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8018F934; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8018F93C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80182BB8)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80182BB8)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8018F98C) = loc0; + (*(SV4_8017B368 *)&D_8018F984) = loc1; + D_8018FAB0 = 1; + D_8018F914 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80182BB8[]; + extern s16 D_8018F98C; + extern s16 D_8018F98E; + extern s16 D_8018F990; + extern s16 D_8018F984; + extern s16 D_8018F986; + extern s16 D_8018F988; + 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_80182BB8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182BB8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8018F98C; + s16 *p78C = &D_8018F984; + *(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_8018F98E; + v798 = D_8018F990; + v78C = *p78C; + v78E = D_8018F986; + v790 = D_8018F988; + __asm__ __volatile__(""); + D_8018FAB0 = 1; + D_8018F914 = 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_8018F914; +extern s16 D_8018F98C; +extern s16 D_8018F98E; +extern s16 D_8018F990; +extern s16 D_8018F984; +extern s16 D_8018F986; +extern s16 D_8018F988; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8018F914 = 0; + D_8018F98C = (s16) D_80114F30; + D_8018F98E = (s16) D_80114F34; + D_8018F990 = (s16) D_80114F38; + D_8018F984 = (s16) D_80114F24; + D_8018F986 = (s16) D_80114F28; + D_8018F988 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8018F9A4; +extern s16 D_8018F9A6; +extern s16 D_8018F9A8; +extern s16 D_8018F9AC; +extern s16 D_8018F9AE; +extern s16 D_8018F9B0; + +void func_8017B824(void) { + D_8018F9A4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8018F9A6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8018F9A8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8018F9AC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8018F9AE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8018F9B0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8018F9A4; +extern s16 D_8018F9A6; +extern s16 D_8018F9A8; +extern s16 D_8018F9AC; +extern s16 D_8018F9AE; +extern s16 D_8018F9B0; + +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_8018F9A4; + D_80114F34 = D_8018F9A6; + D_80114F38 = D_8018F9A8; + D_80114F24 = D_8018F9AC; + D_80114F28 = D_8018F9AE; + D_80114F2C = D_8018F9B0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8018F98C), src[8..15] -> (*(S8_8017B8E8 *)&D_8018F984) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8018F98C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8018F984) = ((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_8018F994; +extern u16 D_8018F996; +extern u16 D_8018F998; + +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_8018F914; +extern short D_8018F99C; +extern short D_8018F99E; +extern short D_8018F9A0; +extern s16 D_8018F98C; +extern s16 D_8018F98E; +extern s16 D_8018F990; +extern s16 D_8018F984; +extern s16 D_8018F986; +extern s16 D_8018F988; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8018F994); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8018F996); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8018F998); + (*(s16 *)&D_8018F99C) = buf[0]; + (*(s16 *)&D_8018F99E) = buf[1]; + (*(s16 *)&D_8018F9A0) = buf[2]; + D_8018F98C = D_80114F30 + buf[0]; + D_8018F914 = 0; + D_8018F98E = D_80114F34 + buf[1]; + D_8018F990 = D_80114F38 + buf[2]; + D_8018F984 = D_80114F24 + buf[0]; + D_8018F986 = D_80114F28 + buf[1]; + D_8018F988 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8018F934; +extern SV4 D_8018F93C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8018F93C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8018F934 = 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_8018F93C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8018F93C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8018F934) = 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_8018F93C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8018F95C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8018F95C; + 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_8018F914; +extern s16 D_8018FAB0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8018F914 = D_8018F914 + 1; + if (D_8018F914 >= 0x1F) { + D_8018FAB0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8018F914; +extern s16 D_8018FAB0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8018F914 = D_8018F914 + 1; + if (0x18 < D_8018F914) { + func_8012A4BC(); + D_8018FAB0 = 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_8018F914; +extern void (*D_8018F958)(void); +extern short D_8018F99C; +extern short D_8018F99E; +extern short D_8018F9A0; +extern s16 D_8018FAB0; + +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_8018F914 = D_8018F914 + 1; + if (D_8018F914 >= 0x19) { + if (D_8018F958 != 0) { + (*D_8018F958)(); + } else { + D_80114F30 = D_80114F30 + D_8018F99C; + D_80114F34 = D_80114F34 + D_8018F99E; + D_80114F38 = D_80114F38 + D_8018F9A0; + D_80114F24 = D_80114F24 + D_8018F99C; + D_80114F28 = D_80114F28 + D_8018F99E; + D_80114F2C = D_80114F2C + D_8018F9A0; + func_8012A4BC(); + } + D_8018FAB0 = 0; + } +} + + + +extern void (*D_80182C58[])(void); + +void func_8017BE60(void *a0) { + D_80182C58[*(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 (*D_80182C70[])(void); + +void func_8017BEBC(void *a0) { + D_80182C70[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_8017AE2C", func_8017BEF8); + +INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_8017AE2C", func_8017BFA4); + +INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_8017AE2C", func_8017C014); + +extern void ReadRotMatrix(void *a0); +extern void PushMatrix(void); +extern void func_8004974C(void *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern void PopMatrix(void); +void func_8017C3EC(u16 *a0, void *a1) { + s32 mat[8]; + s32 buf[8]; + s16 sv[4]; + ReadRotMatrix((void *)mat); + PushMatrix(); + sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); + sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); + sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); + func_8004974C((void *)mat, (void *)buf); + ApplyMatrixSV((void *)buf, (void *)sv, a1); + PopMatrix(); +} + + +int func_8017C490(short *param_1, short *param_2, short *param_3, int param_4) { + register int i2o __asm__("$5"); + register int i4o __asm__("$9"); + short sVar1; int rx, rz, uVar5; + i4o = param_2[1]; + __asm__ __volatile__("" : : "r"(i4o)); + i2o = param_1[1]; uVar5 = 0; + if (i2o >= i4o) { + rx = param_1[0] - i2o * (param_2[0] - param_1[0]); + rz = param_1[2] - i2o * (param_2[2] - param_1[2]); + } else { + register int den __asm__("$3"); + int p2x = param_2[0], p2z = param_2[2]; + den = i2o - i4o; + rx = p2x + i4o * (p2x - param_1[0]) / den; + rz = p2z + i4o * (p2z - param_1[2]) / den; + } + if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } + else i2o = -0x7fff; + *param_3 = (short)i2o; + if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } + else i2o = -0x7fff; + param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; + if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } + if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } + if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } + if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } + return uVar5; +} + + +extern void ReadGeomOffset(s32 *a0, s32 *a1); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +extern void func_8004921C(s32 a0, s32 a1); +void func_8017C688(s32 a0, s32 a1) { + s32 ofx; + s32 ofy; + s32 sxy; + s32 p; + ReadGeomOffset(&ofx, &ofy); + func_8004921C(0, 0); + RotTransPers(a0, a1, &sxy, &p); + func_8004921C(ofx, ofy); +} + + +INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_8017AE2C", func_8017C6F4); + diff --git a/src/ov_SC05_000/ov_SC05_000_jr_8017A4AC.c b/src/ov_SC05_000/ov_SC05_000_jr_8017A4AC.c index 70a4acd58..4e53d1213 100644 --- a/src/ov_SC05_000/ov_SC05_000_jr_8017A4AC.c +++ b/src/ov_SC05_000/ov_SC05_000_jr_8017A4AC.c @@ -2944,572 +2944,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC05_000/nonmatchings/ov_SC05_000_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8019AABC; - extern s16 D_8019AABE; - extern s16 D_8019AAC0; - extern s16 D_8019AAB4; - extern s16 D_8019AAB6; - extern s16 D_8019AAB8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019AABC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019AABE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019AAC0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019AAB4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019AAB6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019AAB8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8019AA44; -extern u16 D_8019AAC4; -extern u16 D_8019AAC6; -extern u16 D_8019AAC8; -extern s16 D_8019ABE0; - -void func_8017B1D8(void) { - func_8012A418(); - D_8019ABE0 = 0; - D_8019AA44 = 0; - D_8019AAC4 = D_80126B5E; - D_8019AAC6 = D_80126B62; - D_8019AAC8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80181BCC[]; - extern s16 D_8019AABC; - extern s16 D_8019AAB4; - 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_80181BCC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80181BCC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019AABC; - s16 *p78C = &D_8019AAB4; - *(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_8019ABE0 = 1; - D_8019AA44 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019AA64; - extern SV4_8017B368 D_8019AA6C; - extern s16 D_8019AABC; - extern s16 D_8019AAB4; - extern u16 D_80181BCC; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8019AA64; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8019AA6C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80181BCC)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80181BCC)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8019AABC) = loc0; - (*(SV4_8017B368 *)&D_8019AAB4) = loc1; - D_8019ABE0 = 1; - D_8019AA44 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC05_000/nonmatchings/ov_SC05_000_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80181BCC[]; - extern s16 D_8019AABC; - extern s16 D_8019AABE; - extern s16 D_8019AAC0; - extern s16 D_8019AAB4; - extern s16 D_8019AAB6; - extern s16 D_8019AAB8; - 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_80181BCC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80181BCC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019AABC; - s16 *p78C = &D_8019AAB4; - *(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_8019AABE; - v798 = D_8019AAC0; - v78C = *p78C; - v78E = D_8019AAB6; - v790 = D_8019AAB8; - __asm__ __volatile__(""); - D_8019ABE0 = 1; - D_8019AA44 = 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_8019AA44; -extern s16 D_8019AABC; -extern s16 D_8019AABE; -extern s16 D_8019AAC0; -extern s16 D_8019AAB4; -extern s16 D_8019AAB6; -extern s16 D_8019AAB8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8019AA44 = 0; - D_8019AABC = (s16) D_80114F30; - D_8019AABE = (s16) D_80114F34; - D_8019AAC0 = (s16) D_80114F38; - D_8019AAB4 = (s16) D_80114F24; - D_8019AAB6 = (s16) D_80114F28; - D_8019AAB8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8019AAD4; -extern s16 D_8019AAD6; -extern s16 D_8019AAD8; -extern s16 D_8019AADC; -extern s16 D_8019AADE; -extern s16 D_8019AAE0; - -void func_8017B824(void) { - D_8019AAD4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8019AAD6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8019AAD8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8019AADC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8019AADE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8019AAE0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8019AAD4; -extern s16 D_8019AAD6; -extern s16 D_8019AAD8; -extern s16 D_8019AADC; -extern s16 D_8019AADE; -extern s16 D_8019AAE0; - -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_8019AAD4; - D_80114F34 = D_8019AAD6; - D_80114F38 = D_8019AAD8; - D_80114F24 = D_8019AADC; - D_80114F28 = D_8019AADE; - D_80114F2C = D_8019AAE0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8019AABC), src[8..15] -> (*(S8_8017B8E8 *)&D_8019AAB4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8019AABC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8019AAB4) = ((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_8019AAC4; -extern u16 D_8019AAC6; -extern u16 D_8019AAC8; - -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_8019AA44; -extern short D_8019AACC; -extern short D_8019AACE; -extern short D_8019AAD0; -extern s16 D_8019AABC; -extern s16 D_8019AABE; -extern s16 D_8019AAC0; -extern s16 D_8019AAB4; -extern s16 D_8019AAB6; -extern s16 D_8019AAB8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019AAC4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019AAC6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019AAC8); - (*(s16 *)&D_8019AACC) = buf[0]; - (*(s16 *)&D_8019AACE) = buf[1]; - (*(s16 *)&D_8019AAD0) = buf[2]; - D_8019AABC = D_80114F30 + buf[0]; - D_8019AA44 = 0; - D_8019AABE = D_80114F34 + buf[1]; - D_8019AAC0 = D_80114F38 + buf[2]; - D_8019AAB4 = D_80114F24 + buf[0]; - D_8019AAB6 = D_80114F28 + buf[1]; - D_8019AAB8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8019AA64; -extern SV4 D_8019AA6C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019AA6C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8019AA64 = 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_8019AA6C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019AA6C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8019AA64) = 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_8019AA6C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8019AA8C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8019AA8C; - 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_8019AA44; -extern s16 D_8019ABE0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8019AA44 = D_8019AA44 + 1; - if (D_8019AA44 >= 0x1F) { - D_8019ABE0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8019AA44; -extern s16 D_8019ABE0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8019AA44 = D_8019AA44 + 1; - if (0x18 < D_8019AA44) { - func_8012A4BC(); - D_8019ABE0 = 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_8019AA44; -extern void (*D_8019AA88)(void); -extern short D_8019AACC; -extern short D_8019AACE; -extern short D_8019AAD0; -extern s16 D_8019ABE0; - -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_8019AA44 = D_8019AA44 + 1; - if (D_8019AA44 >= 0x19) { - if (D_8019AA88 != 0) { - (*D_8019AA88)(); - } else { - D_80114F30 = D_80114F30 + D_8019AACC; - D_80114F34 = D_80114F34 + D_8019AACE; - D_80114F38 = D_80114F38 + D_8019AAD0; - D_80114F24 = D_80114F24 + D_8019AACC; - D_80114F28 = D_80114F28 + D_8019AACE; - D_80114F2C = D_80114F2C + D_8019AAD0; - func_8012A4BC(); - } - D_8019ABE0 = 0; - } -} - - - -extern void (*D_80181C6C[])(void); - -void func_8017BE60(void *a0) { - D_80181C6C[*(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) */ diff --git a/src/ov_SC05_000/ov_SC05_000_jr_8017AE2C.c b/src/ov_SC05_000/ov_SC05_000_jr_8017AE2C.c new file mode 100644 index 000000000..90ac274f9 --- /dev/null +++ b/src/ov_SC05_000/ov_SC05_000_jr_8017AE2C.c @@ -0,0 +1,3447 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801807C4; +extern u8 D_80180734; +extern u8 D_80180710; +extern u8 D_801806EC; +extern u8 D_801807A0; +extern u8 D_8018077C; +extern u8 D_80180758; +extern u8 D_801806C8; +extern void func_80145934(void); +extern u8 D_80180854; +extern u8 D_80180830; +extern u8 D_8018080C; +extern u8 D_801807E8; +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_8017FC4C[]; +extern unsigned char D_8017FC7C[]; +extern unsigned char D_8017FCCC[]; +extern unsigned char D_8017FCFC[]; +extern unsigned char D_8017FD2C[]; +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(void); +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_8017FD7C[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8017FE44[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8017FECC[]; +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_8017FED4; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_80199940; +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_80199944; +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_8017FF04; +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 void 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_8017FFAC[])(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_8017FFD0[])(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_8017FFC0; +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_8017FFE4[])(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_8017FFF0[]; +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 func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80180018[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180008; +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_8018002C[])(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_80180048[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80180038; +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_8018005C[])(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_80180070[])(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_80180084; +extern void (*D_801800AC[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018008C; +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_801800F8[])(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_801800FC[])(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(void *a0); +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_80180560[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80180570[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_80199978; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180598[])(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_80180578; +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_80180588; +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_801805D8[])(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_801805E0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801805AC; +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_801805EC[])(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_801805BC; +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_80199980; +extern s32 D_8019998C; +extern s32 D_80199990; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180628[])(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_801805FC[]; +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_80199988; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80180878[])(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_80180698[]; +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_8018091C[])(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_80180A70[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018088C; +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_80180A78[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018089C; +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_801808BC; +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_80180A80[])(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(void); +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_80180AA8[])(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_80180AB4[])(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_80180928[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80180B58; +extern void func_8015D380(s32 a0); +extern unsigned char D_8017FC3C[]; +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_80180B6C[]; +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_80180BA8[]; +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_80180BF0; +extern u16 D_80180BF2; +extern u16 D_80180BF4; +extern s32 D_80180BF8; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80180C00; +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_8018090C; +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_80180C84[]; +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_80180D34[])(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_80180D64[]; +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_80180DC8; +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_80199998[]; +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_80180DEC[])(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_801999F0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80180E34[])(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_80180E24; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_80199268[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_80180E3C[])(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_80180E90[])(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_80180E58; +extern s16 D_80180E8C; +extern s16 D_80180E8A; +extern s16 D_80180E88; +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_80180E9C[])(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_80199A50; +extern u8 D_80199A51; +extern u8 D_80199A52; +extern u8 D_80199A53; +extern u8 D_80199A54; +extern u8 D_80199A55; +extern u8 D_80199A56; +extern u8 D_80199A57; +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_80180EAC[])(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_80199A90; +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_80180EF0[])(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_80180F6C[]; +extern s32 D_80180F8C[]; +extern u8 D_80181008[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80181028[]; +extern u8 D_80181048[]; +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_801810E4[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80181160[])(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_80199278; +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_8018116C[])(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_80181174[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018123C[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018124C[])(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_8018125C[])(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_80181268[])(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_801811C8[]; +extern u8 D_801811DC[]; +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_80181280[])(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_80181288[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80181290[])(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_80181298[])(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_801812A0[])(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_801812A8[])(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_801812B0[])(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_80181364[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018136C[])(void); +extern void func_80169F00(void *a0); +extern char D_8018131C[]; +extern char D_801812DC[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_801813A4[])(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_801813B0[])(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_801813F8[])(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_80181474[])(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_80199DB0; +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_80181468[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_801814AC[]; +extern unsigned short D_801814B4[]; +extern unsigned short D_801814BC[]; +extern unsigned char D_80199DB8[]; +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_80199DB0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801814C4[])(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_80199EEC; +extern M2C_UNK D_80199EF0; +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_80199E78; +extern void (*D_801814F4[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80199EF4[]; +extern u8 D_80199EFC[]; +extern u8 D_80199EAC[]; +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_801814FC[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80181518[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80181520[])(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_80181588[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018152C; +extern u8 D_80181538; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801815BC[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801815C4[])(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_80181618[])(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_8018164C[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018163C[]; +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_80181668; +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); +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_801816E0[])(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_801816E8[])(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_801816F0[])(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_801816F8[])(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_80181700[])(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_80181708[])(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_80181714[])(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_80181720[])(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_8018172C[])(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_8018173C[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018174C[])(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_80181754[])(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_8018175C[])(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_80181764[])(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_8018176C[])(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_80181774[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018177C[])(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_80181784[])(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_8018178C[])(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_80181794[])(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_8018179C[])(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_801817A4[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801817AC[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801817B4[])(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_801817BC[])(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_801817C4[])(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_801817CC[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801817D4[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801817DC[])(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_801817E4[])(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_801817EC[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801817F4[])(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_801817FC[])(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_80181840[])(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_80181804; +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_80181870[])(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_801818AC[])(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(s32); +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_80181904[])(); +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_80181914[])(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_8018191C[])(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_80181A84[])(); +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_80181A90[])(); +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_801994C0; +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 int func_801789AC(void); +extern s16 D_8019ABE0; +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_8019A630; +extern short D_8019AC54; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8019AA5C; +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_8019AA84; +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_8019AA40; +extern s32 func_8017A3B0(void); +extern short D_8019AA7C; +extern short D_8019AA78; +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_8019ABB0; +extern s16 D_8019ABB2; +extern s16 D_8019ABBC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_8019ABB0; + + 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_8019ABBC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_8019ABB0+0xC == &D_8019ABBC; 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_8019ABB0 + 0xC)) < 0x101) { + D_8019ABB0 = 0; + D_8019ABB2 = 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_8019ABBC); + 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_8019ABB0 + 0xC)) < 0x101) { + D_8019ABB0 = 0; + D_8019ABB2 = 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_8019AABC; + extern s16 D_8019AABE; + extern s16 D_8019AAC0; + extern s16 D_8019AAB4; + extern s16 D_8019AAB6; + extern s16 D_8019AAB8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019AABC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019AABE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019AAC0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019AAB4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019AAB6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019AAB8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8019AA44; +extern u16 D_8019AAC4; +extern u16 D_8019AAC6; +extern u16 D_8019AAC8; +extern s16 D_8019ABE0; + +void func_8017B1D8(void) { + func_8012A418(); + D_8019ABE0 = 0; + D_8019AA44 = 0; + D_8019AAC4 = D_80126B5E; + D_8019AAC6 = D_80126B62; + D_8019AAC8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80181BCC[]; + extern s16 D_8019AABC; + extern s16 D_8019AAB4; + 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_80181BCC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80181BCC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019AABC; + s16 *p78C = &D_8019AAB4; + *(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_8019ABE0 = 1; + D_8019AA44 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019AA64; + extern SV4_8017B368 D_8019AA6C; + extern s16 D_8019AABC; + extern s16 D_8019AAB4; + extern u16 D_80181BCC; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8019AA64; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8019AA6C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80181BCC)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80181BCC)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8019AABC) = loc0; + (*(SV4_8017B368 *)&D_8019AAB4) = loc1; + D_8019ABE0 = 1; + D_8019AA44 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC05_000/nonmatchings/ov_SC05_000_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80181BCC[]; + extern s16 D_8019AABC; + extern s16 D_8019AABE; + extern s16 D_8019AAC0; + extern s16 D_8019AAB4; + extern s16 D_8019AAB6; + extern s16 D_8019AAB8; + 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_80181BCC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80181BCC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019AABC; + s16 *p78C = &D_8019AAB4; + *(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_8019AABE; + v798 = D_8019AAC0; + v78C = *p78C; + v78E = D_8019AAB6; + v790 = D_8019AAB8; + __asm__ __volatile__(""); + D_8019ABE0 = 1; + D_8019AA44 = 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_8019AA44; +extern s16 D_8019AABC; +extern s16 D_8019AABE; +extern s16 D_8019AAC0; +extern s16 D_8019AAB4; +extern s16 D_8019AAB6; +extern s16 D_8019AAB8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8019AA44 = 0; + D_8019AABC = (s16) D_80114F30; + D_8019AABE = (s16) D_80114F34; + D_8019AAC0 = (s16) D_80114F38; + D_8019AAB4 = (s16) D_80114F24; + D_8019AAB6 = (s16) D_80114F28; + D_8019AAB8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8019AAD4; +extern s16 D_8019AAD6; +extern s16 D_8019AAD8; +extern s16 D_8019AADC; +extern s16 D_8019AADE; +extern s16 D_8019AAE0; + +void func_8017B824(void) { + D_8019AAD4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8019AAD6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8019AAD8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8019AADC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8019AADE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8019AAE0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8019AAD4; +extern s16 D_8019AAD6; +extern s16 D_8019AAD8; +extern s16 D_8019AADC; +extern s16 D_8019AADE; +extern s16 D_8019AAE0; + +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_8019AAD4; + D_80114F34 = D_8019AAD6; + D_80114F38 = D_8019AAD8; + D_80114F24 = D_8019AADC; + D_80114F28 = D_8019AADE; + D_80114F2C = D_8019AAE0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8019AABC), src[8..15] -> (*(S8_8017B8E8 *)&D_8019AAB4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8019AABC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8019AAB4) = ((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_8019AAC4; +extern u16 D_8019AAC6; +extern u16 D_8019AAC8; + +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_8019AA44; +extern short D_8019AACC; +extern short D_8019AACE; +extern short D_8019AAD0; +extern s16 D_8019AABC; +extern s16 D_8019AABE; +extern s16 D_8019AAC0; +extern s16 D_8019AAB4; +extern s16 D_8019AAB6; +extern s16 D_8019AAB8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019AAC4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019AAC6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019AAC8); + (*(s16 *)&D_8019AACC) = buf[0]; + (*(s16 *)&D_8019AACE) = buf[1]; + (*(s16 *)&D_8019AAD0) = buf[2]; + D_8019AABC = D_80114F30 + buf[0]; + D_8019AA44 = 0; + D_8019AABE = D_80114F34 + buf[1]; + D_8019AAC0 = D_80114F38 + buf[2]; + D_8019AAB4 = D_80114F24 + buf[0]; + D_8019AAB6 = D_80114F28 + buf[1]; + D_8019AAB8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8019AA64; +extern SV4 D_8019AA6C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019AA6C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8019AA64 = 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_8019AA6C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019AA6C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8019AA64) = 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_8019AA6C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8019AA8C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8019AA8C; + 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_8019AA44; +extern s16 D_8019ABE0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8019AA44 = D_8019AA44 + 1; + if (D_8019AA44 >= 0x1F) { + D_8019ABE0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8019AA44; +extern s16 D_8019ABE0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8019AA44 = D_8019AA44 + 1; + if (0x18 < D_8019AA44) { + func_8012A4BC(); + D_8019ABE0 = 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_8019AA44; +extern void (*D_8019AA88)(void); +extern short D_8019AACC; +extern short D_8019AACE; +extern short D_8019AAD0; +extern s16 D_8019ABE0; + +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_8019AA44 = D_8019AA44 + 1; + if (D_8019AA44 >= 0x19) { + if (D_8019AA88 != 0) { + (*D_8019AA88)(); + } else { + D_80114F30 = D_80114F30 + D_8019AACC; + D_80114F34 = D_80114F34 + D_8019AACE; + D_80114F38 = D_80114F38 + D_8019AAD0; + D_80114F24 = D_80114F24 + D_8019AACC; + D_80114F28 = D_80114F28 + D_8019AACE; + D_80114F2C = D_80114F2C + D_8019AAD0; + func_8012A4BC(); + } + D_8019ABE0 = 0; + } +} + + + +extern void (*D_80181C6C[])(void); + +void func_8017BE60(void *a0) { + D_80181C6C[*(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) */ + diff --git a/src/ov_SC05_001/ov_SC05_001_jr_8017A4AC.c b/src/ov_SC05_001/ov_SC05_001_jr_8017A4AC.c index 8a097beed..84bac8311 100644 --- a/src/ov_SC05_001/ov_SC05_001_jr_8017A4AC.c +++ b/src/ov_SC05_001/ov_SC05_001_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801B5B7C; - extern s16 D_801B5B7E; - extern s16 D_801B5B80; - extern s16 D_801B5B74; - extern s16 D_801B5B76; - extern s16 D_801B5B78; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B5B7C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B5B7E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B5B80, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B5B74, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B5B76, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B5B78, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801B5B04; -extern u16 D_801B5B84; -extern u16 D_801B5B86; -extern u16 D_801B5B88; -extern s16 D_801B5F90; - -void func_8017B1D8(void) { - func_8012A418(); - D_801B5F90 = 0; - D_801B5B04 = 0; - D_801B5B84 = D_80126B5E; - D_801B5B86 = D_80126B62; - D_801B5B88 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_801893A8[]; - extern s16 D_801B5B7C; - extern s16 D_801B5B74; - 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_801893A8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801893A8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B5B7C; - s16 *p78C = &D_801B5B74; - *(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_801B5F90 = 1; - D_801B5B04 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B5B24; - extern SV4_8017B368 D_801B5B2C; - extern s16 D_801B5B7C; - extern s16 D_801B5B74; - extern u16 D_801893A8; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801B5B24; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801B5B2C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_801893A8)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_801893A8)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801B5B7C) = loc0; - (*(SV4_8017B368 *)&D_801B5B74) = loc1; - D_801B5F90 = 1; - D_801B5B04 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_801893A8[]; - extern s16 D_801B5B7C; - extern s16 D_801B5B7E; - extern s16 D_801B5B80; - extern s16 D_801B5B74; - extern s16 D_801B5B76; - extern s16 D_801B5B78; - 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_801893A8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801893A8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B5B7C; - s16 *p78C = &D_801B5B74; - *(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_801B5B7E; - v798 = D_801B5B80; - v78C = *p78C; - v78E = D_801B5B76; - v790 = D_801B5B78; - __asm__ __volatile__(""); - D_801B5F90 = 1; - D_801B5B04 = 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_801B5B04; -extern s16 D_801B5B7C; -extern s16 D_801B5B7E; -extern s16 D_801B5B80; -extern s16 D_801B5B74; -extern s16 D_801B5B76; -extern s16 D_801B5B78; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801B5B04 = 0; - D_801B5B7C = (s16) D_80114F30; - D_801B5B7E = (s16) D_80114F34; - D_801B5B80 = (s16) D_80114F38; - D_801B5B74 = (s16) D_80114F24; - D_801B5B76 = (s16) D_80114F28; - D_801B5B78 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801B5B94; -extern s16 D_801B5B96; -extern s16 D_801B5B98; -extern s16 D_801B5B9C; -extern s16 D_801B5B9E; -extern s16 D_801B5BA0; - -void func_8017B824(void) { - D_801B5B94 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801B5B96 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801B5B98 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801B5B9C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801B5B9E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801B5BA0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801B5B94; -extern s16 D_801B5B96; -extern s16 D_801B5B98; -extern s16 D_801B5B9C; -extern s16 D_801B5B9E; -extern s16 D_801B5BA0; - -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_801B5B94; - D_80114F34 = D_801B5B96; - D_80114F38 = D_801B5B98; - D_80114F24 = D_801B5B9C; - D_80114F28 = D_801B5B9E; - D_80114F2C = D_801B5BA0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801B5B7C), src[8..15] -> (*(S8_8017B8E8 *)&D_801B5B74) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801B5B7C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801B5B74) = ((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_801B5B84; -extern u16 D_801B5B86; -extern u16 D_801B5B88; - -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_801B5B04; -extern short D_801B5B8C; -extern short D_801B5B8E; -extern short D_801B5B90; -extern s16 D_801B5B7C; -extern s16 D_801B5B7E; -extern s16 D_801B5B80; -extern s16 D_801B5B74; -extern s16 D_801B5B76; -extern s16 D_801B5B78; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B5B84); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B5B86); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B5B88); - (*(s16 *)&D_801B5B8C) = buf[0]; - (*(s16 *)&D_801B5B8E) = buf[1]; - (*(s16 *)&D_801B5B90) = buf[2]; - D_801B5B7C = D_80114F30 + buf[0]; - D_801B5B04 = 0; - D_801B5B7E = D_80114F34 + buf[1]; - D_801B5B80 = D_80114F38 + buf[2]; - D_801B5B74 = D_80114F24 + buf[0]; - D_801B5B76 = D_80114F28 + buf[1]; - D_801B5B78 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801B5B24; -extern SV4 D_801B5B2C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B5B2C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801B5B24 = 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_801B5B2C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B5B2C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801B5B24) = 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_801B5B2C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801B5B4C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801B5B4C; - 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_801B5B04; -extern s16 D_801B5F90; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801B5B04 = D_801B5B04 + 1; - if (D_801B5B04 >= 0x1F) { - D_801B5F90 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801B5B04; -extern s16 D_801B5F90; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801B5B04 = D_801B5B04 + 1; - if (0x18 < D_801B5B04) { - func_8012A4BC(); - D_801B5F90 = 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_801B5B04; -extern void (*D_801B5B48)(void); -extern short D_801B5B8C; -extern short D_801B5B8E; -extern short D_801B5B90; -extern s16 D_801B5F90; - -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_801B5B04 = D_801B5B04 + 1; - if (D_801B5B04 >= 0x19) { - if (D_801B5B48 != 0) { - (*D_801B5B48)(); - } else { - D_80114F30 = D_80114F30 + D_801B5B8C; - D_80114F34 = D_80114F34 + D_801B5B8E; - D_80114F38 = D_80114F38 + D_801B5B90; - D_80114F24 = D_80114F24 + D_801B5B8C; - D_80114F28 = D_80114F28 + D_801B5B8E; - D_80114F2C = D_80114F2C + D_801B5B90; - func_8012A4BC(); - } - D_801B5F90 = 0; - } -} - - - -extern void (*D_80189448[])(void); - -void func_8017BE60(void *a0) { - D_80189448[*(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) */ diff --git a/src/ov_SC05_001/ov_SC05_001_jr_8017AE2C.c b/src/ov_SC05_001/ov_SC05_001_jr_8017AE2C.c new file mode 100644 index 000000000..ac7556424 --- /dev/null +++ b/src/ov_SC05_001/ov_SC05_001_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80187FA0; +extern u8 D_80187F10; +extern u8 D_80187EEC; +extern u8 D_80187EC8; +extern u8 D_80187F7C; +extern u8 D_80187F58; +extern u8 D_80187F34; +extern u8 D_80187EA4; +extern void func_80145934(void); +extern u8 D_80188030; +extern u8 D_8018800C; +extern u8 D_80187FE8; +extern u8 D_80187FC4; +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_80187428[]; +extern unsigned char D_80187458[]; +extern unsigned char D_801874A8[]; +extern unsigned char D_801874D8[]; +extern unsigned char D_80187508[]; +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(void); +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_80187558[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80187620[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801876A8[]; +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_801876B0; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801B4A00; +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_801B4A04; +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_801876E0; +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 void 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_80187788[])(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_801877AC[])(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_8018779C; +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_801877C0[])(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_801877CC[]; +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_801877DC[])(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_801877F4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801877E4; +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_80187808[])(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_80187824[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80187814; +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_80187838[])(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_8018784C[])(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_80187860; +extern void (*D_80187888[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80187868; +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_801878D4[])(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_801878D8[])(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(void *a0); +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_80187D3C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80187D4C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801B4A38; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80187D74[])(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_80187D54; +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_80187D64; +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_80187DB4[])(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_80187DBC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80187D88; +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_80187DC8[])(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_80187D98; +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_801B4A40; +extern s32 D_801B4A4C; +extern s32 D_801B4A50; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80187E04[])(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_80187DD8[]; +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_801B4A48; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80188054[])(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_80187E74[]; +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_801880F8[])(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_8018824C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80188068; +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_80188254[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80188078; +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_80188098; +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_8018825C[])(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(void); +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_80188284[])(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_80188290[])(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_80188104[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80188334; +extern void func_8015D380(s32 a0); +extern unsigned char D_80187418[]; +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_80188348[]; +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_80188384[]; +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_801883CC; +extern u16 D_801883CE; +extern u16 D_801883D0; +extern s32 D_801883D4; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_801883DC; +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_801880E8; +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_80188460[]; +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_80188510[])(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_80188540[]; +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_801885A4; +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_801B4A58[]; +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_801885C8[])(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_801B4AB0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80188610[])(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_80188600; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801B421C[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_80188618[])(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_8018866C[])(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_80188634; +extern s16 D_80188668; +extern s16 D_80188666; +extern s16 D_80188664; +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_80188678[])(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_801B4B10; +extern u8 D_801B4B11; +extern u8 D_801B4B12; +extern u8 D_801B4B13; +extern u8 D_801B4B14; +extern u8 D_801B4B15; +extern u8 D_801B4B16; +extern u8 D_801B4B17; +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_80188688[])(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_801B4B50; +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_801886CC[])(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_80188748[]; +extern s32 D_80188768[]; +extern u8 D_801887E4[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80188804[]; +extern u8 D_80188824[]; +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_801888C0[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018893C[])(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_801B422C; +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_80188948[])(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_80188950[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80188A18[])(void); +extern void func_80166618(void *a0); +extern void (*D_80188A28[])(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_80188A38[])(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_80188A44[])(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_801889A4[]; +extern u8 D_801889B8[]; +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_80188A5C[])(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_80188A64[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80188A6C[])(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_80188A74[])(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_80188A7C[])(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_80188A84[])(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_80188A8C[])(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_80188B40[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80188B48[])(void); +extern void func_80169F00(void *a0); +extern char D_80188AF8[]; +extern char D_80188AB8[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80188B80[])(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_80188B8C[])(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_80188BD4[])(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_80188C50[])(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_801B4E70; +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_80188C44[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80188C88[]; +extern unsigned short D_80188C90[]; +extern unsigned short D_80188C98[]; +extern unsigned char D_801B4E78[]; +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_801B4E70; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80188CA0[])(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_801B4FAC; +extern M2C_UNK D_801B4FB0; +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_801B4F38; +extern void (*D_80188CD0[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801B4FB4[]; +extern u8 D_801B4FBC[]; +extern u8 D_801B4F6C[]; +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_80188CD8[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80188CF4[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80188CFC[])(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_80188D64[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80188D08; +extern u8 D_80188D14; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80188D98[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80188DA0[])(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_80188DF4[])(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_80188E28[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80188E18[]; +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_80188E44; +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); +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_80188EBC[])(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_80188EC4[])(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_80188ECC[])(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_80188ED4[])(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_80188EDC[])(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_80188EE4[])(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_80188EF0[])(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_80188EFC[])(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_80188F08[])(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_80188F18[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80188F28[])(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_80188F30[])(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_80188F38[])(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_80188F40[])(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_80188F48[])(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_80188F50[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80188F58[])(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_80188F60[])(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_80188F68[])(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_80188F70[])(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_80188F78[])(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_80188F80[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80188F88[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80188F90[])(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_80188F98[])(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_80188FA0[])(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_80188FA8[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80188FB0[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80188FB8[])(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_80188FC0[])(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_80188FC8[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80188FD0[])(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_80188FD8[])(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_8018901C[])(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_80188FE0; +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_8018904C[])(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_80189088[])(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(s32); +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_801890E0[])(); +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_801890F0[])(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_801890F8[])(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_80189260[])(); +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_8018926C[])(); +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_801B4474; +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 int func_801789AC(void); +extern s16 D_801B5F90; +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_801B56F0; +extern short D_801B6004; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801B5B1C; +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_801B5B44; +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_801B5B00; +extern s32 func_8017A3B0(void); +extern short D_801B5B3C; +extern short D_801B5B38; +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_801B5F60; +extern s16 D_801B5F62; +extern s16 D_801B5F6C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801B5F60; + + 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_801B5F6C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801B5F60+0xC == &D_801B5F6C; 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_801B5F60 + 0xC)) < 0x101) { + D_801B5F60 = 0; + D_801B5F62 = 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_801B5F6C); + 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_801B5F60 + 0xC)) < 0x101) { + D_801B5F60 = 0; + D_801B5F62 = 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_801B5B7C; + extern s16 D_801B5B7E; + extern s16 D_801B5B80; + extern s16 D_801B5B74; + extern s16 D_801B5B76; + extern s16 D_801B5B78; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B5B7C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B5B7E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B5B80, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B5B74, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B5B76, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B5B78, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801B5B04; +extern u16 D_801B5B84; +extern u16 D_801B5B86; +extern u16 D_801B5B88; +extern s16 D_801B5F90; + +void func_8017B1D8(void) { + func_8012A418(); + D_801B5F90 = 0; + D_801B5B04 = 0; + D_801B5B84 = D_80126B5E; + D_801B5B86 = D_80126B62; + D_801B5B88 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_801893A8[]; + extern s16 D_801B5B7C; + extern s16 D_801B5B74; + 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_801893A8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801893A8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B5B7C; + s16 *p78C = &D_801B5B74; + *(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_801B5F90 = 1; + D_801B5B04 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B5B24; + extern SV4_8017B368 D_801B5B2C; + extern s16 D_801B5B7C; + extern s16 D_801B5B74; + extern u16 D_801893A8; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801B5B24; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801B5B2C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_801893A8)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_801893A8)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801B5B7C) = loc0; + (*(SV4_8017B368 *)&D_801B5B74) = loc1; + D_801B5F90 = 1; + D_801B5B04 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_801893A8[]; + extern s16 D_801B5B7C; + extern s16 D_801B5B7E; + extern s16 D_801B5B80; + extern s16 D_801B5B74; + extern s16 D_801B5B76; + extern s16 D_801B5B78; + 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_801893A8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801893A8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B5B7C; + s16 *p78C = &D_801B5B74; + *(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_801B5B7E; + v798 = D_801B5B80; + v78C = *p78C; + v78E = D_801B5B76; + v790 = D_801B5B78; + __asm__ __volatile__(""); + D_801B5F90 = 1; + D_801B5B04 = 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_801B5B04; +extern s16 D_801B5B7C; +extern s16 D_801B5B7E; +extern s16 D_801B5B80; +extern s16 D_801B5B74; +extern s16 D_801B5B76; +extern s16 D_801B5B78; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801B5B04 = 0; + D_801B5B7C = (s16) D_80114F30; + D_801B5B7E = (s16) D_80114F34; + D_801B5B80 = (s16) D_80114F38; + D_801B5B74 = (s16) D_80114F24; + D_801B5B76 = (s16) D_80114F28; + D_801B5B78 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801B5B94; +extern s16 D_801B5B96; +extern s16 D_801B5B98; +extern s16 D_801B5B9C; +extern s16 D_801B5B9E; +extern s16 D_801B5BA0; + +void func_8017B824(void) { + D_801B5B94 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801B5B96 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801B5B98 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801B5B9C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801B5B9E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801B5BA0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801B5B94; +extern s16 D_801B5B96; +extern s16 D_801B5B98; +extern s16 D_801B5B9C; +extern s16 D_801B5B9E; +extern s16 D_801B5BA0; + +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_801B5B94; + D_80114F34 = D_801B5B96; + D_80114F38 = D_801B5B98; + D_80114F24 = D_801B5B9C; + D_80114F28 = D_801B5B9E; + D_80114F2C = D_801B5BA0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801B5B7C), src[8..15] -> (*(S8_8017B8E8 *)&D_801B5B74) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801B5B7C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801B5B74) = ((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_801B5B84; +extern u16 D_801B5B86; +extern u16 D_801B5B88; + +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_801B5B04; +extern short D_801B5B8C; +extern short D_801B5B8E; +extern short D_801B5B90; +extern s16 D_801B5B7C; +extern s16 D_801B5B7E; +extern s16 D_801B5B80; +extern s16 D_801B5B74; +extern s16 D_801B5B76; +extern s16 D_801B5B78; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B5B84); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B5B86); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B5B88); + (*(s16 *)&D_801B5B8C) = buf[0]; + (*(s16 *)&D_801B5B8E) = buf[1]; + (*(s16 *)&D_801B5B90) = buf[2]; + D_801B5B7C = D_80114F30 + buf[0]; + D_801B5B04 = 0; + D_801B5B7E = D_80114F34 + buf[1]; + D_801B5B80 = D_80114F38 + buf[2]; + D_801B5B74 = D_80114F24 + buf[0]; + D_801B5B76 = D_80114F28 + buf[1]; + D_801B5B78 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801B5B24; +extern SV4 D_801B5B2C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B5B2C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801B5B24 = 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_801B5B2C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B5B2C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801B5B24) = 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_801B5B2C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801B5B4C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801B5B4C; + 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_801B5B04; +extern s16 D_801B5F90; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801B5B04 = D_801B5B04 + 1; + if (D_801B5B04 >= 0x1F) { + D_801B5F90 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801B5B04; +extern s16 D_801B5F90; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801B5B04 = D_801B5B04 + 1; + if (0x18 < D_801B5B04) { + func_8012A4BC(); + D_801B5F90 = 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_801B5B04; +extern void (*D_801B5B48)(void); +extern short D_801B5B8C; +extern short D_801B5B8E; +extern short D_801B5B90; +extern s16 D_801B5F90; + +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_801B5B04 = D_801B5B04 + 1; + if (D_801B5B04 >= 0x19) { + if (D_801B5B48 != 0) { + (*D_801B5B48)(); + } else { + D_80114F30 = D_80114F30 + D_801B5B8C; + D_80114F34 = D_80114F34 + D_801B5B8E; + D_80114F38 = D_80114F38 + D_801B5B90; + D_80114F24 = D_80114F24 + D_801B5B8C; + D_80114F28 = D_80114F28 + D_801B5B8E; + D_80114F2C = D_80114F2C + D_801B5B90; + func_8012A4BC(); + } + D_801B5F90 = 0; + } +} + + + +extern void (*D_80189448[])(void); + +void func_8017BE60(void *a0) { + D_80189448[*(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) */ + diff --git a/src/ov_SC05_002/ov_SC05_002_jr_8017A4AC.c b/src/ov_SC05_002/ov_SC05_002_jr_8017A4AC.c index 0d9253d5c..df07e1358 100644 --- a/src/ov_SC05_002/ov_SC05_002_jr_8017A4AC.c +++ b/src/ov_SC05_002/ov_SC05_002_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8019FE1C; - extern s16 D_8019FE1E; - extern s16 D_8019FE20; - extern s16 D_8019FE14; - extern s16 D_8019FE16; - extern s16 D_8019FE18; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019FE1C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019FE1E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019FE20, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019FE14, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019FE16, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019FE18, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8019FDA4; -extern u16 D_8019FE24; -extern u16 D_8019FE26; -extern u16 D_8019FE28; -extern s16 D_8019FF48; - -void func_8017B1D8(void) { - func_8012A418(); - D_8019FF48 = 0; - D_8019FDA4 = 0; - D_8019FE24 = D_80126B5E; - D_8019FE26 = D_80126B62; - D_8019FE28 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80183B68[]; - extern s16 D_8019FE1C; - extern s16 D_8019FE14; - 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_80183B68[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80183B68[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019FE1C; - s16 *p78C = &D_8019FE14; - *(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_8019FF48 = 1; - D_8019FDA4 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019FDC4; - extern SV4_8017B368 D_8019FDCC; - extern s16 D_8019FE1C; - extern s16 D_8019FE14; - extern u16 D_80183B68; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8019FDC4; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8019FDCC; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80183B68)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80183B68)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8019FE1C) = loc0; - (*(SV4_8017B368 *)&D_8019FE14) = loc1; - D_8019FF48 = 1; - D_8019FDA4 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80183B68[]; - extern s16 D_8019FE1C; - extern s16 D_8019FE1E; - extern s16 D_8019FE20; - extern s16 D_8019FE14; - extern s16 D_8019FE16; - extern s16 D_8019FE18; - 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_80183B68[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80183B68[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019FE1C; - s16 *p78C = &D_8019FE14; - *(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_8019FE1E; - v798 = D_8019FE20; - v78C = *p78C; - v78E = D_8019FE16; - v790 = D_8019FE18; - __asm__ __volatile__(""); - D_8019FF48 = 1; - D_8019FDA4 = 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_8019FDA4; -extern s16 D_8019FE1C; -extern s16 D_8019FE1E; -extern s16 D_8019FE20; -extern s16 D_8019FE14; -extern s16 D_8019FE16; -extern s16 D_8019FE18; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8019FDA4 = 0; - D_8019FE1C = (s16) D_80114F30; - D_8019FE1E = (s16) D_80114F34; - D_8019FE20 = (s16) D_80114F38; - D_8019FE14 = (s16) D_80114F24; - D_8019FE16 = (s16) D_80114F28; - D_8019FE18 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8019FE34; -extern s16 D_8019FE36; -extern s16 D_8019FE38; -extern s16 D_8019FE3C; -extern s16 D_8019FE3E; -extern s16 D_8019FE40; - -void func_8017B824(void) { - D_8019FE34 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8019FE36 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8019FE38 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8019FE3C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8019FE3E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8019FE40 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8019FE34; -extern s16 D_8019FE36; -extern s16 D_8019FE38; -extern s16 D_8019FE3C; -extern s16 D_8019FE3E; -extern s16 D_8019FE40; - -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_8019FE34; - D_80114F34 = D_8019FE36; - D_80114F38 = D_8019FE38; - D_80114F24 = D_8019FE3C; - D_80114F28 = D_8019FE3E; - D_80114F2C = D_8019FE40; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8019FE1C), src[8..15] -> (*(S8_8017B8E8 *)&D_8019FE14) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8019FE1C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8019FE14) = ((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_8019FE24; -extern u16 D_8019FE26; -extern u16 D_8019FE28; - -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_8019FDA4; -extern short D_8019FE2C; -extern short D_8019FE2E; -extern short D_8019FE30; -extern s16 D_8019FE1C; -extern s16 D_8019FE1E; -extern s16 D_8019FE20; -extern s16 D_8019FE14; -extern s16 D_8019FE16; -extern s16 D_8019FE18; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019FE24); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019FE26); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019FE28); - (*(s16 *)&D_8019FE2C) = buf[0]; - (*(s16 *)&D_8019FE2E) = buf[1]; - (*(s16 *)&D_8019FE30) = buf[2]; - D_8019FE1C = D_80114F30 + buf[0]; - D_8019FDA4 = 0; - D_8019FE1E = D_80114F34 + buf[1]; - D_8019FE20 = D_80114F38 + buf[2]; - D_8019FE14 = D_80114F24 + buf[0]; - D_8019FE16 = D_80114F28 + buf[1]; - D_8019FE18 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8019FDC4; -extern SV4 D_8019FDCC; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019FDCC) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8019FDC4 = 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_8019FDCC = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019FDCC)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8019FDC4) = 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_8019FDCC) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8019FDEC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8019FDEC; - 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_8019FDA4; -extern s16 D_8019FF48; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8019FDA4 = D_8019FDA4 + 1; - if (D_8019FDA4 >= 0x1F) { - D_8019FF48 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8019FDA4; -extern s16 D_8019FF48; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8019FDA4 = D_8019FDA4 + 1; - if (0x18 < D_8019FDA4) { - func_8012A4BC(); - D_8019FF48 = 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_8019FDA4; -extern void (*D_8019FDE8)(void); -extern short D_8019FE2C; -extern short D_8019FE2E; -extern short D_8019FE30; -extern s16 D_8019FF48; - -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_8019FDA4 = D_8019FDA4 + 1; - if (D_8019FDA4 >= 0x19) { - if (D_8019FDE8 != 0) { - (*D_8019FDE8)(); - } else { - D_80114F30 = D_80114F30 + D_8019FE2C; - D_80114F34 = D_80114F34 + D_8019FE2E; - D_80114F38 = D_80114F38 + D_8019FE30; - D_80114F24 = D_80114F24 + D_8019FE2C; - D_80114F28 = D_80114F28 + D_8019FE2E; - D_80114F2C = D_80114F2C + D_8019FE30; - func_8012A4BC(); - } - D_8019FF48 = 0; - } -} - - - -extern void (*D_80183C08[])(void); - -void func_8017BE60(void *a0) { - D_80183C08[*(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) */ diff --git a/src/ov_SC05_002/ov_SC05_002_jr_8017AE2C.c b/src/ov_SC05_002/ov_SC05_002_jr_8017AE2C.c new file mode 100644 index 000000000..6ea741608 --- /dev/null +++ b/src/ov_SC05_002/ov_SC05_002_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80182760; +extern u8 D_801826D0; +extern u8 D_801826AC; +extern u8 D_80182688; +extern u8 D_8018273C; +extern u8 D_80182718; +extern u8 D_801826F4; +extern u8 D_80182664; +extern void func_80145934(void); +extern u8 D_801827F0; +extern u8 D_801827CC; +extern u8 D_801827A8; +extern u8 D_80182784; +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_80181BE8[]; +extern unsigned char D_80181C18[]; +extern unsigned char D_80181C68[]; +extern unsigned char D_80181C98[]; +extern unsigned char D_80181CC8[]; +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(void); +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_80181D18[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80181DE0[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80181E68[]; +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_80181E70; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8019ECA0; +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_8019ECA4; +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_80181EA0; +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 void 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_80181F48[])(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_80181F6C[])(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_80181F5C; +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_80181F80[])(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_80181F8C[]; +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_80181F9C[])(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_80181FB4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80181FA4; +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_80181FC8[])(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_80181FE4[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181FD4; +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_80181FF8[])(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_8018200C[])(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_80182020; +extern void (*D_80182048[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80182028; +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_80182094[])(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_80182098[])(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(void *a0); +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_801824FC[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018250C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8019ECD8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80182534[])(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_80182514; +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_80182524; +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_80182574[])(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_8018257C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80182548; +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_80182588[])(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_80182558; +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_8019ECE0; +extern s32 D_8019ECEC; +extern s32 D_8019ECF0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801825C4[])(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_80182598[]; +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_8019ECE8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80182814[])(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_80182634[]; +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_801828B8[])(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_80182A0C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80182828; +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_80182A14[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80182838; +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_80182858; +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_80182A1C[])(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(void); +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_80182A44[])(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_80182A50[])(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_801828C4[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80182AF4; +extern void func_8015D380(s32 a0); +extern unsigned char D_80181BD8[]; +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_80182B08[]; +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_80182B44[]; +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_80182B8C; +extern u16 D_80182B8E; +extern u16 D_80182B90; +extern s32 D_80182B94; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80182B9C; +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_801828A8; +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_80182C20[]; +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_80182CD0[])(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_80182D00[]; +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_80182D64; +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_8019ECF8[]; +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_80182D88[])(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_8019ED50[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80182DD0[])(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_80182DC0; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8019E5C8[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_80182DD8[])(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_80182E2C[])(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_80182DF4; +extern s16 D_80182E28; +extern s16 D_80182E26; +extern s16 D_80182E24; +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_80182E38[])(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_8019EDB0; +extern u8 D_8019EDB1; +extern u8 D_8019EDB2; +extern u8 D_8019EDB3; +extern u8 D_8019EDB4; +extern u8 D_8019EDB5; +extern u8 D_8019EDB6; +extern u8 D_8019EDB7; +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_80182E48[])(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_8019EDF0; +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_80182E8C[])(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_80182F08[]; +extern s32 D_80182F28[]; +extern u8 D_80182FA4[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80182FC4[]; +extern u8 D_80182FE4[]; +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_80183080[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801830FC[])(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_8019E5D8; +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_80183108[])(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_80183110[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801831D8[])(void); +extern void func_80166618(void *a0); +extern void (*D_801831E8[])(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_801831F8[])(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_80183204[])(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_80183164[]; +extern u8 D_80183178[]; +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_8018321C[])(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_80183224[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018322C[])(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_80183234[])(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_8018323C[])(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_80183244[])(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_8018324C[])(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_80183300[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80183308[])(void); +extern void func_80169F00(void *a0); +extern char D_801832B8[]; +extern char D_80183278[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80183340[])(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_8018334C[])(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_80183394[])(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_80183410[])(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_8019F110; +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_80183404[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80183448[]; +extern unsigned short D_80183450[]; +extern unsigned short D_80183458[]; +extern unsigned char D_8019F118[]; +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_8019F110; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80183460[])(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_8019F24C; +extern M2C_UNK D_8019F250; +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_8019F1D8; +extern void (*D_80183490[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8019F254[]; +extern u8 D_8019F25C[]; +extern u8 D_8019F20C[]; +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_80183498[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801834B4[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801834BC[])(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_80183524[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801834C8; +extern u8 D_801834D4; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80183558[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80183560[])(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_801835B4[])(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_801835E8[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801835D8[]; +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_80183604; +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); +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_8018367C[])(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_80183684[])(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_8018368C[])(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_80183694[])(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_8018369C[])(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_801836A4[])(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_801836B0[])(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_801836BC[])(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_801836C8[])(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_801836D8[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801836E8[])(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_801836F0[])(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_801836F8[])(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_80183700[])(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_80183708[])(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_80183710[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80183718[])(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_80183720[])(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_80183728[])(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_80183730[])(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_80183738[])(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_80183740[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80183748[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80183750[])(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_80183758[])(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_80183760[])(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_80183768[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80183770[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80183778[])(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_80183780[])(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_80183788[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80183790[])(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_80183798[])(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_801837DC[])(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_801837A0; +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_8018380C[])(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_80183848[])(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(s32); +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_801838A0[])(); +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_801838B0[])(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_801838B8[])(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_80183A20[])(); +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_80183A2C[])(); +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_8019E820; +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 int func_801789AC(void); +extern s16 D_8019FF48; +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_8019F990; +extern short D_8019FFBC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8019FDBC; +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_8019FDE4; +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_8019FDA0; +extern s32 func_8017A3B0(void); +extern short D_8019FDDC; +extern short D_8019FDD8; +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_8019FF18; +extern s16 D_8019FF1A; +extern s16 D_8019FF24; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_8019FF18; + + 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_8019FF24); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_8019FF18+0xC == &D_8019FF24; 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_8019FF18 + 0xC)) < 0x101) { + D_8019FF18 = 0; + D_8019FF1A = 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_8019FF24); + 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_8019FF18 + 0xC)) < 0x101) { + D_8019FF18 = 0; + D_8019FF1A = 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_8019FE1C; + extern s16 D_8019FE1E; + extern s16 D_8019FE20; + extern s16 D_8019FE14; + extern s16 D_8019FE16; + extern s16 D_8019FE18; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019FE1C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019FE1E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019FE20, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019FE14, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019FE16, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019FE18, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8019FDA4; +extern u16 D_8019FE24; +extern u16 D_8019FE26; +extern u16 D_8019FE28; +extern s16 D_8019FF48; + +void func_8017B1D8(void) { + func_8012A418(); + D_8019FF48 = 0; + D_8019FDA4 = 0; + D_8019FE24 = D_80126B5E; + D_8019FE26 = D_80126B62; + D_8019FE28 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80183B68[]; + extern s16 D_8019FE1C; + extern s16 D_8019FE14; + 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_80183B68[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80183B68[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019FE1C; + s16 *p78C = &D_8019FE14; + *(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_8019FF48 = 1; + D_8019FDA4 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019FDC4; + extern SV4_8017B368 D_8019FDCC; + extern s16 D_8019FE1C; + extern s16 D_8019FE14; + extern u16 D_80183B68; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8019FDC4; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8019FDCC; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80183B68)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80183B68)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8019FE1C) = loc0; + (*(SV4_8017B368 *)&D_8019FE14) = loc1; + D_8019FF48 = 1; + D_8019FDA4 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80183B68[]; + extern s16 D_8019FE1C; + extern s16 D_8019FE1E; + extern s16 D_8019FE20; + extern s16 D_8019FE14; + extern s16 D_8019FE16; + extern s16 D_8019FE18; + 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_80183B68[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80183B68[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019FE1C; + s16 *p78C = &D_8019FE14; + *(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_8019FE1E; + v798 = D_8019FE20; + v78C = *p78C; + v78E = D_8019FE16; + v790 = D_8019FE18; + __asm__ __volatile__(""); + D_8019FF48 = 1; + D_8019FDA4 = 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_8019FDA4; +extern s16 D_8019FE1C; +extern s16 D_8019FE1E; +extern s16 D_8019FE20; +extern s16 D_8019FE14; +extern s16 D_8019FE16; +extern s16 D_8019FE18; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8019FDA4 = 0; + D_8019FE1C = (s16) D_80114F30; + D_8019FE1E = (s16) D_80114F34; + D_8019FE20 = (s16) D_80114F38; + D_8019FE14 = (s16) D_80114F24; + D_8019FE16 = (s16) D_80114F28; + D_8019FE18 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8019FE34; +extern s16 D_8019FE36; +extern s16 D_8019FE38; +extern s16 D_8019FE3C; +extern s16 D_8019FE3E; +extern s16 D_8019FE40; + +void func_8017B824(void) { + D_8019FE34 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8019FE36 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8019FE38 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8019FE3C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8019FE3E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8019FE40 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8019FE34; +extern s16 D_8019FE36; +extern s16 D_8019FE38; +extern s16 D_8019FE3C; +extern s16 D_8019FE3E; +extern s16 D_8019FE40; + +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_8019FE34; + D_80114F34 = D_8019FE36; + D_80114F38 = D_8019FE38; + D_80114F24 = D_8019FE3C; + D_80114F28 = D_8019FE3E; + D_80114F2C = D_8019FE40; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8019FE1C), src[8..15] -> (*(S8_8017B8E8 *)&D_8019FE14) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8019FE1C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8019FE14) = ((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_8019FE24; +extern u16 D_8019FE26; +extern u16 D_8019FE28; + +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_8019FDA4; +extern short D_8019FE2C; +extern short D_8019FE2E; +extern short D_8019FE30; +extern s16 D_8019FE1C; +extern s16 D_8019FE1E; +extern s16 D_8019FE20; +extern s16 D_8019FE14; +extern s16 D_8019FE16; +extern s16 D_8019FE18; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019FE24); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019FE26); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019FE28); + (*(s16 *)&D_8019FE2C) = buf[0]; + (*(s16 *)&D_8019FE2E) = buf[1]; + (*(s16 *)&D_8019FE30) = buf[2]; + D_8019FE1C = D_80114F30 + buf[0]; + D_8019FDA4 = 0; + D_8019FE1E = D_80114F34 + buf[1]; + D_8019FE20 = D_80114F38 + buf[2]; + D_8019FE14 = D_80114F24 + buf[0]; + D_8019FE16 = D_80114F28 + buf[1]; + D_8019FE18 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8019FDC4; +extern SV4 D_8019FDCC; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019FDCC) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8019FDC4 = 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_8019FDCC = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019FDCC)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8019FDC4) = 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_8019FDCC) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8019FDEC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8019FDEC; + 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_8019FDA4; +extern s16 D_8019FF48; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8019FDA4 = D_8019FDA4 + 1; + if (D_8019FDA4 >= 0x1F) { + D_8019FF48 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8019FDA4; +extern s16 D_8019FF48; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8019FDA4 = D_8019FDA4 + 1; + if (0x18 < D_8019FDA4) { + func_8012A4BC(); + D_8019FF48 = 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_8019FDA4; +extern void (*D_8019FDE8)(void); +extern short D_8019FE2C; +extern short D_8019FE2E; +extern short D_8019FE30; +extern s16 D_8019FF48; + +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_8019FDA4 = D_8019FDA4 + 1; + if (D_8019FDA4 >= 0x19) { + if (D_8019FDE8 != 0) { + (*D_8019FDE8)(); + } else { + D_80114F30 = D_80114F30 + D_8019FE2C; + D_80114F34 = D_80114F34 + D_8019FE2E; + D_80114F38 = D_80114F38 + D_8019FE30; + D_80114F24 = D_80114F24 + D_8019FE2C; + D_80114F28 = D_80114F28 + D_8019FE2E; + D_80114F2C = D_80114F2C + D_8019FE30; + func_8012A4BC(); + } + D_8019FF48 = 0; + } +} + + + +extern void (*D_80183C08[])(void); + +void func_8017BE60(void *a0) { + D_80183C08[*(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) */ + diff --git a/src/ov_SC05_003/ov_SC05_003_jr_8017A4AC.c b/src/ov_SC05_003/ov_SC05_003_jr_8017A4AC.c index f237a2fde..44c728e31 100644 --- a/src/ov_SC05_003/ov_SC05_003_jr_8017A4AC.c +++ b/src/ov_SC05_003/ov_SC05_003_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC05_003/nonmatchings/ov_SC05_003_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801AC92C; - extern s16 D_801AC92E; - extern s16 D_801AC930; - extern s16 D_801AC924; - extern s16 D_801AC926; - extern s16 D_801AC928; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801AC92C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801AC92E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801AC930, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801AC924, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801AC926, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801AC928, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801AC8B4; -extern u16 D_801AC934; -extern u16 D_801AC936; -extern u16 D_801AC938; -extern s16 D_801ACA58; - -void func_8017B1D8(void) { - func_8012A418(); - D_801ACA58 = 0; - D_801AC8B4 = 0; - D_801AC934 = D_80126B5E; - D_801AC936 = D_80126B62; - D_801AC938 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80185EA0[]; - extern s16 D_801AC92C; - extern s16 D_801AC924; - 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_80185EA0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80185EA0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801AC92C; - s16 *p78C = &D_801AC924; - *(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_801ACA58 = 1; - D_801AC8B4 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801AC8D4; - extern SV4_8017B368 D_801AC8DC; - extern s16 D_801AC92C; - extern s16 D_801AC924; - extern u16 D_80185EA0; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801AC8D4; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801AC8DC; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80185EA0)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80185EA0)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801AC92C) = loc0; - (*(SV4_8017B368 *)&D_801AC924) = loc1; - D_801ACA58 = 1; - D_801AC8B4 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC05_003/nonmatchings/ov_SC05_003_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80185EA0[]; - extern s16 D_801AC92C; - extern s16 D_801AC92E; - extern s16 D_801AC930; - extern s16 D_801AC924; - extern s16 D_801AC926; - extern s16 D_801AC928; - 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_80185EA0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80185EA0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801AC92C; - s16 *p78C = &D_801AC924; - *(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_801AC92E; - v798 = D_801AC930; - v78C = *p78C; - v78E = D_801AC926; - v790 = D_801AC928; - __asm__ __volatile__(""); - D_801ACA58 = 1; - D_801AC8B4 = 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_801AC8B4; -extern s16 D_801AC92C; -extern s16 D_801AC92E; -extern s16 D_801AC930; -extern s16 D_801AC924; -extern s16 D_801AC926; -extern s16 D_801AC928; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801AC8B4 = 0; - D_801AC92C = (s16) D_80114F30; - D_801AC92E = (s16) D_80114F34; - D_801AC930 = (s16) D_80114F38; - D_801AC924 = (s16) D_80114F24; - D_801AC926 = (s16) D_80114F28; - D_801AC928 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801AC944; -extern s16 D_801AC946; -extern s16 D_801AC948; -extern s16 D_801AC94C; -extern s16 D_801AC94E; -extern s16 D_801AC950; - -void func_8017B824(void) { - D_801AC944 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801AC946 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801AC948 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801AC94C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801AC94E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801AC950 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801AC944; -extern s16 D_801AC946; -extern s16 D_801AC948; -extern s16 D_801AC94C; -extern s16 D_801AC94E; -extern s16 D_801AC950; - -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_801AC944; - D_80114F34 = D_801AC946; - D_80114F38 = D_801AC948; - D_80114F24 = D_801AC94C; - D_80114F28 = D_801AC94E; - D_80114F2C = D_801AC950; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801AC92C), src[8..15] -> (*(S8_8017B8E8 *)&D_801AC924) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801AC92C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801AC924) = ((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_801AC934; -extern u16 D_801AC936; -extern u16 D_801AC938; - -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_801AC8B4; -extern short D_801AC93C; -extern short D_801AC93E; -extern short D_801AC940; -extern s16 D_801AC92C; -extern s16 D_801AC92E; -extern s16 D_801AC930; -extern s16 D_801AC924; -extern s16 D_801AC926; -extern s16 D_801AC928; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801AC934); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801AC936); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801AC938); - (*(s16 *)&D_801AC93C) = buf[0]; - (*(s16 *)&D_801AC93E) = buf[1]; - (*(s16 *)&D_801AC940) = buf[2]; - D_801AC92C = D_80114F30 + buf[0]; - D_801AC8B4 = 0; - D_801AC92E = D_80114F34 + buf[1]; - D_801AC930 = D_80114F38 + buf[2]; - D_801AC924 = D_80114F24 + buf[0]; - D_801AC926 = D_80114F28 + buf[1]; - D_801AC928 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801AC8D4; -extern SV4 D_801AC8DC; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801AC8DC) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801AC8D4 = 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_801AC8DC = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801AC8DC)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801AC8D4) = 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_801AC8DC) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801AC8FC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801AC8FC; - 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_801AC8B4; -extern s16 D_801ACA58; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801AC8B4 = D_801AC8B4 + 1; - if (D_801AC8B4 >= 0x1F) { - D_801ACA58 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801AC8B4; -extern s16 D_801ACA58; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801AC8B4 = D_801AC8B4 + 1; - if (0x18 < D_801AC8B4) { - func_8012A4BC(); - D_801ACA58 = 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_801AC8B4; -extern void (*D_801AC8F8)(void); -extern short D_801AC93C; -extern short D_801AC93E; -extern short D_801AC940; -extern s16 D_801ACA58; - -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_801AC8B4 = D_801AC8B4 + 1; - if (D_801AC8B4 >= 0x19) { - if (D_801AC8F8 != 0) { - (*D_801AC8F8)(); - } else { - D_80114F30 = D_80114F30 + D_801AC93C; - D_80114F34 = D_80114F34 + D_801AC93E; - D_80114F38 = D_80114F38 + D_801AC940; - D_80114F24 = D_80114F24 + D_801AC93C; - D_80114F28 = D_80114F28 + D_801AC93E; - D_80114F2C = D_80114F2C + D_801AC940; - func_8012A4BC(); - } - D_801ACA58 = 0; - } -} - - - -extern void (*D_80185F40[])(void); - -void func_8017BE60(void *a0) { - D_80185F40[*(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) */ diff --git a/src/ov_SC05_003/ov_SC05_003_jr_8017AE2C.c b/src/ov_SC05_003/ov_SC05_003_jr_8017AE2C.c new file mode 100644 index 000000000..c42b04fac --- /dev/null +++ b/src/ov_SC05_003/ov_SC05_003_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80184A98; +extern u8 D_80184A08; +extern u8 D_801849E4; +extern u8 D_801849C0; +extern u8 D_80184A74; +extern u8 D_80184A50; +extern u8 D_80184A2C; +extern u8 D_8018499C; +extern void func_80145934(void); +extern u8 D_80184B28; +extern u8 D_80184B04; +extern u8 D_80184AE0; +extern u8 D_80184ABC; +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_80183F20[]; +extern unsigned char D_80183F50[]; +extern unsigned char D_80183FA0[]; +extern unsigned char D_80183FD0[]; +extern unsigned char D_80184000[]; +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(void); +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_80184050[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80184118[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801841A0[]; +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_801841A8; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801AB7B0; +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_801AB7B4; +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_801841D8; +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 void 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_80184280[])(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_801842A4[])(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_80184294; +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_801842B8[])(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_801842C4[]; +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_801842D4[])(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_801842EC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801842DC; +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_80184300[])(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_8018431C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018430C; +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_80184330[])(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_80184344[])(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_80184358; +extern void (*D_80184380[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80184360; +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_801843CC[])(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_801843D0[])(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(void *a0); +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_80184834[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80184844[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801AB7E8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018486C[])(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_8018484C; +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_8018485C; +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_801848AC[])(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_801848B4[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80184880; +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_801848C0[])(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_80184890; +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_801AB7F0; +extern s32 D_801AB7FC; +extern s32 D_801AB800; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801848FC[])(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_801848D0[]; +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_801AB7F8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80184B4C[])(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_8018496C[]; +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_80184BF0[])(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_80184D44[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80184B60; +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_80184D4C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80184B70; +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_80184B90; +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_80184D54[])(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(void); +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_80184D7C[])(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_80184D88[])(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_80184BFC[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80184E2C; +extern void func_8015D380(s32 a0); +extern unsigned char D_80183F10[]; +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_80184E40[]; +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_80184E7C[]; +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_80184EC4; +extern u16 D_80184EC6; +extern u16 D_80184EC8; +extern s32 D_80184ECC; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80184ED4; +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_80184BE0; +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_80184F58[]; +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_80185008[])(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_80185038[]; +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_8018509C; +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_801AB808[]; +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_801850C0[])(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_801AB860[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80185108[])(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_801850F8; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801AB0C4[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_80185110[])(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_80185164[])(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_8018512C; +extern s16 D_80185160; +extern s16 D_8018515E; +extern s16 D_8018515C; +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_80185170[])(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_801AB8C0; +extern u8 D_801AB8C1; +extern u8 D_801AB8C2; +extern u8 D_801AB8C3; +extern u8 D_801AB8C4; +extern u8 D_801AB8C5; +extern u8 D_801AB8C6; +extern u8 D_801AB8C7; +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_80185180[])(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_801AB900; +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_801851C4[])(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_80185240[]; +extern s32 D_80185260[]; +extern u8 D_801852DC[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801852FC[]; +extern u8 D_8018531C[]; +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_801853B8[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80185434[])(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_801AB0D4; +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_80185440[])(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_80185448[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80185510[])(void); +extern void func_80166618(void *a0); +extern void (*D_80185520[])(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_80185530[])(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_8018553C[])(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_8018549C[]; +extern u8 D_801854B0[]; +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_80185554[])(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_8018555C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80185564[])(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_8018556C[])(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_80185574[])(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_8018557C[])(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_80185584[])(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_80185638[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80185640[])(void); +extern void func_80169F00(void *a0); +extern char D_801855F0[]; +extern char D_801855B0[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80185678[])(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_80185684[])(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_801856CC[])(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_80185748[])(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_801ABC20; +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_8018573C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80185780[]; +extern unsigned short D_80185788[]; +extern unsigned short D_80185790[]; +extern unsigned char D_801ABC28[]; +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_801ABC20; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80185798[])(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_801ABD5C; +extern M2C_UNK D_801ABD60; +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_801ABCE8; +extern void (*D_801857C8[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801ABD64[]; +extern u8 D_801ABD6C[]; +extern u8 D_801ABD1C[]; +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_801857D0[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801857EC[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801857F4[])(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_8018585C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80185800; +extern u8 D_8018580C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80185890[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80185898[])(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_801858EC[])(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_80185920[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80185910[]; +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_8018593C; +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); +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_801859B4[])(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_801859BC[])(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_801859C4[])(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_801859CC[])(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_801859D4[])(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_801859DC[])(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_801859E8[])(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_801859F4[])(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_80185A00[])(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_80185A10[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80185A20[])(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_80185A28[])(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_80185A30[])(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_80185A38[])(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_80185A40[])(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_80185A48[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80185A50[])(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_80185A58[])(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_80185A60[])(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_80185A68[])(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_80185A70[])(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_80185A78[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80185A80[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80185A88[])(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_80185A90[])(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_80185A98[])(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_80185AA0[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80185AA8[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80185AB0[])(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_80185AB8[])(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_80185AC0[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80185AC8[])(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_80185AD0[])(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_80185B14[])(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_80185AD8; +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_80185B44[])(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_80185B80[])(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(s32); +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_80185BD8[])(); +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_80185BE8[])(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_80185BF0[])(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_80185D58[])(); +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_80185D64[])(); +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_801AB31C; +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 int func_801789AC(void); +extern s16 D_801ACA58; +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_801AC4A0; +extern short D_801ACACC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801AC8CC; +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_801AC8F4; +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_801AC8B0; +extern s32 func_8017A3B0(void); +extern short D_801AC8EC; +extern short D_801AC8E8; +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_801ACA28; +extern s16 D_801ACA2A; +extern s16 D_801ACA34; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801ACA28; + + 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_801ACA34); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801ACA28+0xC == &D_801ACA34; 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_801ACA28 + 0xC)) < 0x101) { + D_801ACA28 = 0; + D_801ACA2A = 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_801ACA34); + 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_801ACA28 + 0xC)) < 0x101) { + D_801ACA28 = 0; + D_801ACA2A = 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_801AC92C; + extern s16 D_801AC92E; + extern s16 D_801AC930; + extern s16 D_801AC924; + extern s16 D_801AC926; + extern s16 D_801AC928; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801AC92C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801AC92E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801AC930, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801AC924, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801AC926, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801AC928, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801AC8B4; +extern u16 D_801AC934; +extern u16 D_801AC936; +extern u16 D_801AC938; +extern s16 D_801ACA58; + +void func_8017B1D8(void) { + func_8012A418(); + D_801ACA58 = 0; + D_801AC8B4 = 0; + D_801AC934 = D_80126B5E; + D_801AC936 = D_80126B62; + D_801AC938 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80185EA0[]; + extern s16 D_801AC92C; + extern s16 D_801AC924; + 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_80185EA0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80185EA0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801AC92C; + s16 *p78C = &D_801AC924; + *(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_801ACA58 = 1; + D_801AC8B4 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801AC8D4; + extern SV4_8017B368 D_801AC8DC; + extern s16 D_801AC92C; + extern s16 D_801AC924; + extern u16 D_80185EA0; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801AC8D4; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801AC8DC; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80185EA0)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80185EA0)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801AC92C) = loc0; + (*(SV4_8017B368 *)&D_801AC924) = loc1; + D_801ACA58 = 1; + D_801AC8B4 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC05_003/nonmatchings/ov_SC05_003_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80185EA0[]; + extern s16 D_801AC92C; + extern s16 D_801AC92E; + extern s16 D_801AC930; + extern s16 D_801AC924; + extern s16 D_801AC926; + extern s16 D_801AC928; + 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_80185EA0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80185EA0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801AC92C; + s16 *p78C = &D_801AC924; + *(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_801AC92E; + v798 = D_801AC930; + v78C = *p78C; + v78E = D_801AC926; + v790 = D_801AC928; + __asm__ __volatile__(""); + D_801ACA58 = 1; + D_801AC8B4 = 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_801AC8B4; +extern s16 D_801AC92C; +extern s16 D_801AC92E; +extern s16 D_801AC930; +extern s16 D_801AC924; +extern s16 D_801AC926; +extern s16 D_801AC928; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801AC8B4 = 0; + D_801AC92C = (s16) D_80114F30; + D_801AC92E = (s16) D_80114F34; + D_801AC930 = (s16) D_80114F38; + D_801AC924 = (s16) D_80114F24; + D_801AC926 = (s16) D_80114F28; + D_801AC928 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801AC944; +extern s16 D_801AC946; +extern s16 D_801AC948; +extern s16 D_801AC94C; +extern s16 D_801AC94E; +extern s16 D_801AC950; + +void func_8017B824(void) { + D_801AC944 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801AC946 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801AC948 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801AC94C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801AC94E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801AC950 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801AC944; +extern s16 D_801AC946; +extern s16 D_801AC948; +extern s16 D_801AC94C; +extern s16 D_801AC94E; +extern s16 D_801AC950; + +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_801AC944; + D_80114F34 = D_801AC946; + D_80114F38 = D_801AC948; + D_80114F24 = D_801AC94C; + D_80114F28 = D_801AC94E; + D_80114F2C = D_801AC950; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801AC92C), src[8..15] -> (*(S8_8017B8E8 *)&D_801AC924) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801AC92C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801AC924) = ((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_801AC934; +extern u16 D_801AC936; +extern u16 D_801AC938; + +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_801AC8B4; +extern short D_801AC93C; +extern short D_801AC93E; +extern short D_801AC940; +extern s16 D_801AC92C; +extern s16 D_801AC92E; +extern s16 D_801AC930; +extern s16 D_801AC924; +extern s16 D_801AC926; +extern s16 D_801AC928; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801AC934); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801AC936); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801AC938); + (*(s16 *)&D_801AC93C) = buf[0]; + (*(s16 *)&D_801AC93E) = buf[1]; + (*(s16 *)&D_801AC940) = buf[2]; + D_801AC92C = D_80114F30 + buf[0]; + D_801AC8B4 = 0; + D_801AC92E = D_80114F34 + buf[1]; + D_801AC930 = D_80114F38 + buf[2]; + D_801AC924 = D_80114F24 + buf[0]; + D_801AC926 = D_80114F28 + buf[1]; + D_801AC928 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801AC8D4; +extern SV4 D_801AC8DC; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801AC8DC) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801AC8D4 = 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_801AC8DC = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801AC8DC)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801AC8D4) = 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_801AC8DC) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801AC8FC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801AC8FC; + 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_801AC8B4; +extern s16 D_801ACA58; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801AC8B4 = D_801AC8B4 + 1; + if (D_801AC8B4 >= 0x1F) { + D_801ACA58 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801AC8B4; +extern s16 D_801ACA58; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801AC8B4 = D_801AC8B4 + 1; + if (0x18 < D_801AC8B4) { + func_8012A4BC(); + D_801ACA58 = 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_801AC8B4; +extern void (*D_801AC8F8)(void); +extern short D_801AC93C; +extern short D_801AC93E; +extern short D_801AC940; +extern s16 D_801ACA58; + +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_801AC8B4 = D_801AC8B4 + 1; + if (D_801AC8B4 >= 0x19) { + if (D_801AC8F8 != 0) { + (*D_801AC8F8)(); + } else { + D_80114F30 = D_80114F30 + D_801AC93C; + D_80114F34 = D_80114F34 + D_801AC93E; + D_80114F38 = D_80114F38 + D_801AC940; + D_80114F24 = D_80114F24 + D_801AC93C; + D_80114F28 = D_80114F28 + D_801AC93E; + D_80114F2C = D_80114F2C + D_801AC940; + func_8012A4BC(); + } + D_801ACA58 = 0; + } +} + + + +extern void (*D_80185F40[])(void); + +void func_8017BE60(void *a0) { + D_80185F40[*(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) */ + diff --git a/src/ov_SC05_004/ov_SC05_004_jr_8017A4AC.c b/src/ov_SC05_004/ov_SC05_004_jr_8017A4AC.c index 46d6957eb..06af436e3 100644 --- a/src/ov_SC05_004/ov_SC05_004_jr_8017A4AC.c +++ b/src/ov_SC05_004/ov_SC05_004_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8019EFA4; - extern s16 D_8019EFA6; - extern s16 D_8019EFA8; - extern s16 D_8019EF9C; - extern s16 D_8019EF9E; - extern s16 D_8019EFA0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019EFA4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019EFA6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019EFA8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019EF9C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019EF9E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019EFA0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8019EF2C; -extern u16 D_8019EFAC; -extern u16 D_8019EFAE; -extern u16 D_8019EFB0; -extern s16 D_8019F2B0; - -void func_8017B1D8(void) { - func_8012A418(); - D_8019F2B0 = 0; - D_8019EF2C = 0; - D_8019EFAC = D_80126B5E; - D_8019EFAE = D_80126B62; - D_8019EFB0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80184FAC[]; - extern s16 D_8019EFA4; - extern s16 D_8019EF9C; - 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_80184FAC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80184FAC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019EFA4; - s16 *p78C = &D_8019EF9C; - *(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_8019F2B0 = 1; - D_8019EF2C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019EF4C; - extern SV4_8017B368 D_8019EF54; - extern s16 D_8019EFA4; - extern s16 D_8019EF9C; - extern u16 D_80184FAC; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8019EF4C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8019EF54; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80184FAC)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80184FAC)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8019EFA4) = loc0; - (*(SV4_8017B368 *)&D_8019EF9C) = loc1; - D_8019F2B0 = 1; - D_8019EF2C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80184FAC[]; - extern s16 D_8019EFA4; - extern s16 D_8019EFA6; - extern s16 D_8019EFA8; - extern s16 D_8019EF9C; - extern s16 D_8019EF9E; - extern s16 D_8019EFA0; - 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_80184FAC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80184FAC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019EFA4; - s16 *p78C = &D_8019EF9C; - *(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_8019EFA6; - v798 = D_8019EFA8; - v78C = *p78C; - v78E = D_8019EF9E; - v790 = D_8019EFA0; - __asm__ __volatile__(""); - D_8019F2B0 = 1; - D_8019EF2C = 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_8019EF2C; -extern s16 D_8019EFA4; -extern s16 D_8019EFA6; -extern s16 D_8019EFA8; -extern s16 D_8019EF9C; -extern s16 D_8019EF9E; -extern s16 D_8019EFA0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8019EF2C = 0; - D_8019EFA4 = (s16) D_80114F30; - D_8019EFA6 = (s16) D_80114F34; - D_8019EFA8 = (s16) D_80114F38; - D_8019EF9C = (s16) D_80114F24; - D_8019EF9E = (s16) D_80114F28; - D_8019EFA0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8019EFBC; -extern s16 D_8019EFBE; -extern s16 D_8019EFC0; -extern s16 D_8019EFC4; -extern s16 D_8019EFC6; -extern s16 D_8019EFC8; - -void func_8017B824(void) { - D_8019EFBC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8019EFBE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8019EFC0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8019EFC4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8019EFC6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8019EFC8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8019EFBC; -extern s16 D_8019EFBE; -extern s16 D_8019EFC0; -extern s16 D_8019EFC4; -extern s16 D_8019EFC6; -extern s16 D_8019EFC8; - -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_8019EFBC; - D_80114F34 = D_8019EFBE; - D_80114F38 = D_8019EFC0; - D_80114F24 = D_8019EFC4; - D_80114F28 = D_8019EFC6; - D_80114F2C = D_8019EFC8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8019EFA4), src[8..15] -> (*(S8_8017B8E8 *)&D_8019EF9C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8019EFA4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8019EF9C) = ((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_8019EFAC; -extern u16 D_8019EFAE; -extern u16 D_8019EFB0; - -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_8019EF2C; -extern short D_8019EFB4; -extern short D_8019EFB6; -extern short D_8019EFB8; -extern s16 D_8019EFA4; -extern s16 D_8019EFA6; -extern s16 D_8019EFA8; -extern s16 D_8019EF9C; -extern s16 D_8019EF9E; -extern s16 D_8019EFA0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019EFAC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019EFAE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019EFB0); - (*(s16 *)&D_8019EFB4) = buf[0]; - (*(s16 *)&D_8019EFB6) = buf[1]; - (*(s16 *)&D_8019EFB8) = buf[2]; - D_8019EFA4 = D_80114F30 + buf[0]; - D_8019EF2C = 0; - D_8019EFA6 = D_80114F34 + buf[1]; - D_8019EFA8 = D_80114F38 + buf[2]; - D_8019EF9C = D_80114F24 + buf[0]; - D_8019EF9E = D_80114F28 + buf[1]; - D_8019EFA0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8019EF4C; -extern SV4 D_8019EF54; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019EF54) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8019EF4C = 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_8019EF54 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019EF54)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8019EF4C) = 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_8019EF54) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8019EF74[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8019EF74; - 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_8019EF2C; -extern s16 D_8019F2B0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8019EF2C = D_8019EF2C + 1; - if (D_8019EF2C >= 0x1F) { - D_8019F2B0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8019EF2C; -extern s16 D_8019F2B0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8019EF2C = D_8019EF2C + 1; - if (0x18 < D_8019EF2C) { - func_8012A4BC(); - D_8019F2B0 = 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_8019EF2C; -extern void (*D_8019EF70)(void); -extern short D_8019EFB4; -extern short D_8019EFB6; -extern short D_8019EFB8; -extern s16 D_8019F2B0; - -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_8019EF2C = D_8019EF2C + 1; - if (D_8019EF2C >= 0x19) { - if (D_8019EF70 != 0) { - (*D_8019EF70)(); - } else { - D_80114F30 = D_80114F30 + D_8019EFB4; - D_80114F34 = D_80114F34 + D_8019EFB6; - D_80114F38 = D_80114F38 + D_8019EFB8; - D_80114F24 = D_80114F24 + D_8019EFB4; - D_80114F28 = D_80114F28 + D_8019EFB6; - D_80114F2C = D_80114F2C + D_8019EFB8; - func_8012A4BC(); - } - D_8019F2B0 = 0; - } -} - - - -extern void (*D_8018504C[])(void); - -void func_8017BE60(void *a0) { - D_8018504C[*(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) */ diff --git a/src/ov_SC05_004/ov_SC05_004_jr_8017AE2C.c b/src/ov_SC05_004/ov_SC05_004_jr_8017AE2C.c new file mode 100644 index 000000000..ad45004e2 --- /dev/null +++ b/src/ov_SC05_004/ov_SC05_004_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80183BA4; +extern u8 D_80183B14; +extern u8 D_80183AF0; +extern u8 D_80183ACC; +extern u8 D_80183B80; +extern u8 D_80183B5C; +extern u8 D_80183B38; +extern u8 D_80183AA8; +extern void func_80145934(void); +extern u8 D_80183C34; +extern u8 D_80183C10; +extern u8 D_80183BEC; +extern u8 D_80183BC8; +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_8018302C[]; +extern unsigned char D_8018305C[]; +extern unsigned char D_801830AC[]; +extern unsigned char D_801830DC[]; +extern unsigned char D_8018310C[]; +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(void); +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_8018315C[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80183224[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801832AC[]; +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_801832B4; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8019DE28; +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_8019DE2C; +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_801832E4; +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 void 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_8018338C[])(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_801833B0[])(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_801833A0; +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_801833C4[])(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_801833D0[]; +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_801833E0[])(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_801833F8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801833E8; +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_8018340C[])(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_80183428[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80183418; +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_8018343C[])(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_80183450[])(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_80183464; +extern void (*D_8018348C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018346C; +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_801834D8[])(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_801834DC[])(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(void *a0); +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_80183940[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80183950[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8019DE60; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80183978[])(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_80183958; +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_80183968; +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_801839B8[])(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_801839C0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018398C; +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_801839CC[])(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_8018399C; +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_8019DE68; +extern s32 D_8019DE74; +extern s32 D_8019DE78; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80183A08[])(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_801839DC[]; +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_8019DE70; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80183C58[])(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_80183A78[]; +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_80183CFC[])(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_80183E50[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80183C6C; +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_80183E58[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80183C7C; +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_80183C9C; +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_80183E60[])(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(void); +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_80183E88[])(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_80183E94[])(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_80183D08[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80183F38; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018301C[]; +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_80183F4C[]; +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_80183F88[]; +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_80183FD0; +extern u16 D_80183FD2; +extern u16 D_80183FD4; +extern s32 D_80183FD8; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80183FE0; +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_80183CEC; +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_80184064[]; +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_80184114[])(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_80184144[]; +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_801841A8; +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_8019DE80[]; +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_801841CC[])(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_8019DED8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80184214[])(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_80184204; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8019D6B8[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_8018421C[])(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_80184270[])(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_80184238; +extern s16 D_8018426C; +extern s16 D_8018426A; +extern s16 D_80184268; +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_8018427C[])(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_8019DF38; +extern u8 D_8019DF39; +extern u8 D_8019DF3A; +extern u8 D_8019DF3B; +extern u8 D_8019DF3C; +extern u8 D_8019DF3D; +extern u8 D_8019DF3E; +extern u8 D_8019DF3F; +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_8018428C[])(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_8019DF78; +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_801842D0[])(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_8018434C[]; +extern s32 D_8018436C[]; +extern u8 D_801843E8[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80184408[]; +extern u8 D_80184428[]; +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_801844C4[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80184540[])(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_8019D6C8; +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_8018454C[])(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_80184554[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018461C[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018462C[])(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_8018463C[])(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_80184648[])(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_801845A8[]; +extern u8 D_801845BC[]; +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_80184660[])(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_80184668[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80184670[])(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_80184678[])(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_80184680[])(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_80184688[])(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_80184690[])(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_80184744[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018474C[])(void); +extern void func_80169F00(void *a0); +extern char D_801846FC[]; +extern char D_801846BC[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80184784[])(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_80184790[])(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_801847D8[])(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_80184854[])(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_8019E298; +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_80184848[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018488C[]; +extern unsigned short D_80184894[]; +extern unsigned short D_8018489C[]; +extern unsigned char D_8019E2A0[]; +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_8019E298; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801848A4[])(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_8019E3D4; +extern M2C_UNK D_8019E3D8; +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_8019E360; +extern void (*D_801848D4[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8019E3DC[]; +extern u8 D_8019E3E4[]; +extern u8 D_8019E394[]; +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_801848DC[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801848F8[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80184900[])(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_80184968[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018490C; +extern u8 D_80184918; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018499C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801849A4[])(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_801849F8[])(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_80184A2C[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80184A1C[]; +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_80184A48; +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); +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_80184AC0[])(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_80184AC8[])(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_80184AD0[])(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_80184AD8[])(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_80184AE0[])(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_80184AE8[])(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_80184AF4[])(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_80184B00[])(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_80184B0C[])(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_80184B1C[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80184B2C[])(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_80184B34[])(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_80184B3C[])(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_80184B44[])(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_80184B4C[])(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_80184B54[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80184B5C[])(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_80184B64[])(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_80184B6C[])(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_80184B74[])(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_80184B7C[])(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_80184B84[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80184B8C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80184B94[])(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_80184B9C[])(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_80184BA4[])(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_80184BAC[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80184BB4[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80184BBC[])(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_80184BC4[])(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_80184BCC[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80184BD4[])(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_80184BDC[])(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_80184C20[])(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_80184BE4; +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_80184C50[])(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_80184C8C[])(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(s32); +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_80184CE4[])(); +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_80184CF4[])(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_80184CFC[])(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_80184E64[])(); +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_80184E70[])(); +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_8019D910; +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 int func_801789AC(void); +extern s16 D_8019F2B0; +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_8019EB18; +extern short D_8019F324; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8019EF44; +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_8019EF6C; +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_8019EF28; +extern s32 func_8017A3B0(void); +extern short D_8019EF64; +extern short D_8019EF60; +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_8019F280; +extern s16 D_8019F282; +extern s16 D_8019F28C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_8019F280; + + 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_8019F28C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_8019F280+0xC == &D_8019F28C; 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_8019F280 + 0xC)) < 0x101) { + D_8019F280 = 0; + D_8019F282 = 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_8019F28C); + 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_8019F280 + 0xC)) < 0x101) { + D_8019F280 = 0; + D_8019F282 = 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_8019EFA4; + extern s16 D_8019EFA6; + extern s16 D_8019EFA8; + extern s16 D_8019EF9C; + extern s16 D_8019EF9E; + extern s16 D_8019EFA0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019EFA4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019EFA6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019EFA8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019EF9C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019EF9E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019EFA0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8019EF2C; +extern u16 D_8019EFAC; +extern u16 D_8019EFAE; +extern u16 D_8019EFB0; +extern s16 D_8019F2B0; + +void func_8017B1D8(void) { + func_8012A418(); + D_8019F2B0 = 0; + D_8019EF2C = 0; + D_8019EFAC = D_80126B5E; + D_8019EFAE = D_80126B62; + D_8019EFB0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80184FAC[]; + extern s16 D_8019EFA4; + extern s16 D_8019EF9C; + 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_80184FAC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80184FAC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019EFA4; + s16 *p78C = &D_8019EF9C; + *(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_8019F2B0 = 1; + D_8019EF2C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019EF4C; + extern SV4_8017B368 D_8019EF54; + extern s16 D_8019EFA4; + extern s16 D_8019EF9C; + extern u16 D_80184FAC; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8019EF4C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8019EF54; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80184FAC)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80184FAC)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8019EFA4) = loc0; + (*(SV4_8017B368 *)&D_8019EF9C) = loc1; + D_8019F2B0 = 1; + D_8019EF2C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80184FAC[]; + extern s16 D_8019EFA4; + extern s16 D_8019EFA6; + extern s16 D_8019EFA8; + extern s16 D_8019EF9C; + extern s16 D_8019EF9E; + extern s16 D_8019EFA0; + 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_80184FAC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80184FAC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019EFA4; + s16 *p78C = &D_8019EF9C; + *(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_8019EFA6; + v798 = D_8019EFA8; + v78C = *p78C; + v78E = D_8019EF9E; + v790 = D_8019EFA0; + __asm__ __volatile__(""); + D_8019F2B0 = 1; + D_8019EF2C = 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_8019EF2C; +extern s16 D_8019EFA4; +extern s16 D_8019EFA6; +extern s16 D_8019EFA8; +extern s16 D_8019EF9C; +extern s16 D_8019EF9E; +extern s16 D_8019EFA0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8019EF2C = 0; + D_8019EFA4 = (s16) D_80114F30; + D_8019EFA6 = (s16) D_80114F34; + D_8019EFA8 = (s16) D_80114F38; + D_8019EF9C = (s16) D_80114F24; + D_8019EF9E = (s16) D_80114F28; + D_8019EFA0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8019EFBC; +extern s16 D_8019EFBE; +extern s16 D_8019EFC0; +extern s16 D_8019EFC4; +extern s16 D_8019EFC6; +extern s16 D_8019EFC8; + +void func_8017B824(void) { + D_8019EFBC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8019EFBE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8019EFC0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8019EFC4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8019EFC6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8019EFC8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8019EFBC; +extern s16 D_8019EFBE; +extern s16 D_8019EFC0; +extern s16 D_8019EFC4; +extern s16 D_8019EFC6; +extern s16 D_8019EFC8; + +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_8019EFBC; + D_80114F34 = D_8019EFBE; + D_80114F38 = D_8019EFC0; + D_80114F24 = D_8019EFC4; + D_80114F28 = D_8019EFC6; + D_80114F2C = D_8019EFC8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8019EFA4), src[8..15] -> (*(S8_8017B8E8 *)&D_8019EF9C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8019EFA4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8019EF9C) = ((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_8019EFAC; +extern u16 D_8019EFAE; +extern u16 D_8019EFB0; + +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_8019EF2C; +extern short D_8019EFB4; +extern short D_8019EFB6; +extern short D_8019EFB8; +extern s16 D_8019EFA4; +extern s16 D_8019EFA6; +extern s16 D_8019EFA8; +extern s16 D_8019EF9C; +extern s16 D_8019EF9E; +extern s16 D_8019EFA0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019EFAC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019EFAE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019EFB0); + (*(s16 *)&D_8019EFB4) = buf[0]; + (*(s16 *)&D_8019EFB6) = buf[1]; + (*(s16 *)&D_8019EFB8) = buf[2]; + D_8019EFA4 = D_80114F30 + buf[0]; + D_8019EF2C = 0; + D_8019EFA6 = D_80114F34 + buf[1]; + D_8019EFA8 = D_80114F38 + buf[2]; + D_8019EF9C = D_80114F24 + buf[0]; + D_8019EF9E = D_80114F28 + buf[1]; + D_8019EFA0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8019EF4C; +extern SV4 D_8019EF54; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019EF54) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8019EF4C = 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_8019EF54 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019EF54)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8019EF4C) = 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_8019EF54) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8019EF74[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8019EF74; + 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_8019EF2C; +extern s16 D_8019F2B0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8019EF2C = D_8019EF2C + 1; + if (D_8019EF2C >= 0x1F) { + D_8019F2B0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8019EF2C; +extern s16 D_8019F2B0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8019EF2C = D_8019EF2C + 1; + if (0x18 < D_8019EF2C) { + func_8012A4BC(); + D_8019F2B0 = 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_8019EF2C; +extern void (*D_8019EF70)(void); +extern short D_8019EFB4; +extern short D_8019EFB6; +extern short D_8019EFB8; +extern s16 D_8019F2B0; + +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_8019EF2C = D_8019EF2C + 1; + if (D_8019EF2C >= 0x19) { + if (D_8019EF70 != 0) { + (*D_8019EF70)(); + } else { + D_80114F30 = D_80114F30 + D_8019EFB4; + D_80114F34 = D_80114F34 + D_8019EFB6; + D_80114F38 = D_80114F38 + D_8019EFB8; + D_80114F24 = D_80114F24 + D_8019EFB4; + D_80114F28 = D_80114F28 + D_8019EFB6; + D_80114F2C = D_80114F2C + D_8019EFB8; + func_8012A4BC(); + } + D_8019F2B0 = 0; + } +} + + + +extern void (*D_8018504C[])(void); + +void func_8017BE60(void *a0) { + D_8018504C[*(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) */ + diff --git a/src/ov_SC05_005/ov_SC05_005_jr_8017A4AC.c b/src/ov_SC05_005/ov_SC05_005_jr_8017A4AC.c index e009f08b1..4ae8bce89 100644 --- a/src/ov_SC05_005/ov_SC05_005_jr_8017A4AC.c +++ b/src/ov_SC05_005/ov_SC05_005_jr_8017A4AC.c @@ -2946,664 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801B1C0C; - extern s16 D_801B1C0E; - extern s16 D_801B1C10; - extern s16 D_801B1C04; - extern s16 D_801B1C06; - extern s16 D_801B1C08; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B1C0C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B1C0E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B1C10, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B1C04, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B1C06, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B1C08, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801B1B94; -extern u16 D_801B1C14; -extern u16 D_801B1C16; -extern u16 D_801B1C18; -extern s16 D_801B1FB8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801B1FB8 = 0; - D_801B1B94 = 0; - D_801B1C14 = D_80126B5E; - D_801B1C16 = D_80126B62; - D_801B1C18 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80185D80[]; - extern s16 D_801B1C0C; - extern s16 D_801B1C04; - 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_80185D80[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80185D80[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B1C0C; - s16 *p78C = &D_801B1C04; - *(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_801B1FB8 = 1; - D_801B1B94 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B1BB4; - extern SV4_8017B368 D_801B1BBC; - extern s16 D_801B1C0C; - extern s16 D_801B1C04; - extern u16 D_80185D80; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801B1BB4; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801B1BBC; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80185D80)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80185D80)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801B1C0C) = loc0; - (*(SV4_8017B368 *)&D_801B1C04) = loc1; - D_801B1FB8 = 1; - D_801B1B94 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80185D80[]; - extern s16 D_801B1C0C; - extern s16 D_801B1C0E; - extern s16 D_801B1C10; - extern s16 D_801B1C04; - extern s16 D_801B1C06; - extern s16 D_801B1C08; - 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_80185D80[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80185D80[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B1C0C; - s16 *p78C = &D_801B1C04; - *(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_801B1C0E; - v798 = D_801B1C10; - v78C = *p78C; - v78E = D_801B1C06; - v790 = D_801B1C08; - __asm__ __volatile__(""); - D_801B1FB8 = 1; - D_801B1B94 = 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_801B1B94; -extern s16 D_801B1C0C; -extern s16 D_801B1C0E; -extern s16 D_801B1C10; -extern s16 D_801B1C04; -extern s16 D_801B1C06; -extern s16 D_801B1C08; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801B1B94 = 0; - D_801B1C0C = (s16) D_80114F30; - D_801B1C0E = (s16) D_80114F34; - D_801B1C10 = (s16) D_80114F38; - D_801B1C04 = (s16) D_80114F24; - D_801B1C06 = (s16) D_80114F28; - D_801B1C08 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801B1C24; -extern s16 D_801B1C26; -extern s16 D_801B1C28; -extern s16 D_801B1C2C; -extern s16 D_801B1C2E; -extern s16 D_801B1C30; - -void func_8017B824(void) { - D_801B1C24 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801B1C26 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801B1C28 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801B1C2C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801B1C2E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801B1C30 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801B1C24; -extern s16 D_801B1C26; -extern s16 D_801B1C28; -extern s16 D_801B1C2C; -extern s16 D_801B1C2E; -extern s16 D_801B1C30; - -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_801B1C24; - D_80114F34 = D_801B1C26; - D_80114F38 = D_801B1C28; - D_80114F24 = D_801B1C2C; - D_80114F28 = D_801B1C2E; - D_80114F2C = D_801B1C30; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801B1C0C), src[8..15] -> (*(S8_8017B8E8 *)&D_801B1C04) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801B1C0C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801B1C04) = ((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_801B1C14; -extern u16 D_801B1C16; -extern u16 D_801B1C18; - -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_801B1B94; -extern short D_801B1C1C; -extern short D_801B1C1E; -extern short D_801B1C20; -extern s16 D_801B1C0C; -extern s16 D_801B1C0E; -extern s16 D_801B1C10; -extern s16 D_801B1C04; -extern s16 D_801B1C06; -extern s16 D_801B1C08; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B1C14); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B1C16); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B1C18); - (*(s16 *)&D_801B1C1C) = buf[0]; - (*(s16 *)&D_801B1C1E) = buf[1]; - (*(s16 *)&D_801B1C20) = buf[2]; - D_801B1C0C = D_80114F30 + buf[0]; - D_801B1B94 = 0; - D_801B1C0E = D_80114F34 + buf[1]; - D_801B1C10 = D_80114F38 + buf[2]; - D_801B1C04 = D_80114F24 + buf[0]; - D_801B1C06 = D_80114F28 + buf[1]; - D_801B1C08 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801B1BB4; -extern SV4 D_801B1BBC; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B1BBC) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801B1BB4 = 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_801B1BBC = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B1BBC)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801B1BB4) = 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_801B1BBC) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801B1BDC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801B1BDC; - 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_801B1B94; -extern s16 D_801B1FB8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801B1B94 = D_801B1B94 + 1; - if (D_801B1B94 >= 0x1F) { - D_801B1FB8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801B1B94; -extern s16 D_801B1FB8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801B1B94 = D_801B1B94 + 1; - if (0x18 < D_801B1B94) { - func_8012A4BC(); - D_801B1FB8 = 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_801B1B94; -extern void (*D_801B1BD8)(void); -extern short D_801B1C1C; -extern short D_801B1C1E; -extern short D_801B1C20; -extern s16 D_801B1FB8; - -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_801B1B94 = D_801B1B94 + 1; - if (D_801B1B94 >= 0x19) { - if (D_801B1BD8 != 0) { - (*D_801B1BD8)(); - } else { - D_80114F30 = D_80114F30 + D_801B1C1C; - D_80114F34 = D_80114F34 + D_801B1C1E; - D_80114F38 = D_80114F38 + D_801B1C20; - D_80114F24 = D_80114F24 + D_801B1C1C; - D_80114F28 = D_80114F28 + D_801B1C1E; - D_80114F2C = D_80114F2C + D_801B1C20; - func_8012A4BC(); - } - D_801B1FB8 = 0; - } -} - - - -extern void (*D_80185E20[])(void); - -void func_8017BE60(void *a0) { - D_80185E20[*(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) */ - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017BEBC); - - -extern void (*D_80185E58[])(void); - -void func_8017BEF8(void *a0) { - D_80185E58[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017BF34); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017BF84); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017BFE0); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017C064); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017C1CC); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017C218); - - -extern void (*D_80185E6C[])(void); - -void func_8017C524(void *a0) { - D_80185E6C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017C560); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017C5A0); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017C610); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017C69C); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017C770); - - -extern void (*D_80185E80[])(void); - -void func_8017C7C4(void *a0) { - D_80185E80[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017C800); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017C8B4); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017C910); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017CA80); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017CBB0); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017CF3C); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017D1B4); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017D2FC); - - -extern void (*D_80185F98[])(void); - -void func_8017D47C(void *a0) { - D_80185F98[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017D4B8); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017D504); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017D5F8); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017D678); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017D72C); - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017D798); - -extern void func_8012C218(void *a0); - void func_8017D824(void) { - ((void (*)(void))func_8012C218)(); - } - - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017A4AC", func_8017D844); diff --git a/src/ov_SC05_005/ov_SC05_005_jr_8017AE2C.c b/src/ov_SC05_005/ov_SC05_005_jr_8017AE2C.c new file mode 100644 index 000000000..d4b386e36 --- /dev/null +++ b/src/ov_SC05_005/ov_SC05_005_jr_8017AE2C.c @@ -0,0 +1,3541 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80184978; +extern u8 D_801848E8; +extern u8 D_801848C4; +extern u8 D_801848A0; +extern u8 D_80184954; +extern u8 D_80184930; +extern u8 D_8018490C; +extern u8 D_8018487C; +extern void func_80145934(void); +extern u8 D_80184A08; +extern u8 D_801849E4; +extern u8 D_801849C0; +extern u8 D_8018499C; +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_80183E00[]; +extern unsigned char D_80183E30[]; +extern unsigned char D_80183E80[]; +extern unsigned char D_80183EB0[]; +extern unsigned char D_80183EE0[]; +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(void); +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_80183F30[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80183FF8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80184080[]; +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_80184088; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801B0A90; +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_801B0A94; +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_801840B8; +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 void 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_80184160[])(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_80184184[])(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_80184174; +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_80184198[])(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_801841A4[]; +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_801841B4[])(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_801841CC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801841BC; +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_801841E0[])(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_801841FC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801841EC; +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_80184210[])(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_80184224[])(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_80184238; +extern void (*D_80184260[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80184240; +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_801842AC[])(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_801842B0[])(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(void *a0); +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_80184714[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80184724[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801B0AC8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018474C[])(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_8018472C; +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_8018473C; +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_8018478C[])(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_80184794[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80184760; +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_801847A0[])(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_80184770; +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_801B0AD0; +extern s32 D_801B0ADC; +extern s32 D_801B0AE0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801847DC[])(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_801847B0[]; +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_801B0AD8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80184A2C[])(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_8018484C[]; +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_80184AD0[])(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_80184C24[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80184A40; +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_80184C2C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80184A50; +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_80184A70; +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_80184C34[])(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(void); +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_80184C5C[])(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_80184C68[])(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_80184ADC[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80184D0C; +extern void func_8015D380(s32 a0); +extern unsigned char D_80183DF0[]; +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_80184D20[]; +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_80184D5C[]; +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_80184DA4; +extern u16 D_80184DA6; +extern u16 D_80184DA8; +extern s32 D_80184DAC; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80184DB4; +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_80184AC0; +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_80184E38[]; +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_80184EE8[])(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_80184F18[]; +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_80184F7C; +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_801B0AE8[]; +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_80184FA0[])(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_801B0B40[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80184FE8[])(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_80184FD8; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801B03A0[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_80184FF0[])(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_80185044[])(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_8018500C; +extern s16 D_80185040; +extern s16 D_8018503E; +extern s16 D_8018503C; +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_80185050[])(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_801B0BA0; +extern u8 D_801B0BA1; +extern u8 D_801B0BA2; +extern u8 D_801B0BA3; +extern u8 D_801B0BA4; +extern u8 D_801B0BA5; +extern u8 D_801B0BA6; +extern u8 D_801B0BA7; +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_80185060[])(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_801B0BE0; +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_801850A4[])(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_80185120[]; +extern s32 D_80185140[]; +extern u8 D_801851BC[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801851DC[]; +extern u8 D_801851FC[]; +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_80185298[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80185314[])(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_801B03B0; +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_80185320[])(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_80185328[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801853F0[])(void); +extern void func_80166618(void *a0); +extern void (*D_80185400[])(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_80185410[])(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_8018541C[])(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_8018537C[]; +extern u8 D_80185390[]; +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_80185434[])(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_8018543C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80185444[])(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_8018544C[])(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_80185454[])(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_8018545C[])(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_80185464[])(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_80185518[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80185520[])(void); +extern void func_80169F00(void *a0); +extern char D_801854D0[]; +extern char D_80185490[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80185558[])(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_80185564[])(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_801855AC[])(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_80185628[])(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_801B0F00; +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_8018561C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80185660[]; +extern unsigned short D_80185668[]; +extern unsigned short D_80185670[]; +extern unsigned char D_801B0F08[]; +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_801B0F00; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80185678[])(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_801B103C; +extern M2C_UNK D_801B1040; +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_801B0FC8; +extern void (*D_801856A8[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801B1044[]; +extern u8 D_801B104C[]; +extern u8 D_801B0FFC[]; +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_801856B0[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801856CC[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801856D4[])(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_8018573C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801856E0; +extern u8 D_801856EC; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80185770[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80185778[])(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_801857CC[])(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_80185800[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801857F0[]; +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_8018581C; +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); +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_80185894[])(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_8018589C[])(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_801858A4[])(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_801858AC[])(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_801858B4[])(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_801858BC[])(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_801858C8[])(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_801858D4[])(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_801858E0[])(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_801858F0[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80185900[])(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_80185908[])(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_80185910[])(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_80185918[])(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_80185920[])(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_80185928[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80185930[])(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_80185938[])(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_80185940[])(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_80185948[])(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_80185950[])(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_80185958[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80185960[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80185968[])(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_80185970[])(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_80185978[])(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_80185980[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80185988[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80185990[])(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_80185998[])(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_801859A0[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801859A8[])(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_801859B0[])(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_801859F4[])(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_801859B8; +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_80185A24[])(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_80185A60[])(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(s32); +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_80185AB8[])(); +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_80185AC8[])(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_80185AD0[])(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_80185C38[])(); +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_80185C44[])(); +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_801B05F8; +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 int func_801789AC(void); +extern s16 D_801B1FB8; +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_801B1780; +extern short D_801B202C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801B1BAC; +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_801B1BD4; +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_801B1B90; +extern s32 func_8017A3B0(void); +extern short D_801B1BCC; +extern short D_801B1BC8; +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_801B1F88; +extern s16 D_801B1F8A; +extern s16 D_801B1F94; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801B1F88; + + 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_801B1F94); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801B1F88+0xC == &D_801B1F94; 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_801B1F88 + 0xC)) < 0x101) { + D_801B1F88 = 0; + D_801B1F8A = 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_801B1F94); + 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_801B1F88 + 0xC)) < 0x101) { + D_801B1F88 = 0; + D_801B1F8A = 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_801B1C0C; + extern s16 D_801B1C0E; + extern s16 D_801B1C10; + extern s16 D_801B1C04; + extern s16 D_801B1C06; + extern s16 D_801B1C08; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B1C0C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B1C0E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B1C10, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B1C04, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B1C06, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B1C08, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801B1B94; +extern u16 D_801B1C14; +extern u16 D_801B1C16; +extern u16 D_801B1C18; +extern s16 D_801B1FB8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801B1FB8 = 0; + D_801B1B94 = 0; + D_801B1C14 = D_80126B5E; + D_801B1C16 = D_80126B62; + D_801B1C18 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80185D80[]; + extern s16 D_801B1C0C; + extern s16 D_801B1C04; + 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_80185D80[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80185D80[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B1C0C; + s16 *p78C = &D_801B1C04; + *(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_801B1FB8 = 1; + D_801B1B94 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B1BB4; + extern SV4_8017B368 D_801B1BBC; + extern s16 D_801B1C0C; + extern s16 D_801B1C04; + extern u16 D_80185D80; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801B1BB4; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801B1BBC; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80185D80)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80185D80)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801B1C0C) = loc0; + (*(SV4_8017B368 *)&D_801B1C04) = loc1; + D_801B1FB8 = 1; + D_801B1B94 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80185D80[]; + extern s16 D_801B1C0C; + extern s16 D_801B1C0E; + extern s16 D_801B1C10; + extern s16 D_801B1C04; + extern s16 D_801B1C06; + extern s16 D_801B1C08; + 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_80185D80[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80185D80[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B1C0C; + s16 *p78C = &D_801B1C04; + *(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_801B1C0E; + v798 = D_801B1C10; + v78C = *p78C; + v78E = D_801B1C06; + v790 = D_801B1C08; + __asm__ __volatile__(""); + D_801B1FB8 = 1; + D_801B1B94 = 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_801B1B94; +extern s16 D_801B1C0C; +extern s16 D_801B1C0E; +extern s16 D_801B1C10; +extern s16 D_801B1C04; +extern s16 D_801B1C06; +extern s16 D_801B1C08; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801B1B94 = 0; + D_801B1C0C = (s16) D_80114F30; + D_801B1C0E = (s16) D_80114F34; + D_801B1C10 = (s16) D_80114F38; + D_801B1C04 = (s16) D_80114F24; + D_801B1C06 = (s16) D_80114F28; + D_801B1C08 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801B1C24; +extern s16 D_801B1C26; +extern s16 D_801B1C28; +extern s16 D_801B1C2C; +extern s16 D_801B1C2E; +extern s16 D_801B1C30; + +void func_8017B824(void) { + D_801B1C24 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801B1C26 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801B1C28 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801B1C2C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801B1C2E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801B1C30 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801B1C24; +extern s16 D_801B1C26; +extern s16 D_801B1C28; +extern s16 D_801B1C2C; +extern s16 D_801B1C2E; +extern s16 D_801B1C30; + +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_801B1C24; + D_80114F34 = D_801B1C26; + D_80114F38 = D_801B1C28; + D_80114F24 = D_801B1C2C; + D_80114F28 = D_801B1C2E; + D_80114F2C = D_801B1C30; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801B1C0C), src[8..15] -> (*(S8_8017B8E8 *)&D_801B1C04) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801B1C0C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801B1C04) = ((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_801B1C14; +extern u16 D_801B1C16; +extern u16 D_801B1C18; + +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_801B1B94; +extern short D_801B1C1C; +extern short D_801B1C1E; +extern short D_801B1C20; +extern s16 D_801B1C0C; +extern s16 D_801B1C0E; +extern s16 D_801B1C10; +extern s16 D_801B1C04; +extern s16 D_801B1C06; +extern s16 D_801B1C08; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B1C14); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B1C16); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B1C18); + (*(s16 *)&D_801B1C1C) = buf[0]; + (*(s16 *)&D_801B1C1E) = buf[1]; + (*(s16 *)&D_801B1C20) = buf[2]; + D_801B1C0C = D_80114F30 + buf[0]; + D_801B1B94 = 0; + D_801B1C0E = D_80114F34 + buf[1]; + D_801B1C10 = D_80114F38 + buf[2]; + D_801B1C04 = D_80114F24 + buf[0]; + D_801B1C06 = D_80114F28 + buf[1]; + D_801B1C08 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801B1BB4; +extern SV4 D_801B1BBC; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B1BBC) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801B1BB4 = 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_801B1BBC = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B1BBC)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801B1BB4) = 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_801B1BBC) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801B1BDC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801B1BDC; + 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_801B1B94; +extern s16 D_801B1FB8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801B1B94 = D_801B1B94 + 1; + if (D_801B1B94 >= 0x1F) { + D_801B1FB8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801B1B94; +extern s16 D_801B1FB8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801B1B94 = D_801B1B94 + 1; + if (0x18 < D_801B1B94) { + func_8012A4BC(); + D_801B1FB8 = 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_801B1B94; +extern void (*D_801B1BD8)(void); +extern short D_801B1C1C; +extern short D_801B1C1E; +extern short D_801B1C20; +extern s16 D_801B1FB8; + +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_801B1B94 = D_801B1B94 + 1; + if (D_801B1B94 >= 0x19) { + if (D_801B1BD8 != 0) { + (*D_801B1BD8)(); + } else { + D_80114F30 = D_80114F30 + D_801B1C1C; + D_80114F34 = D_80114F34 + D_801B1C1E; + D_80114F38 = D_80114F38 + D_801B1C20; + D_80114F24 = D_80114F24 + D_801B1C1C; + D_80114F28 = D_80114F28 + D_801B1C1E; + D_80114F2C = D_80114F2C + D_801B1C20; + func_8012A4BC(); + } + D_801B1FB8 = 0; + } +} + + + +extern void (*D_80185E20[])(void); + +void func_8017BE60(void *a0) { + D_80185E20[*(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) */ + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017BEBC); + + +extern void (*D_80185E58[])(void); + +void func_8017BEF8(void *a0) { + D_80185E58[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017BF34); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017BF84); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017BFE0); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017C064); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017C1CC); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017C218); + + +extern void (*D_80185E6C[])(void); + +void func_8017C524(void *a0) { + D_80185E6C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017C560); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017C5A0); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017C610); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017C69C); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017C770); + + +extern void (*D_80185E80[])(void); + +void func_8017C7C4(void *a0) { + D_80185E80[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017C800); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017C8B4); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017C910); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017CA80); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017CBB0); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017CF3C); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017D1B4); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017D2FC); + + +extern void (*D_80185F98[])(void); + +void func_8017D47C(void *a0) { + D_80185F98[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017D4B8); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017D504); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017D5F8); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017D678); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017D72C); + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017D798); + +extern void func_8012C218(void *a0); + void func_8017D824(void) { + ((void (*)(void))func_8012C218)(); + } + + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017AE2C", func_8017D844); + diff --git a/src/ov_SC05_006/ov_SC05_006_jr_8017A4AC.c b/src/ov_SC05_006/ov_SC05_006_jr_8017A4AC.c index bc37eeb45..441f83780 100644 --- a/src/ov_SC05_006/ov_SC05_006_jr_8017A4AC.c +++ b/src/ov_SC05_006/ov_SC05_006_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC05_006/nonmatchings/ov_SC05_006_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8018FD44; - extern s16 D_8018FD46; - extern s16 D_8018FD48; - extern s16 D_8018FD3C; - extern s16 D_8018FD3E; - extern s16 D_8018FD40; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8018FD44, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8018FD46, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8018FD48, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8018FD3C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8018FD3E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8018FD40, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8018FCCC; -extern u16 D_8018FD4C; -extern u16 D_8018FD4E; -extern u16 D_8018FD50; -extern s16 D_801900E8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801900E8 = 0; - D_8018FCCC = 0; - D_8018FD4C = D_80126B5E; - D_8018FD4E = D_80126B62; - D_8018FD50 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80182DA0[]; - extern s16 D_8018FD44; - extern s16 D_8018FD3C; - 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_80182DA0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182DA0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8018FD44; - s16 *p78C = &D_8018FD3C; - *(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_801900E8 = 1; - D_8018FCCC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8018FCEC; - extern SV4_8017B368 D_8018FCF4; - extern s16 D_8018FD44; - extern s16 D_8018FD3C; - extern u16 D_80182DA0; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8018FCEC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8018FCF4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80182DA0)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80182DA0)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8018FD44) = loc0; - (*(SV4_8017B368 *)&D_8018FD3C) = loc1; - D_801900E8 = 1; - D_8018FCCC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC05_006/nonmatchings/ov_SC05_006_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80182DA0[]; - extern s16 D_8018FD44; - extern s16 D_8018FD46; - extern s16 D_8018FD48; - extern s16 D_8018FD3C; - extern s16 D_8018FD3E; - extern s16 D_8018FD40; - 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_80182DA0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182DA0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8018FD44; - s16 *p78C = &D_8018FD3C; - *(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_8018FD46; - v798 = D_8018FD48; - v78C = *p78C; - v78E = D_8018FD3E; - v790 = D_8018FD40; - __asm__ __volatile__(""); - D_801900E8 = 1; - D_8018FCCC = 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_8018FCCC; -extern s16 D_8018FD44; -extern s16 D_8018FD46; -extern s16 D_8018FD48; -extern s16 D_8018FD3C; -extern s16 D_8018FD3E; -extern s16 D_8018FD40; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8018FCCC = 0; - D_8018FD44 = (s16) D_80114F30; - D_8018FD46 = (s16) D_80114F34; - D_8018FD48 = (s16) D_80114F38; - D_8018FD3C = (s16) D_80114F24; - D_8018FD3E = (s16) D_80114F28; - D_8018FD40 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8018FD5C; -extern s16 D_8018FD5E; -extern s16 D_8018FD60; -extern s16 D_8018FD64; -extern s16 D_8018FD66; -extern s16 D_8018FD68; - -void func_8017B824(void) { - D_8018FD5C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8018FD5E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8018FD60 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8018FD64 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8018FD66 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8018FD68 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8018FD5C; -extern s16 D_8018FD5E; -extern s16 D_8018FD60; -extern s16 D_8018FD64; -extern s16 D_8018FD66; -extern s16 D_8018FD68; - -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_8018FD5C; - D_80114F34 = D_8018FD5E; - D_80114F38 = D_8018FD60; - D_80114F24 = D_8018FD64; - D_80114F28 = D_8018FD66; - D_80114F2C = D_8018FD68; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8018FD44), src[8..15] -> (*(S8_8017B8E8 *)&D_8018FD3C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8018FD44) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8018FD3C) = ((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_8018FD4C; -extern u16 D_8018FD4E; -extern u16 D_8018FD50; - -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_8018FCCC; -extern short D_8018FD54; -extern short D_8018FD56; -extern short D_8018FD58; -extern s16 D_8018FD44; -extern s16 D_8018FD46; -extern s16 D_8018FD48; -extern s16 D_8018FD3C; -extern s16 D_8018FD3E; -extern s16 D_8018FD40; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8018FD4C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8018FD4E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8018FD50); - (*(s16 *)&D_8018FD54) = buf[0]; - (*(s16 *)&D_8018FD56) = buf[1]; - (*(s16 *)&D_8018FD58) = buf[2]; - D_8018FD44 = D_80114F30 + buf[0]; - D_8018FCCC = 0; - D_8018FD46 = D_80114F34 + buf[1]; - D_8018FD48 = D_80114F38 + buf[2]; - D_8018FD3C = D_80114F24 + buf[0]; - D_8018FD3E = D_80114F28 + buf[1]; - D_8018FD40 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8018FCEC; -extern SV4 D_8018FCF4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8018FCF4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8018FCEC = 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_8018FCF4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8018FCF4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8018FCEC) = 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_8018FCF4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8018FD14[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8018FD14; - 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_8018FCCC; -extern s16 D_801900E8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8018FCCC = D_8018FCCC + 1; - if (D_8018FCCC >= 0x1F) { - D_801900E8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8018FCCC; -extern s16 D_801900E8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8018FCCC = D_8018FCCC + 1; - if (0x18 < D_8018FCCC) { - func_8012A4BC(); - D_801900E8 = 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_8018FCCC; -extern void (*D_8018FD10)(void); -extern short D_8018FD54; -extern short D_8018FD56; -extern short D_8018FD58; -extern s16 D_801900E8; - -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_8018FCCC = D_8018FCCC + 1; - if (D_8018FCCC >= 0x19) { - if (D_8018FD10 != 0) { - (*D_8018FD10)(); - } else { - D_80114F30 = D_80114F30 + D_8018FD54; - D_80114F34 = D_80114F34 + D_8018FD56; - D_80114F38 = D_80114F38 + D_8018FD58; - D_80114F24 = D_80114F24 + D_8018FD54; - D_80114F28 = D_80114F28 + D_8018FD56; - D_80114F2C = D_80114F2C + D_8018FD58; - func_8012A4BC(); - } - D_801900E8 = 0; - } -} - - - -extern void (*D_80182E40[])(void); - -void func_8017BE60(void *a0) { - D_80182E40[*(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) */ diff --git a/src/ov_SC05_006/ov_SC05_006_jr_8017AE2C.c b/src/ov_SC05_006/ov_SC05_006_jr_8017AE2C.c new file mode 100644 index 000000000..f70c9c97c --- /dev/null +++ b/src/ov_SC05_006/ov_SC05_006_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80181998; +extern u8 D_80181908; +extern u8 D_801818E4; +extern u8 D_801818C0; +extern u8 D_80181974; +extern u8 D_80181950; +extern u8 D_8018192C; +extern u8 D_8018189C; +extern void func_80145934(void); +extern u8 D_80181A28; +extern u8 D_80181A04; +extern u8 D_801819E0; +extern u8 D_801819BC; +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_80180E20[]; +extern unsigned char D_80180E50[]; +extern unsigned char D_80180EA0[]; +extern unsigned char D_80180ED0[]; +extern unsigned char D_80180F00[]; +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(void); +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_80180F50[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80181018[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801810A0[]; +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_801810A8; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8018EBC8; +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_8018EBCC; +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_801810D8; +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 void 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_80181180[])(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_801811A4[])(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_80181194; +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_801811B8[])(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_801811C4[]; +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_801811D4[])(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_801811EC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801811DC; +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_80181200[])(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_8018121C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018120C; +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_80181230[])(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_80181244[])(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_80181258; +extern void (*D_80181280[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80181260; +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_801812CC[])(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_801812D0[])(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(void *a0); +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_80181734[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80181744[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8018EC00; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018176C[])(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_8018174C; +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_8018175C; +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_801817AC[])(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_801817B4[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80181780; +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_801817C0[])(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_80181790; +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_8018EC08; +extern s32 D_8018EC14; +extern s32 D_8018EC18; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801817FC[])(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_801817D0[]; +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_8018EC10; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80181A4C[])(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_8018186C[]; +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_80181AF0[])(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_80181C44[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80181A60; +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_80181C4C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80181A70; +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_80181A90; +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_80181C54[])(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(void); +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_80181C7C[])(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_80181C88[])(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_80181AFC[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80181D2C; +extern void func_8015D380(s32 a0); +extern unsigned char D_80180E10[]; +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_80181D40[]; +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_80181D7C[]; +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_80181DC4; +extern u16 D_80181DC6; +extern u16 D_80181DC8; +extern s32 D_80181DCC; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80181DD4; +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_80181AE0; +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_80181E58[]; +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_80181F08[])(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_80181F38[]; +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_80181F9C; +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_8018EC20[]; +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_80181FC0[])(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_8018EC78[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80182008[])(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_80181FF8; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8018E4F0[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_80182010[])(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_80182064[])(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_8018202C; +extern s16 D_80182060; +extern s16 D_8018205E; +extern s16 D_8018205C; +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_80182070[])(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_8018ECD8; +extern u8 D_8018ECD9; +extern u8 D_8018ECDA; +extern u8 D_8018ECDB; +extern u8 D_8018ECDC; +extern u8 D_8018ECDD; +extern u8 D_8018ECDE; +extern u8 D_8018ECDF; +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_80182080[])(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_8018ED18; +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_801820C4[])(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_80182140[]; +extern s32 D_80182160[]; +extern u8 D_801821DC[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801821FC[]; +extern u8 D_8018221C[]; +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_801822B8[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80182334[])(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_8018E500; +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_80182340[])(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_80182348[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80182410[])(void); +extern void func_80166618(void *a0); +extern void (*D_80182420[])(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_80182430[])(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_8018243C[])(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_8018239C[]; +extern u8 D_801823B0[]; +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_80182454[])(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_8018245C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80182464[])(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_8018246C[])(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_80182474[])(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_8018247C[])(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_80182484[])(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_80182538[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80182540[])(void); +extern void func_80169F00(void *a0); +extern char D_801824F0[]; +extern char D_801824B0[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80182578[])(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_80182584[])(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_801825CC[])(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_80182648[])(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_8018F038; +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_8018263C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80182680[]; +extern unsigned short D_80182688[]; +extern unsigned short D_80182690[]; +extern unsigned char D_8018F040[]; +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_8018F038; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80182698[])(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_8018F174; +extern M2C_UNK D_8018F178; +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_8018F100; +extern void (*D_801826C8[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018F17C[]; +extern u8 D_8018F184[]; +extern u8 D_8018F134[]; +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_801826D0[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801826EC[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801826F4[])(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_8018275C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80182700; +extern u8 D_8018270C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80182790[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80182798[])(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_801827EC[])(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_80182820[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80182810[]; +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_8018283C; +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); +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_801828B4[])(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_801828BC[])(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_801828C4[])(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_801828CC[])(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_801828D4[])(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_801828DC[])(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_801828E8[])(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_801828F4[])(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_80182900[])(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_80182910[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80182920[])(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_80182928[])(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_80182930[])(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_80182938[])(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_80182940[])(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_80182948[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80182950[])(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_80182958[])(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_80182960[])(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_80182968[])(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_80182970[])(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_80182978[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80182980[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80182988[])(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_80182990[])(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_80182998[])(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_801829A0[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801829A8[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801829B0[])(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_801829B8[])(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_801829C0[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801829C8[])(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_801829D0[])(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_80182A14[])(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_801829D8; +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_80182A44[])(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_80182A80[])(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(s32); +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_80182AD8[])(); +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_80182AE8[])(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_80182AF0[])(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_80182C58[])(); +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_80182C64[])(); +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_8018E748; +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 int func_801789AC(void); +extern s16 D_801900E8; +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_8018F8B8; +extern short D_8019015C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8018FCE4; +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_8018FD0C; +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_8018FCC8; +extern s32 func_8017A3B0(void); +extern short D_8018FD04; +extern short D_8018FD00; +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_801900B8; +extern s16 D_801900BA; +extern s16 D_801900C4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801900B8; + + 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_801900C4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801900B8+0xC == &D_801900C4; 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_801900B8 + 0xC)) < 0x101) { + D_801900B8 = 0; + D_801900BA = 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_801900C4); + 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_801900B8 + 0xC)) < 0x101) { + D_801900B8 = 0; + D_801900BA = 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_8018FD44; + extern s16 D_8018FD46; + extern s16 D_8018FD48; + extern s16 D_8018FD3C; + extern s16 D_8018FD3E; + extern s16 D_8018FD40; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8018FD44, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8018FD46, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8018FD48, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8018FD3C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8018FD3E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8018FD40, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8018FCCC; +extern u16 D_8018FD4C; +extern u16 D_8018FD4E; +extern u16 D_8018FD50; +extern s16 D_801900E8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801900E8 = 0; + D_8018FCCC = 0; + D_8018FD4C = D_80126B5E; + D_8018FD4E = D_80126B62; + D_8018FD50 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80182DA0[]; + extern s16 D_8018FD44; + extern s16 D_8018FD3C; + 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_80182DA0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182DA0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8018FD44; + s16 *p78C = &D_8018FD3C; + *(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_801900E8 = 1; + D_8018FCCC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8018FCEC; + extern SV4_8017B368 D_8018FCF4; + extern s16 D_8018FD44; + extern s16 D_8018FD3C; + extern u16 D_80182DA0; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8018FCEC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8018FCF4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80182DA0)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80182DA0)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8018FD44) = loc0; + (*(SV4_8017B368 *)&D_8018FD3C) = loc1; + D_801900E8 = 1; + D_8018FCCC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC05_006/nonmatchings/ov_SC05_006_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80182DA0[]; + extern s16 D_8018FD44; + extern s16 D_8018FD46; + extern s16 D_8018FD48; + extern s16 D_8018FD3C; + extern s16 D_8018FD3E; + extern s16 D_8018FD40; + 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_80182DA0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182DA0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8018FD44; + s16 *p78C = &D_8018FD3C; + *(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_8018FD46; + v798 = D_8018FD48; + v78C = *p78C; + v78E = D_8018FD3E; + v790 = D_8018FD40; + __asm__ __volatile__(""); + D_801900E8 = 1; + D_8018FCCC = 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_8018FCCC; +extern s16 D_8018FD44; +extern s16 D_8018FD46; +extern s16 D_8018FD48; +extern s16 D_8018FD3C; +extern s16 D_8018FD3E; +extern s16 D_8018FD40; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8018FCCC = 0; + D_8018FD44 = (s16) D_80114F30; + D_8018FD46 = (s16) D_80114F34; + D_8018FD48 = (s16) D_80114F38; + D_8018FD3C = (s16) D_80114F24; + D_8018FD3E = (s16) D_80114F28; + D_8018FD40 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8018FD5C; +extern s16 D_8018FD5E; +extern s16 D_8018FD60; +extern s16 D_8018FD64; +extern s16 D_8018FD66; +extern s16 D_8018FD68; + +void func_8017B824(void) { + D_8018FD5C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8018FD5E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8018FD60 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8018FD64 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8018FD66 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8018FD68 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8018FD5C; +extern s16 D_8018FD5E; +extern s16 D_8018FD60; +extern s16 D_8018FD64; +extern s16 D_8018FD66; +extern s16 D_8018FD68; + +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_8018FD5C; + D_80114F34 = D_8018FD5E; + D_80114F38 = D_8018FD60; + D_80114F24 = D_8018FD64; + D_80114F28 = D_8018FD66; + D_80114F2C = D_8018FD68; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8018FD44), src[8..15] -> (*(S8_8017B8E8 *)&D_8018FD3C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8018FD44) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8018FD3C) = ((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_8018FD4C; +extern u16 D_8018FD4E; +extern u16 D_8018FD50; + +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_8018FCCC; +extern short D_8018FD54; +extern short D_8018FD56; +extern short D_8018FD58; +extern s16 D_8018FD44; +extern s16 D_8018FD46; +extern s16 D_8018FD48; +extern s16 D_8018FD3C; +extern s16 D_8018FD3E; +extern s16 D_8018FD40; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8018FD4C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8018FD4E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8018FD50); + (*(s16 *)&D_8018FD54) = buf[0]; + (*(s16 *)&D_8018FD56) = buf[1]; + (*(s16 *)&D_8018FD58) = buf[2]; + D_8018FD44 = D_80114F30 + buf[0]; + D_8018FCCC = 0; + D_8018FD46 = D_80114F34 + buf[1]; + D_8018FD48 = D_80114F38 + buf[2]; + D_8018FD3C = D_80114F24 + buf[0]; + D_8018FD3E = D_80114F28 + buf[1]; + D_8018FD40 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8018FCEC; +extern SV4 D_8018FCF4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8018FCF4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8018FCEC = 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_8018FCF4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8018FCF4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8018FCEC) = 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_8018FCF4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8018FD14[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8018FD14; + 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_8018FCCC; +extern s16 D_801900E8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8018FCCC = D_8018FCCC + 1; + if (D_8018FCCC >= 0x1F) { + D_801900E8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8018FCCC; +extern s16 D_801900E8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8018FCCC = D_8018FCCC + 1; + if (0x18 < D_8018FCCC) { + func_8012A4BC(); + D_801900E8 = 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_8018FCCC; +extern void (*D_8018FD10)(void); +extern short D_8018FD54; +extern short D_8018FD56; +extern short D_8018FD58; +extern s16 D_801900E8; + +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_8018FCCC = D_8018FCCC + 1; + if (D_8018FCCC >= 0x19) { + if (D_8018FD10 != 0) { + (*D_8018FD10)(); + } else { + D_80114F30 = D_80114F30 + D_8018FD54; + D_80114F34 = D_80114F34 + D_8018FD56; + D_80114F38 = D_80114F38 + D_8018FD58; + D_80114F24 = D_80114F24 + D_8018FD54; + D_80114F28 = D_80114F28 + D_8018FD56; + D_80114F2C = D_80114F2C + D_8018FD58; + func_8012A4BC(); + } + D_801900E8 = 0; + } +} + + + +extern void (*D_80182E40[])(void); + +void func_8017BE60(void *a0) { + D_80182E40[*(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) */ + diff --git a/src/ov_SC05_007/ov_SC05_007_jr_8017A4AC.c b/src/ov_SC05_007/ov_SC05_007_jr_8017A4AC.c index 288766c09..1f13809fb 100644 --- a/src/ov_SC05_007/ov_SC05_007_jr_8017A4AC.c +++ b/src/ov_SC05_007/ov_SC05_007_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC05_007/nonmatchings/ov_SC05_007_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8019CD24; - extern s16 D_8019CD26; - extern s16 D_8019CD28; - extern s16 D_8019CD1C; - extern s16 D_8019CD1E; - extern s16 D_8019CD20; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019CD24, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019CD26, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019CD28, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019CD1C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019CD1E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019CD20, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8019CCAC; -extern u16 D_8019CD2C; -extern u16 D_8019CD2E; -extern u16 D_8019CD30; -extern s16 D_8019CE88; - -void func_8017B1D8(void) { - func_8012A418(); - D_8019CE88 = 0; - D_8019CCAC = 0; - D_8019CD2C = D_80126B5E; - D_8019CD2E = D_80126B62; - D_8019CD30 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018439C[]; - extern s16 D_8019CD24; - extern s16 D_8019CD1C; - 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_8018439C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018439C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019CD24; - s16 *p78C = &D_8019CD1C; - *(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_8019CE88 = 1; - D_8019CCAC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019CCCC; - extern SV4_8017B368 D_8019CCD4; - extern s16 D_8019CD24; - extern s16 D_8019CD1C; - extern u16 D_8018439C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8019CCCC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8019CCD4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018439C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018439C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8019CD24) = loc0; - (*(SV4_8017B368 *)&D_8019CD1C) = loc1; - D_8019CE88 = 1; - D_8019CCAC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC05_007/nonmatchings/ov_SC05_007_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018439C[]; - extern s16 D_8019CD24; - extern s16 D_8019CD26; - extern s16 D_8019CD28; - extern s16 D_8019CD1C; - extern s16 D_8019CD1E; - extern s16 D_8019CD20; - 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_8018439C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018439C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019CD24; - s16 *p78C = &D_8019CD1C; - *(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_8019CD26; - v798 = D_8019CD28; - v78C = *p78C; - v78E = D_8019CD1E; - v790 = D_8019CD20; - __asm__ __volatile__(""); - D_8019CE88 = 1; - D_8019CCAC = 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_8019CCAC; -extern s16 D_8019CD24; -extern s16 D_8019CD26; -extern s16 D_8019CD28; -extern s16 D_8019CD1C; -extern s16 D_8019CD1E; -extern s16 D_8019CD20; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8019CCAC = 0; - D_8019CD24 = (s16) D_80114F30; - D_8019CD26 = (s16) D_80114F34; - D_8019CD28 = (s16) D_80114F38; - D_8019CD1C = (s16) D_80114F24; - D_8019CD1E = (s16) D_80114F28; - D_8019CD20 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8019CD3C; -extern s16 D_8019CD3E; -extern s16 D_8019CD40; -extern s16 D_8019CD44; -extern s16 D_8019CD46; -extern s16 D_8019CD48; - -void func_8017B824(void) { - D_8019CD3C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8019CD3E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8019CD40 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8019CD44 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8019CD46 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8019CD48 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8019CD3C; -extern s16 D_8019CD3E; -extern s16 D_8019CD40; -extern s16 D_8019CD44; -extern s16 D_8019CD46; -extern s16 D_8019CD48; - -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_8019CD3C; - D_80114F34 = D_8019CD3E; - D_80114F38 = D_8019CD40; - D_80114F24 = D_8019CD44; - D_80114F28 = D_8019CD46; - D_80114F2C = D_8019CD48; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8019CD24), src[8..15] -> (*(S8_8017B8E8 *)&D_8019CD1C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8019CD24) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8019CD1C) = ((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_8019CD2C; -extern u16 D_8019CD2E; -extern u16 D_8019CD30; - -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_8019CCAC; -extern short D_8019CD34; -extern short D_8019CD36; -extern short D_8019CD38; -extern s16 D_8019CD24; -extern s16 D_8019CD26; -extern s16 D_8019CD28; -extern s16 D_8019CD1C; -extern s16 D_8019CD1E; -extern s16 D_8019CD20; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019CD2C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019CD2E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019CD30); - (*(s16 *)&D_8019CD34) = buf[0]; - (*(s16 *)&D_8019CD36) = buf[1]; - (*(s16 *)&D_8019CD38) = buf[2]; - D_8019CD24 = D_80114F30 + buf[0]; - D_8019CCAC = 0; - D_8019CD26 = D_80114F34 + buf[1]; - D_8019CD28 = D_80114F38 + buf[2]; - D_8019CD1C = D_80114F24 + buf[0]; - D_8019CD1E = D_80114F28 + buf[1]; - D_8019CD20 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8019CCCC; -extern SV4 D_8019CCD4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019CCD4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8019CCCC = 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_8019CCD4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019CCD4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8019CCCC) = 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_8019CCD4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8019CCF4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8019CCF4; - 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_8019CCAC; -extern s16 D_8019CE88; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8019CCAC = D_8019CCAC + 1; - if (D_8019CCAC >= 0x1F) { - D_8019CE88 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8019CCAC; -extern s16 D_8019CE88; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8019CCAC = D_8019CCAC + 1; - if (0x18 < D_8019CCAC) { - func_8012A4BC(); - D_8019CE88 = 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_8019CCAC; -extern void (*D_8019CCF0)(void); -extern short D_8019CD34; -extern short D_8019CD36; -extern short D_8019CD38; -extern s16 D_8019CE88; - -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_8019CCAC = D_8019CCAC + 1; - if (D_8019CCAC >= 0x19) { - if (D_8019CCF0 != 0) { - (*D_8019CCF0)(); - } else { - D_80114F30 = D_80114F30 + D_8019CD34; - D_80114F34 = D_80114F34 + D_8019CD36; - D_80114F38 = D_80114F38 + D_8019CD38; - D_80114F24 = D_80114F24 + D_8019CD34; - D_80114F28 = D_80114F28 + D_8019CD36; - D_80114F2C = D_80114F2C + D_8019CD38; - func_8012A4BC(); - } - D_8019CE88 = 0; - } -} - - - -extern void (*D_8018443C[])(void); - -void func_8017BE60(void *a0) { - D_8018443C[*(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) */ diff --git a/src/ov_SC05_007/ov_SC05_007_jr_8017AE2C.c b/src/ov_SC05_007/ov_SC05_007_jr_8017AE2C.c new file mode 100644 index 000000000..7707af8af --- /dev/null +++ b/src/ov_SC05_007/ov_SC05_007_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80182F94; +extern u8 D_80182F04; +extern u8 D_80182EE0; +extern u8 D_80182EBC; +extern u8 D_80182F70; +extern u8 D_80182F4C; +extern u8 D_80182F28; +extern u8 D_80182E98; +extern void func_80145934(void); +extern u8 D_80183024; +extern u8 D_80183000; +extern u8 D_80182FDC; +extern u8 D_80182FB8; +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_8018241C[]; +extern unsigned char D_8018244C[]; +extern unsigned char D_8018249C[]; +extern unsigned char D_801824CC[]; +extern unsigned char D_801824FC[]; +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(void); +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_8018254C[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80182614[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018269C[]; +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_801826A4; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8019BBA8; +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_8019BBAC; +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_801826D4; +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 void 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_8018277C[])(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_801827A0[])(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_80182790; +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_801827B4[])(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_801827C0[]; +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_801827D0[])(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_801827E8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801827D8; +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_801827FC[])(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_80182818[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80182808; +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_8018282C[])(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_80182840[])(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_80182854; +extern void (*D_8018287C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018285C; +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_801828C8[])(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_801828CC[])(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(void *a0); +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_80182D30[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80182D40[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8019BBE0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80182D68[])(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_80182D48; +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_80182D58; +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_80182DA8[])(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_80182DB0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80182D7C; +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_80182DBC[])(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_80182D8C; +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_8019BBE8; +extern s32 D_8019BBF4; +extern s32 D_8019BBF8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80182DF8[])(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_80182DCC[]; +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_8019BBF0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80183048[])(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_80182E68[]; +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_801830EC[])(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_80183240[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018305C; +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_80183248[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018306C; +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_8018308C; +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_80183250[])(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(void); +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_80183278[])(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_80183284[])(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_801830F8[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80183328; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018240C[]; +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_8018333C[]; +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_80183378[]; +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_801833C0; +extern u16 D_801833C2; +extern u16 D_801833C4; +extern s32 D_801833C8; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_801833D0; +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_801830DC; +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_80183454[]; +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_80183504[])(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_80183534[]; +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_80183598; +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_8019BC00[]; +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_801835BC[])(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_8019BC58[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80183604[])(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_801835F4; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8019B4C8[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_8018360C[])(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_80183660[])(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_80183628; +extern s16 D_8018365C; +extern s16 D_8018365A; +extern s16 D_80183658; +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_8018366C[])(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_8019BCB8; +extern u8 D_8019BCB9; +extern u8 D_8019BCBA; +extern u8 D_8019BCBB; +extern u8 D_8019BCBC; +extern u8 D_8019BCBD; +extern u8 D_8019BCBE; +extern u8 D_8019BCBF; +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_8018367C[])(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_8019BCF8; +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_801836C0[])(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_8018373C[]; +extern s32 D_8018375C[]; +extern u8 D_801837D8[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801837F8[]; +extern u8 D_80183818[]; +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_801838B4[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80183930[])(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_8019B4D8; +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_8018393C[])(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_80183944[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80183A0C[])(void); +extern void func_80166618(void *a0); +extern void (*D_80183A1C[])(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_80183A2C[])(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_80183A38[])(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_80183998[]; +extern u8 D_801839AC[]; +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_80183A50[])(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_80183A58[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80183A60[])(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_80183A68[])(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_80183A70[])(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_80183A78[])(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_80183A80[])(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_80183B34[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80183B3C[])(void); +extern void func_80169F00(void *a0); +extern char D_80183AEC[]; +extern char D_80183AAC[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80183B74[])(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_80183B80[])(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_80183BC8[])(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_80183C44[])(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_8019C018; +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_80183C38[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80183C7C[]; +extern unsigned short D_80183C84[]; +extern unsigned short D_80183C8C[]; +extern unsigned char D_8019C020[]; +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_8019C018; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80183C94[])(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_8019C154; +extern M2C_UNK D_8019C158; +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_8019C0E0; +extern void (*D_80183CC4[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8019C15C[]; +extern u8 D_8019C164[]; +extern u8 D_8019C114[]; +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_80183CCC[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80183CE8[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80183CF0[])(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_80183D58[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80183CFC; +extern u8 D_80183D08; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80183D8C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80183D94[])(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_80183DE8[])(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_80183E1C[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80183E0C[]; +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_80183E38; +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); +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_80183EB0[])(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_80183EB8[])(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_80183EC0[])(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_80183EC8[])(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_80183ED0[])(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_80183ED8[])(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_80183EE4[])(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_80183EF0[])(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_80183EFC[])(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_80183F0C[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80183F1C[])(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_80183F24[])(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_80183F2C[])(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_80183F34[])(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_80183F3C[])(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_80183F44[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80183F4C[])(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_80183F54[])(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_80183F5C[])(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_80183F64[])(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_80183F6C[])(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_80183F74[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80183F7C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80183F84[])(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_80183F8C[])(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_80183F94[])(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_80183F9C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80183FA4[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80183FAC[])(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_80183FB4[])(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_80183FBC[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80183FC4[])(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_80183FCC[])(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_80184010[])(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_80183FD4; +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_80184040[])(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_8018407C[])(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(s32); +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_801840D4[])(); +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_801840E4[])(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_801840EC[])(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_80184254[])(); +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_80184260[])(); +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_8019B720; +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 int func_801789AC(void); +extern s16 D_8019CE88; +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_8019C898; +extern short D_8019CEFC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8019CCC4; +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_8019CCEC; +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_8019CCA8; +extern s32 func_8017A3B0(void); +extern short D_8019CCE4; +extern short D_8019CCE0; +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_8019CE58; +extern s16 D_8019CE5A; +extern s16 D_8019CE64; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_8019CE58; + + 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_8019CE64); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_8019CE58+0xC == &D_8019CE64; 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_8019CE58 + 0xC)) < 0x101) { + D_8019CE58 = 0; + D_8019CE5A = 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_8019CE64); + 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_8019CE58 + 0xC)) < 0x101) { + D_8019CE58 = 0; + D_8019CE5A = 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_8019CD24; + extern s16 D_8019CD26; + extern s16 D_8019CD28; + extern s16 D_8019CD1C; + extern s16 D_8019CD1E; + extern s16 D_8019CD20; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019CD24, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019CD26, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019CD28, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019CD1C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019CD1E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019CD20, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8019CCAC; +extern u16 D_8019CD2C; +extern u16 D_8019CD2E; +extern u16 D_8019CD30; +extern s16 D_8019CE88; + +void func_8017B1D8(void) { + func_8012A418(); + D_8019CE88 = 0; + D_8019CCAC = 0; + D_8019CD2C = D_80126B5E; + D_8019CD2E = D_80126B62; + D_8019CD30 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018439C[]; + extern s16 D_8019CD24; + extern s16 D_8019CD1C; + 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_8018439C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018439C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019CD24; + s16 *p78C = &D_8019CD1C; + *(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_8019CE88 = 1; + D_8019CCAC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019CCCC; + extern SV4_8017B368 D_8019CCD4; + extern s16 D_8019CD24; + extern s16 D_8019CD1C; + extern u16 D_8018439C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8019CCCC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8019CCD4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018439C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018439C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8019CD24) = loc0; + (*(SV4_8017B368 *)&D_8019CD1C) = loc1; + D_8019CE88 = 1; + D_8019CCAC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC05_007/nonmatchings/ov_SC05_007_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018439C[]; + extern s16 D_8019CD24; + extern s16 D_8019CD26; + extern s16 D_8019CD28; + extern s16 D_8019CD1C; + extern s16 D_8019CD1E; + extern s16 D_8019CD20; + 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_8018439C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018439C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019CD24; + s16 *p78C = &D_8019CD1C; + *(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_8019CD26; + v798 = D_8019CD28; + v78C = *p78C; + v78E = D_8019CD1E; + v790 = D_8019CD20; + __asm__ __volatile__(""); + D_8019CE88 = 1; + D_8019CCAC = 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_8019CCAC; +extern s16 D_8019CD24; +extern s16 D_8019CD26; +extern s16 D_8019CD28; +extern s16 D_8019CD1C; +extern s16 D_8019CD1E; +extern s16 D_8019CD20; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8019CCAC = 0; + D_8019CD24 = (s16) D_80114F30; + D_8019CD26 = (s16) D_80114F34; + D_8019CD28 = (s16) D_80114F38; + D_8019CD1C = (s16) D_80114F24; + D_8019CD1E = (s16) D_80114F28; + D_8019CD20 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8019CD3C; +extern s16 D_8019CD3E; +extern s16 D_8019CD40; +extern s16 D_8019CD44; +extern s16 D_8019CD46; +extern s16 D_8019CD48; + +void func_8017B824(void) { + D_8019CD3C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8019CD3E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8019CD40 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8019CD44 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8019CD46 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8019CD48 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8019CD3C; +extern s16 D_8019CD3E; +extern s16 D_8019CD40; +extern s16 D_8019CD44; +extern s16 D_8019CD46; +extern s16 D_8019CD48; + +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_8019CD3C; + D_80114F34 = D_8019CD3E; + D_80114F38 = D_8019CD40; + D_80114F24 = D_8019CD44; + D_80114F28 = D_8019CD46; + D_80114F2C = D_8019CD48; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8019CD24), src[8..15] -> (*(S8_8017B8E8 *)&D_8019CD1C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8019CD24) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8019CD1C) = ((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_8019CD2C; +extern u16 D_8019CD2E; +extern u16 D_8019CD30; + +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_8019CCAC; +extern short D_8019CD34; +extern short D_8019CD36; +extern short D_8019CD38; +extern s16 D_8019CD24; +extern s16 D_8019CD26; +extern s16 D_8019CD28; +extern s16 D_8019CD1C; +extern s16 D_8019CD1E; +extern s16 D_8019CD20; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019CD2C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019CD2E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019CD30); + (*(s16 *)&D_8019CD34) = buf[0]; + (*(s16 *)&D_8019CD36) = buf[1]; + (*(s16 *)&D_8019CD38) = buf[2]; + D_8019CD24 = D_80114F30 + buf[0]; + D_8019CCAC = 0; + D_8019CD26 = D_80114F34 + buf[1]; + D_8019CD28 = D_80114F38 + buf[2]; + D_8019CD1C = D_80114F24 + buf[0]; + D_8019CD1E = D_80114F28 + buf[1]; + D_8019CD20 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8019CCCC; +extern SV4 D_8019CCD4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019CCD4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8019CCCC = 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_8019CCD4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019CCD4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8019CCCC) = 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_8019CCD4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8019CCF4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8019CCF4; + 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_8019CCAC; +extern s16 D_8019CE88; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8019CCAC = D_8019CCAC + 1; + if (D_8019CCAC >= 0x1F) { + D_8019CE88 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8019CCAC; +extern s16 D_8019CE88; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8019CCAC = D_8019CCAC + 1; + if (0x18 < D_8019CCAC) { + func_8012A4BC(); + D_8019CE88 = 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_8019CCAC; +extern void (*D_8019CCF0)(void); +extern short D_8019CD34; +extern short D_8019CD36; +extern short D_8019CD38; +extern s16 D_8019CE88; + +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_8019CCAC = D_8019CCAC + 1; + if (D_8019CCAC >= 0x19) { + if (D_8019CCF0 != 0) { + (*D_8019CCF0)(); + } else { + D_80114F30 = D_80114F30 + D_8019CD34; + D_80114F34 = D_80114F34 + D_8019CD36; + D_80114F38 = D_80114F38 + D_8019CD38; + D_80114F24 = D_80114F24 + D_8019CD34; + D_80114F28 = D_80114F28 + D_8019CD36; + D_80114F2C = D_80114F2C + D_8019CD38; + func_8012A4BC(); + } + D_8019CE88 = 0; + } +} + + + +extern void (*D_8018443C[])(void); + +void func_8017BE60(void *a0) { + D_8018443C[*(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) */ + diff --git a/src/ov_SC05_008/ov_SC05_008_jr_8017A4AC.c b/src/ov_SC05_008/ov_SC05_008_jr_8017A4AC.c index 1e581c6c5..20af50fca 100644 --- a/src/ov_SC05_008/ov_SC05_008_jr_8017A4AC.c +++ b/src/ov_SC05_008/ov_SC05_008_jr_8017A4AC.c @@ -2946,1156 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801A1054; - extern s16 D_801A1056; - extern s16 D_801A1058; - extern s16 D_801A104C; - extern s16 D_801A104E; - extern s16 D_801A1050; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A1054, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A1056, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A1058, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A104C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A104E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A1050, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801A0FDC; -extern u16 D_801A105C; -extern u16 D_801A105E; -extern u16 D_801A1060; -extern s16 D_801A1270; - -void func_8017B1D8(void) { - func_8012A418(); - D_801A1270 = 0; - D_801A0FDC = 0; - D_801A105C = D_80126B5E; - D_801A105E = D_80126B62; - D_801A1060 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_801862F4[]; - extern s16 D_801A1054; - extern s16 D_801A104C; - 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_801862F4[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801862F4[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A1054; - s16 *p78C = &D_801A104C; - *(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_801A1270 = 1; - D_801A0FDC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A0FFC; - extern SV4_8017B368 D_801A1004; - extern s16 D_801A1054; - extern s16 D_801A104C; - extern u16 D_801862F4; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801A0FFC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801A1004; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_801862F4)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_801862F4)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801A1054) = loc0; - (*(SV4_8017B368 *)&D_801A104C) = loc1; - D_801A1270 = 1; - D_801A0FDC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_801862F4[]; - extern s16 D_801A1054; - extern s16 D_801A1056; - extern s16 D_801A1058; - extern s16 D_801A104C; - extern s16 D_801A104E; - extern s16 D_801A1050; - 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_801862F4[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801862F4[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A1054; - s16 *p78C = &D_801A104C; - *(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_801A1056; - v798 = D_801A1058; - v78C = *p78C; - v78E = D_801A104E; - v790 = D_801A1050; - __asm__ __volatile__(""); - D_801A1270 = 1; - D_801A0FDC = 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_801A0FDC; -extern s16 D_801A1054; -extern s16 D_801A1056; -extern s16 D_801A1058; -extern s16 D_801A104C; -extern s16 D_801A104E; -extern s16 D_801A1050; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801A0FDC = 0; - D_801A1054 = (s16) D_80114F30; - D_801A1056 = (s16) D_80114F34; - D_801A1058 = (s16) D_80114F38; - D_801A104C = (s16) D_80114F24; - D_801A104E = (s16) D_80114F28; - D_801A1050 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801A106C; -extern s16 D_801A106E; -extern s16 D_801A1070; -extern s16 D_801A1074; -extern s16 D_801A1076; -extern s16 D_801A1078; - -void func_8017B824(void) { - D_801A106C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801A106E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801A1070 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801A1074 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801A1076 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801A1078 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801A106C; -extern s16 D_801A106E; -extern s16 D_801A1070; -extern s16 D_801A1074; -extern s16 D_801A1076; -extern s16 D_801A1078; - -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_801A106C; - D_80114F34 = D_801A106E; - D_80114F38 = D_801A1070; - D_80114F24 = D_801A1074; - D_80114F28 = D_801A1076; - D_80114F2C = D_801A1078; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801A1054), src[8..15] -> (*(S8_8017B8E8 *)&D_801A104C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801A1054) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801A104C) = ((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_801A105C; -extern u16 D_801A105E; -extern u16 D_801A1060; - -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_801A0FDC; -extern short D_801A1064; -extern short D_801A1066; -extern short D_801A1068; -extern s16 D_801A1054; -extern s16 D_801A1056; -extern s16 D_801A1058; -extern s16 D_801A104C; -extern s16 D_801A104E; -extern s16 D_801A1050; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A105C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A105E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A1060); - (*(s16 *)&D_801A1064) = buf[0]; - (*(s16 *)&D_801A1066) = buf[1]; - (*(s16 *)&D_801A1068) = buf[2]; - D_801A1054 = D_80114F30 + buf[0]; - D_801A0FDC = 0; - D_801A1056 = D_80114F34 + buf[1]; - D_801A1058 = D_80114F38 + buf[2]; - D_801A104C = D_80114F24 + buf[0]; - D_801A104E = D_80114F28 + buf[1]; - D_801A1050 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801A0FFC; -extern SV4 D_801A1004; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A1004) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801A0FFC = 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_801A1004 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A1004)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801A0FFC) = 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_801A1004) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801A1024[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801A1024; - 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_801A0FDC; -extern s16 D_801A1270; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801A0FDC = D_801A0FDC + 1; - if (D_801A0FDC >= 0x1F) { - D_801A1270 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801A0FDC; -extern s16 D_801A1270; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801A0FDC = D_801A0FDC + 1; - if (0x18 < D_801A0FDC) { - func_8012A4BC(); - D_801A1270 = 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_801A0FDC; -extern void (*D_801A1020)(void); -extern short D_801A1064; -extern short D_801A1066; -extern short D_801A1068; -extern s16 D_801A1270; - -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_801A0FDC = D_801A0FDC + 1; - if (D_801A0FDC >= 0x19) { - if (D_801A1020 != 0) { - (*D_801A1020)(); - } else { - D_80114F30 = D_80114F30 + D_801A1064; - D_80114F34 = D_80114F34 + D_801A1066; - D_80114F38 = D_80114F38 + D_801A1068; - D_80114F24 = D_80114F24 + D_801A1064; - D_80114F28 = D_80114F28 + D_801A1066; - D_80114F2C = D_80114F2C + D_801A1068; - func_8012A4BC(); - } - D_801A1270 = 0; - } -} - - - -extern void (*D_80186394[])(void); - -void func_8017BE60(void *a0) { - D_80186394[*(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) */ - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017BEBC); - - -extern void (*D_801863F0[])(void); - -void func_8017CD9C(void *a0) { - D_801863F0[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017CDD8); - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017CE1C(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_801863F8[])(void); - -void func_8017CE40(void *a0) { - D_801863F8[*(u8 *)((s32)a0 + 0x15)](); -} - - -s32 func_8017CE7C(void *a0) { - *(s32 *)((s32)a0 + 0x28) = 0xa; - *(u8 *)((s32)a0 + 0x15) = *(u8 *)((s32)a0 + 0x15) + 1; - return 0; -} - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017CE98); - -extern void func_800D1EBC(void); - void func_8017CF20(void) { - func_800D1EBC(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017CF40); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017CF68); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017D014); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017D03C); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017D098); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017D1E0); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017D214); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017D2AC); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017D378); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017D3C0); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017D434); - -void func_8017D484(void) { -} - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017D48C); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017D4E8); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017D60C); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017D668); - -extern s32 func_80171990(u8 *a0); -extern s32 D_80126B58; - -void func_8017D78C(void) { - ((void (*)(void *))func_80171990)(&D_80126B58); -} - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017D7B4); - - -extern void (*D_801864DC[])(void); - -void func_8017D8C4(void *a0) { - D_801864DC[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017D900); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017DAB8); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017DC50); - - -extern void (*D_80186524[])(void); - -void func_8017DE68(void *a0) { - D_80186524[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017DEA4); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017DEC4); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017DF68); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017E230); - - -extern void (*D_8018653C[])(void); - -void func_8017E318(void *a0) { - D_8018653C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017E354); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017E464); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017E6A4); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017E840); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017E850); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017EAB0); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017EAE4); - - -extern void (*D_8018654C[])(void); - -void func_8017EB7C(void *a0) { - D_8018654C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017EBB8); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017EEAC); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017EF50); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017EFE4); - - -extern void (*D_801865A4[])(void); - -void func_8017F0A8(void *a0) { - D_801865A4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017F0E4); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017F17C); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017F20C); - - -extern void (*D_80186614[])(void); - -void func_8017F24C(void *a0) { - D_80186614[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017F288); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017F438); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017F554); - -extern s32 func_8012AD50(void *a0); - void func_8017F63C(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017F65C); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017F6A4); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017F724); - -extern s32 func_8012AD50(void *a0); - void func_8017F80C(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017F82C); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017F874); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017F8F4); - -extern s32 func_8012AD50(void *a0); - void func_8017F9DC(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017F9FC); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017FA44); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017FAC4); - -extern s32 func_8012AD50(void *a0); - void func_8017FBAC(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017FBCC); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017FC14); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017FC94); - -extern s32 func_8012AD50(void *a0); - void func_8017FD7C(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017FD9C); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017FDE4); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017FE64); - -extern s32 func_8012AD50(void *a0); - void func_8017FF10(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017FF30); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8017FF80); - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8018000C); - - -extern s32 func_8012AD50(void *a0); - void func_801800B8(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_801800D8); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8018012C); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80180164); - -extern s32 func_8012AD50(void *a0); - void func_80180210(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80180230); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_801802EC); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_801803B8); - -extern s32 func_8012AD50(void *a0); - void func_80180464(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80180484); - -extern s32 func_80182334(void); - extern void func_8012C098(void); - void func_801804D8(s32 param_1) { - if (func_80182334() == 0) { - ((void (*)(s32))func_8012C098)(param_1); - } - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80180510); - -extern s32 func_8012AD50(void *a0); - void func_801805BC(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_801805DC); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80180698); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80180764); - -extern s32 func_8012AD50(void *a0); - void func_80180810(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80180830); - -extern s32 func_80182334(void); - extern void func_8012C098(void); - void func_80180884(s32 param_1) { - if (func_80182334() == 0) { - ((void (*)(s32))func_8012C098)(param_1); - } - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_801808BC); - - -extern s32 func_8012AD50(void *a0); - void func_80180968(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80180988); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_801809DC); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80180A14); - -extern s32 func_8012AD50(void *a0); - void func_80180AC0(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80180AE0); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80180B34); - - -extern void (*D_801866B8[])(void); - -void func_80180B6C(void *a0) { - D_801866B8[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_8012AD50(void *a0); - void func_80180BA8(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - *(s16 *)((s32)a0 + 0xFE) = 0; - *(s16 *)((s32)a0 + 0x100) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80180BD0); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80180CDC); - -extern s32 func_8012AD50(void *a0); - void func_80180D88(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80180DA8); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80180E30); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80180E84); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80180F84); - -extern s32 func_8012AD50(void *a0); - void func_80181030(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80181050); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_801810D8); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8018112C); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8018122C); - -extern s32 func_8012AD50(void *a0); - void func_801812D8(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_801812F8); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80181380); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_801813D4); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_801814D4); - -extern s32 func_8012AD50(void *a0); - void func_80181580(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_801815A0); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80181628); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8018167C); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8018177C); - -extern s32 func_8012AD50(void *a0); - void func_80181828(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80181848); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_801818D4); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80181928); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_801819D8); - -extern s32 func_8012AD50(void *a0); - void func_80181A84(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80181AA4); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80181B30); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80181B84); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80181C38); - - -extern s32 func_8012AD50(void *a0); - void func_80181CE4(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80181D04); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80181D4C); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80181DBC); - -extern s32 func_8012AD50(void *a0); - void func_80181E68(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80181E88); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80181ED0); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80181F40); - -extern s32 func_8012AD50(void *a0); - void func_80181FEC(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8018200C); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80182054); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_801820C0); - -extern s32 func_8012AD50(void *a0); - void func_8018216C(s32 *a0) { - *(s16 *)((s32)a0 + 0xFC) = 0; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8018218C); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_801821D4); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80182240); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_8018227C); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80182334); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_801823B8); - -extern s32 D_801151D4; - s32 func_80182478(void) { - return *(u16 *)(D_801151D4 + 0x38); - } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80182490); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80182560); - -void func_8018264C(void) { -} - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80182654); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80182694); - - -extern void (*D_80186838[])(void); - -void func_80182758(void *a0) { - D_80186838[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_80182794); - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017A4AC", func_801828E0); - -extern void func_801292C8(void *a0); -void func_8018292C(void *a0) { - s32 v0 = *(s32 *)((u8 *)a0 + 0x1c) - 1; - *(s32 *)((u8 *)a0 + 0x1c) = v0; - if (v0 == -1) { - func_801292C8(a0); - } -} - - -extern s32 func_80182960(void); - -s32 func_80182960(void) { - return 0x43; -} - - - diff --git a/src/ov_SC05_008/ov_SC05_008_jr_8017AE2C.c b/src/ov_SC05_008/ov_SC05_008_jr_8017AE2C.c new file mode 100644 index 000000000..3c1415b7a --- /dev/null +++ b/src/ov_SC05_008/ov_SC05_008_jr_8017AE2C.c @@ -0,0 +1,4033 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80184EEC; +extern u8 D_80184E5C; +extern u8 D_80184E38; +extern u8 D_80184E14; +extern u8 D_80184EC8; +extern u8 D_80184EA4; +extern u8 D_80184E80; +extern u8 D_80184DF0; +extern void func_80145934(void); +extern u8 D_80184F7C; +extern u8 D_80184F58; +extern u8 D_80184F34; +extern u8 D_80184F10; +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_80184374[]; +extern unsigned char D_801843A4[]; +extern unsigned char D_801843F4[]; +extern unsigned char D_80184424[]; +extern unsigned char D_80184454[]; +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(void); +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_801844A4[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018456C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801845F4[]; +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_801845FC; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8019FED8; +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_8019FEDC; +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_8018462C; +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 void 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_801846D4[])(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_801846F8[])(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_801846E8; +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_8018470C[])(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_80184718[]; +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_80184728[])(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_80184740[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80184730; +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_80184754[])(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_80184770[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80184760; +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_80184784[])(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_80184798[])(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_801847AC; +extern void (*D_801847D4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801847B4; +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_80184820[])(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_80184824[])(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(void *a0); +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_80184C88[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80184C98[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8019FF10; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184CC0[])(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_80184CA0; +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_80184CB0; +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_80184D00[])(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_80184D08[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80184CD4; +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_80184D14[])(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_80184CE4; +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_8019FF18; +extern s32 D_8019FF24; +extern s32 D_8019FF28; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80184D50[])(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_80184D24[]; +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_8019FF20; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80184FA0[])(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_80184DC0[]; +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_80185044[])(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_80185198[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80184FB4; +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_801851A0[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80184FC4; +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_80184FE4; +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_801851A8[])(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(void); +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_801851D0[])(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_801851DC[])(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_80185050[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80185280; +extern void func_8015D380(s32 a0); +extern unsigned char D_80184364[]; +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_80185294[]; +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_801852D0[]; +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_80185318; +extern u16 D_8018531A; +extern u16 D_8018531C; +extern s32 D_80185320; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80185328; +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_80185034; +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_801853AC[]; +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_8018545C[])(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_8018548C[]; +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_801854F0; +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_8019FF30[]; +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_80185514[])(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_8019FF88[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018555C[])(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_8018554C; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8019F7FC[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_80185564[])(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_801855B8[])(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_80185580; +extern s16 D_801855B4; +extern s16 D_801855B2; +extern s16 D_801855B0; +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_801855C4[])(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_8019FFE8; +extern u8 D_8019FFE9; +extern u8 D_8019FFEA; +extern u8 D_8019FFEB; +extern u8 D_8019FFEC; +extern u8 D_8019FFED; +extern u8 D_8019FFEE; +extern u8 D_8019FFEF; +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_801855D4[])(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_801A0028; +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_80185618[])(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_80185694[]; +extern s32 D_801856B4[]; +extern u8 D_80185730[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80185750[]; +extern u8 D_80185770[]; +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_8018580C[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80185888[])(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_8019F80C; +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_80185894[])(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_8018589C[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80185964[])(void); +extern void func_80166618(void *a0); +extern void (*D_80185974[])(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_80185984[])(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_80185990[])(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_801858F0[]; +extern u8 D_80185904[]; +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_801859A8[])(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_801859B0[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_801859B8[])(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_801859C0[])(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_801859C8[])(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_801859D0[])(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_801859D8[])(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_80185A8C[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80185A94[])(void); +extern void func_80169F00(void *a0); +extern char D_80185A44[]; +extern char D_80185A04[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80185ACC[])(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_80185AD8[])(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_80185B20[])(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_80185B9C[])(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_801A0348; +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_80185B90[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80185BD4[]; +extern unsigned short D_80185BDC[]; +extern unsigned short D_80185BE4[]; +extern unsigned char D_801A0350[]; +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_801A0348; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80185BEC[])(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_801A0484; +extern M2C_UNK D_801A0488; +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_801A0410; +extern void (*D_80185C1C[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801A048C[]; +extern u8 D_801A0494[]; +extern u8 D_801A0444[]; +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_80185C24[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80185C40[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80185C48[])(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_80185CB0[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80185C54; +extern u8 D_80185C60; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80185CE4[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80185CEC[])(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_80185D40[])(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_80185D74[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80185D64[]; +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_80185D90; +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); +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_80185E08[])(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_80185E10[])(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_80185E18[])(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_80185E20[])(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_80185E28[])(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_80185E30[])(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_80185E3C[])(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_80185E48[])(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_80185E54[])(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_80185E64[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80185E74[])(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_80185E7C[])(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_80185E84[])(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_80185E8C[])(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_80185E94[])(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_80185E9C[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80185EA4[])(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_80185EAC[])(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_80185EB4[])(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_80185EBC[])(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_80185EC4[])(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_80185ECC[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80185ED4[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80185EDC[])(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_80185EE4[])(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_80185EEC[])(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_80185EF4[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80185EFC[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80185F04[])(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_80185F0C[])(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_80185F14[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80185F1C[])(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_80185F24[])(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_80185F68[])(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_80185F2C; +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_80185F98[])(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_80185FD4[])(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(s32); +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_8018602C[])(); +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_8018603C[])(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_80186044[])(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_801861AC[])(); +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_801861B8[])(); +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_8019FA54; +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 int func_801789AC(void); +extern s16 D_801A1270; +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_801A0BC8; +extern short D_801A12E8; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801A0FF4; +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_801A101C; +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_801A0FD8; +extern s32 func_8017A3B0(void); +extern short D_801A1014; +extern short D_801A1010; +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_801A1240; +extern s16 D_801A1242; +extern s16 D_801A124C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801A1240; + + 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_801A124C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801A1240+0xC == &D_801A124C; 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_801A1240 + 0xC)) < 0x101) { + D_801A1240 = 0; + D_801A1242 = 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_801A124C); + 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_801A1240 + 0xC)) < 0x101) { + D_801A1240 = 0; + D_801A1242 = 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_801A1054; + extern s16 D_801A1056; + extern s16 D_801A1058; + extern s16 D_801A104C; + extern s16 D_801A104E; + extern s16 D_801A1050; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A1054, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A1056, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A1058, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A104C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A104E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A1050, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801A0FDC; +extern u16 D_801A105C; +extern u16 D_801A105E; +extern u16 D_801A1060; +extern s16 D_801A1270; + +void func_8017B1D8(void) { + func_8012A418(); + D_801A1270 = 0; + D_801A0FDC = 0; + D_801A105C = D_80126B5E; + D_801A105E = D_80126B62; + D_801A1060 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_801862F4[]; + extern s16 D_801A1054; + extern s16 D_801A104C; + 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_801862F4[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801862F4[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A1054; + s16 *p78C = &D_801A104C; + *(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_801A1270 = 1; + D_801A0FDC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A0FFC; + extern SV4_8017B368 D_801A1004; + extern s16 D_801A1054; + extern s16 D_801A104C; + extern u16 D_801862F4; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801A0FFC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801A1004; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_801862F4)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_801862F4)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801A1054) = loc0; + (*(SV4_8017B368 *)&D_801A104C) = loc1; + D_801A1270 = 1; + D_801A0FDC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_801862F4[]; + extern s16 D_801A1054; + extern s16 D_801A1056; + extern s16 D_801A1058; + extern s16 D_801A104C; + extern s16 D_801A104E; + extern s16 D_801A1050; + 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_801862F4[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801862F4[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A1054; + s16 *p78C = &D_801A104C; + *(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_801A1056; + v798 = D_801A1058; + v78C = *p78C; + v78E = D_801A104E; + v790 = D_801A1050; + __asm__ __volatile__(""); + D_801A1270 = 1; + D_801A0FDC = 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_801A0FDC; +extern s16 D_801A1054; +extern s16 D_801A1056; +extern s16 D_801A1058; +extern s16 D_801A104C; +extern s16 D_801A104E; +extern s16 D_801A1050; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801A0FDC = 0; + D_801A1054 = (s16) D_80114F30; + D_801A1056 = (s16) D_80114F34; + D_801A1058 = (s16) D_80114F38; + D_801A104C = (s16) D_80114F24; + D_801A104E = (s16) D_80114F28; + D_801A1050 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801A106C; +extern s16 D_801A106E; +extern s16 D_801A1070; +extern s16 D_801A1074; +extern s16 D_801A1076; +extern s16 D_801A1078; + +void func_8017B824(void) { + D_801A106C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801A106E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801A1070 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801A1074 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801A1076 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801A1078 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801A106C; +extern s16 D_801A106E; +extern s16 D_801A1070; +extern s16 D_801A1074; +extern s16 D_801A1076; +extern s16 D_801A1078; + +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_801A106C; + D_80114F34 = D_801A106E; + D_80114F38 = D_801A1070; + D_80114F24 = D_801A1074; + D_80114F28 = D_801A1076; + D_80114F2C = D_801A1078; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801A1054), src[8..15] -> (*(S8_8017B8E8 *)&D_801A104C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801A1054) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801A104C) = ((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_801A105C; +extern u16 D_801A105E; +extern u16 D_801A1060; + +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_801A0FDC; +extern short D_801A1064; +extern short D_801A1066; +extern short D_801A1068; +extern s16 D_801A1054; +extern s16 D_801A1056; +extern s16 D_801A1058; +extern s16 D_801A104C; +extern s16 D_801A104E; +extern s16 D_801A1050; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A105C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A105E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A1060); + (*(s16 *)&D_801A1064) = buf[0]; + (*(s16 *)&D_801A1066) = buf[1]; + (*(s16 *)&D_801A1068) = buf[2]; + D_801A1054 = D_80114F30 + buf[0]; + D_801A0FDC = 0; + D_801A1056 = D_80114F34 + buf[1]; + D_801A1058 = D_80114F38 + buf[2]; + D_801A104C = D_80114F24 + buf[0]; + D_801A104E = D_80114F28 + buf[1]; + D_801A1050 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801A0FFC; +extern SV4 D_801A1004; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A1004) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801A0FFC = 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_801A1004 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A1004)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801A0FFC) = 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_801A1004) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801A1024[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801A1024; + 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_801A0FDC; +extern s16 D_801A1270; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801A0FDC = D_801A0FDC + 1; + if (D_801A0FDC >= 0x1F) { + D_801A1270 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801A0FDC; +extern s16 D_801A1270; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801A0FDC = D_801A0FDC + 1; + if (0x18 < D_801A0FDC) { + func_8012A4BC(); + D_801A1270 = 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_801A0FDC; +extern void (*D_801A1020)(void); +extern short D_801A1064; +extern short D_801A1066; +extern short D_801A1068; +extern s16 D_801A1270; + +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_801A0FDC = D_801A0FDC + 1; + if (D_801A0FDC >= 0x19) { + if (D_801A1020 != 0) { + (*D_801A1020)(); + } else { + D_80114F30 = D_80114F30 + D_801A1064; + D_80114F34 = D_80114F34 + D_801A1066; + D_80114F38 = D_80114F38 + D_801A1068; + D_80114F24 = D_80114F24 + D_801A1064; + D_80114F28 = D_80114F28 + D_801A1066; + D_80114F2C = D_80114F2C + D_801A1068; + func_8012A4BC(); + } + D_801A1270 = 0; + } +} + + + +extern void (*D_80186394[])(void); + +void func_8017BE60(void *a0) { + D_80186394[*(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) */ + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017BEBC); + + +extern void (*D_801863F0[])(void); + +void func_8017CD9C(void *a0) { + D_801863F0[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017CDD8); + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017CE1C(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_801863F8[])(void); + +void func_8017CE40(void *a0) { + D_801863F8[*(u8 *)((s32)a0 + 0x15)](); +} + + +s32 func_8017CE7C(void *a0) { + *(s32 *)((s32)a0 + 0x28) = 0xa; + *(u8 *)((s32)a0 + 0x15) = *(u8 *)((s32)a0 + 0x15) + 1; + return 0; +} + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017CE98); + +extern void func_800D1EBC(void); + void func_8017CF20(void) { + func_800D1EBC(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017CF40); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017CF68); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017D014); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017D03C); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017D098); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017D1E0); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017D214); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017D2AC); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017D378); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017D3C0); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017D434); + +void func_8017D484(void) { +} + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017D48C); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017D4E8); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017D60C); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017D668); + +extern s32 func_80171990(u8 *a0); +extern s32 D_80126B58; + +void func_8017D78C(void) { + ((void (*)(void *))func_80171990)(&D_80126B58); +} + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017D7B4); + + +extern void (*D_801864DC[])(void); + +void func_8017D8C4(void *a0) { + D_801864DC[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017D900); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017DAB8); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017DC50); + + +extern void (*D_80186524[])(void); + +void func_8017DE68(void *a0) { + D_80186524[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017DEA4); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017DEC4); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017DF68); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017E230); + + +extern void (*D_8018653C[])(void); + +void func_8017E318(void *a0) { + D_8018653C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017E354); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017E464); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017E6A4); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017E840); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017E850); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017EAB0); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017EAE4); + + +extern void (*D_8018654C[])(void); + +void func_8017EB7C(void *a0) { + D_8018654C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017EBB8); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017EEAC); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017EF50); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017EFE4); + + +extern void (*D_801865A4[])(void); + +void func_8017F0A8(void *a0) { + D_801865A4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017F0E4); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017F17C); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017F20C); + + +extern void (*D_80186614[])(void); + +void func_8017F24C(void *a0) { + D_80186614[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017F288); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017F438); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017F554); + +extern s32 func_8012AD50(void *a0); + void func_8017F63C(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017F65C); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017F6A4); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017F724); + +extern s32 func_8012AD50(void *a0); + void func_8017F80C(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017F82C); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017F874); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017F8F4); + +extern s32 func_8012AD50(void *a0); + void func_8017F9DC(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017F9FC); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017FA44); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017FAC4); + +extern s32 func_8012AD50(void *a0); + void func_8017FBAC(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017FBCC); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017FC14); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017FC94); + +extern s32 func_8012AD50(void *a0); + void func_8017FD7C(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017FD9C); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017FDE4); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017FE64); + +extern s32 func_8012AD50(void *a0); + void func_8017FF10(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017FF30); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017FF80); + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8018000C); + + +extern s32 func_8012AD50(void *a0); + void func_801800B8(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801800D8); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8018012C); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80180164); + +extern s32 func_8012AD50(void *a0); + void func_80180210(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80180230); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801802EC); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801803B8); + +extern s32 func_8012AD50(void *a0); + void func_80180464(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80180484); + +extern s32 func_80182334(void); + extern void func_8012C098(void); + void func_801804D8(s32 param_1) { + if (func_80182334() == 0) { + ((void (*)(s32))func_8012C098)(param_1); + } + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80180510); + +extern s32 func_8012AD50(void *a0); + void func_801805BC(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801805DC); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80180698); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80180764); + +extern s32 func_8012AD50(void *a0); + void func_80180810(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80180830); + +extern s32 func_80182334(void); + extern void func_8012C098(void); + void func_80180884(s32 param_1) { + if (func_80182334() == 0) { + ((void (*)(s32))func_8012C098)(param_1); + } + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801808BC); + + +extern s32 func_8012AD50(void *a0); + void func_80180968(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80180988); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801809DC); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80180A14); + +extern s32 func_8012AD50(void *a0); + void func_80180AC0(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80180AE0); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80180B34); + + +extern void (*D_801866B8[])(void); + +void func_80180B6C(void *a0) { + D_801866B8[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern s32 func_8012AD50(void *a0); + void func_80180BA8(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + *(s16 *)((s32)a0 + 0xFE) = 0; + *(s16 *)((s32)a0 + 0x100) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80180BD0); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80180CDC); + +extern s32 func_8012AD50(void *a0); + void func_80180D88(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80180DA8); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80180E30); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80180E84); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80180F84); + +extern s32 func_8012AD50(void *a0); + void func_80181030(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80181050); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801810D8); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8018112C); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8018122C); + +extern s32 func_8012AD50(void *a0); + void func_801812D8(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801812F8); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80181380); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801813D4); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801814D4); + +extern s32 func_8012AD50(void *a0); + void func_80181580(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801815A0); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80181628); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8018167C); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8018177C); + +extern s32 func_8012AD50(void *a0); + void func_80181828(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80181848); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801818D4); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80181928); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801819D8); + +extern s32 func_8012AD50(void *a0); + void func_80181A84(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80181AA4); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80181B30); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80181B84); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80181C38); + + +extern s32 func_8012AD50(void *a0); + void func_80181CE4(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80181D04); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80181D4C); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80181DBC); + +extern s32 func_8012AD50(void *a0); + void func_80181E68(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80181E88); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80181ED0); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80181F40); + +extern s32 func_8012AD50(void *a0); + void func_80181FEC(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8018200C); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80182054); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801820C0); + +extern s32 func_8012AD50(void *a0); + void func_8018216C(s32 *a0) { + *(s16 *)((s32)a0 + 0xFC) = 0; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8018218C); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801821D4); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80182240); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8018227C); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80182334); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801823B8); + +extern s32 D_801151D4; + s32 func_80182478(void) { + return *(u16 *)(D_801151D4 + 0x38); + } + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80182490); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80182560); + +void func_8018264C(void) { +} + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80182654); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80182694); + + +extern void (*D_80186838[])(void); + +void func_80182758(void *a0) { + D_80186838[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80182794); + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801828E0); + +extern void func_801292C8(void *a0); +void func_8018292C(void *a0) { + s32 v0 = *(s32 *)((u8 *)a0 + 0x1c) - 1; + *(s32 *)((u8 *)a0 + 0x1c) = v0; + if (v0 == -1) { + func_801292C8(a0); + } +} + + +extern s32 func_80182960(void); + +s32 func_80182960(void) { + return 0x43; +} + + + + diff --git a/src/ov_SC05_009/ov_SC05_009_jr_8017A4AC.c b/src/ov_SC05_009/ov_SC05_009_jr_8017A4AC.c index 9fa574285..c27be3a15 100644 --- a/src/ov_SC05_009/ov_SC05_009_jr_8017A4AC.c +++ b/src/ov_SC05_009/ov_SC05_009_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC05_009/nonmatchings/ov_SC05_009_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_80196A64; - extern s16 D_80196A66; - extern s16 D_80196A68; - extern s16 D_80196A5C; - extern s16 D_80196A5E; - extern s16 D_80196A60; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80196A64, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80196A66, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80196A68, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_80196A5C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_80196A5E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80196A60, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801969EC; -extern u16 D_80196A6C; -extern u16 D_80196A6E; -extern u16 D_80196A70; -extern s16 D_80196BD0; - -void func_8017B1D8(void) { - func_8012A418(); - D_80196BD0 = 0; - D_801969EC = 0; - D_80196A6C = D_80126B5E; - D_80196A6E = D_80126B62; - D_80196A70 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80182404[]; - extern s16 D_80196A64; - extern s16 D_80196A5C; - 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_80182404[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182404[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80196A64; - s16 *p78C = &D_80196A5C; - *(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_80196BD0 = 1; - D_801969EC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_80196A0C; - extern SV4_8017B368 D_80196A14; - extern s16 D_80196A64; - extern s16 D_80196A5C; - extern u16 D_80182404; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_80196A0C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_80196A14; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80182404)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80182404)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_80196A64) = loc0; - (*(SV4_8017B368 *)&D_80196A5C) = loc1; - D_80196BD0 = 1; - D_801969EC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC05_009/nonmatchings/ov_SC05_009_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80182404[]; - extern s16 D_80196A64; - extern s16 D_80196A66; - extern s16 D_80196A68; - extern s16 D_80196A5C; - extern s16 D_80196A5E; - extern s16 D_80196A60; - 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_80182404[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182404[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80196A64; - s16 *p78C = &D_80196A5C; - *(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_80196A66; - v798 = D_80196A68; - v78C = *p78C; - v78E = D_80196A5E; - v790 = D_80196A60; - __asm__ __volatile__(""); - D_80196BD0 = 1; - D_801969EC = 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_801969EC; -extern s16 D_80196A64; -extern s16 D_80196A66; -extern s16 D_80196A68; -extern s16 D_80196A5C; -extern s16 D_80196A5E; -extern s16 D_80196A60; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801969EC = 0; - D_80196A64 = (s16) D_80114F30; - D_80196A66 = (s16) D_80114F34; - D_80196A68 = (s16) D_80114F38; - D_80196A5C = (s16) D_80114F24; - D_80196A5E = (s16) D_80114F28; - D_80196A60 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_80196A7C; -extern s16 D_80196A7E; -extern s16 D_80196A80; -extern s16 D_80196A84; -extern s16 D_80196A86; -extern s16 D_80196A88; - -void func_8017B824(void) { - D_80196A7C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_80196A7E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_80196A80 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_80196A84 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_80196A86 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_80196A88 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_80196A7C; -extern s16 D_80196A7E; -extern s16 D_80196A80; -extern s16 D_80196A84; -extern s16 D_80196A86; -extern s16 D_80196A88; - -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_80196A7C; - D_80114F34 = D_80196A7E; - D_80114F38 = D_80196A80; - D_80114F24 = D_80196A84; - D_80114F28 = D_80196A86; - D_80114F2C = D_80196A88; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_80196A64), src[8..15] -> (*(S8_8017B8E8 *)&D_80196A5C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_80196A64) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_80196A5C) = ((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_80196A6C; -extern u16 D_80196A6E; -extern u16 D_80196A70; - -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_801969EC; -extern short D_80196A74; -extern short D_80196A76; -extern short D_80196A78; -extern s16 D_80196A64; -extern s16 D_80196A66; -extern s16 D_80196A68; -extern s16 D_80196A5C; -extern s16 D_80196A5E; -extern s16 D_80196A60; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_80196A6C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_80196A6E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80196A70); - (*(s16 *)&D_80196A74) = buf[0]; - (*(s16 *)&D_80196A76) = buf[1]; - (*(s16 *)&D_80196A78) = buf[2]; - D_80196A64 = D_80114F30 + buf[0]; - D_801969EC = 0; - D_80196A66 = D_80114F34 + buf[1]; - D_80196A68 = D_80114F38 + buf[2]; - D_80196A5C = D_80114F24 + buf[0]; - D_80196A5E = D_80114F28 + buf[1]; - D_80196A60 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_80196A0C; -extern SV4 D_80196A14; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_80196A14) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_80196A0C = 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_80196A14 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80196A14)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_80196A0C) = 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_80196A14) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_80196A34[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_80196A34; - 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_801969EC; -extern s16 D_80196BD0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801969EC = D_801969EC + 1; - if (D_801969EC >= 0x1F) { - D_80196BD0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801969EC; -extern s16 D_80196BD0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801969EC = D_801969EC + 1; - if (0x18 < D_801969EC) { - func_8012A4BC(); - D_80196BD0 = 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_801969EC; -extern void (*D_80196A30)(void); -extern short D_80196A74; -extern short D_80196A76; -extern short D_80196A78; -extern s16 D_80196BD0; - -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_801969EC = D_801969EC + 1; - if (D_801969EC >= 0x19) { - if (D_80196A30 != 0) { - (*D_80196A30)(); - } else { - D_80114F30 = D_80114F30 + D_80196A74; - D_80114F34 = D_80114F34 + D_80196A76; - D_80114F38 = D_80114F38 + D_80196A78; - D_80114F24 = D_80114F24 + D_80196A74; - D_80114F28 = D_80114F28 + D_80196A76; - D_80114F2C = D_80114F2C + D_80196A78; - func_8012A4BC(); - } - D_80196BD0 = 0; - } -} - - - -extern void (*D_801824A4[])(void); - -void func_8017BE60(void *a0) { - D_801824A4[*(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) */ diff --git a/src/ov_SC05_009/ov_SC05_009_jr_8017AE2C.c b/src/ov_SC05_009/ov_SC05_009_jr_8017AE2C.c new file mode 100644 index 000000000..e963f1291 --- /dev/null +++ b/src/ov_SC05_009/ov_SC05_009_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80180FFC; +extern u8 D_80180F6C; +extern u8 D_80180F48; +extern u8 D_80180F24; +extern u8 D_80180FD8; +extern u8 D_80180FB4; +extern u8 D_80180F90; +extern u8 D_80180F00; +extern void func_80145934(void); +extern u8 D_8018108C; +extern u8 D_80181068; +extern u8 D_80181044; +extern u8 D_80181020; +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_80180484[]; +extern unsigned char D_801804B4[]; +extern unsigned char D_80180504[]; +extern unsigned char D_80180534[]; +extern unsigned char D_80180564[]; +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(void); +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_801805B4[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018067C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80180704[]; +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_8018070C; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801958E8; +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_801958EC; +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_8018073C; +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 void 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_801807E4[])(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_80180808[])(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_801807F8; +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_8018081C[])(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_80180828[]; +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_80180838[])(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_80180850[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180840; +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_80180864[])(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_80180880[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80180870; +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_80180894[])(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_801808A8[])(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_801808BC; +extern void (*D_801808E4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801808C4; +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_80180930[])(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_80180934[])(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(void *a0); +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_80180D98[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80180DA8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_80195920; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180DD0[])(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_80180DB0; +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_80180DC0; +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_80180E10[])(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_80180E18[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180DE4; +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_80180E24[])(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_80180DF4; +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_80195928; +extern s32 D_80195934; +extern s32 D_80195938; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180E60[])(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_80180E34[]; +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_80195930; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801810B0[])(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_80180ED0[]; +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_80181154[])(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_801812A8[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801810C4; +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_801812B0[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801810D4; +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_801810F4; +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_801812B8[])(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(void); +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_801812E0[])(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_801812EC[])(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_80181160[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80181390; +extern void func_8015D380(s32 a0); +extern unsigned char D_80180474[]; +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_801813A4[]; +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_801813E0[]; +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_80181428; +extern u16 D_8018142A; +extern u16 D_8018142C; +extern s32 D_80181430; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80181438; +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_80181144; +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_801814BC[]; +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_8018156C[])(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_8018159C[]; +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_80181600; +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_80195940[]; +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_80181624[])(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_80195998[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018166C[])(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_8018165C; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_80195210[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_80181674[])(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_801816C8[])(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_80181690; +extern s16 D_801816C4; +extern s16 D_801816C2; +extern s16 D_801816C0; +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_801816D4[])(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_801959F8; +extern u8 D_801959F9; +extern u8 D_801959FA; +extern u8 D_801959FB; +extern u8 D_801959FC; +extern u8 D_801959FD; +extern u8 D_801959FE; +extern u8 D_801959FF; +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_801816E4[])(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_80195A38; +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_80181728[])(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_801817A4[]; +extern s32 D_801817C4[]; +extern u8 D_80181840[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80181860[]; +extern u8 D_80181880[]; +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_8018191C[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80181998[])(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_80195220; +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_801819A4[])(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_801819AC[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80181A74[])(void); +extern void func_80166618(void *a0); +extern void (*D_80181A84[])(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_80181A94[])(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_80181AA0[])(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_80181A00[]; +extern u8 D_80181A14[]; +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_80181AB8[])(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_80181AC0[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80181AC8[])(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_80181AD0[])(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_80181AD8[])(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_80181AE0[])(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_80181AE8[])(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_80181B9C[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80181BA4[])(void); +extern void func_80169F00(void *a0); +extern char D_80181B54[]; +extern char D_80181B14[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80181BDC[])(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_80181BE8[])(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_80181C30[])(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_80181CAC[])(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_80195D58; +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_80181CA0[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80181CE4[]; +extern unsigned short D_80181CEC[]; +extern unsigned short D_80181CF4[]; +extern unsigned char D_80195D60[]; +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_80195D58; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80181CFC[])(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_80195E94; +extern M2C_UNK D_80195E98; +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_80195E20; +extern void (*D_80181D2C[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80195E9C[]; +extern u8 D_80195EA4[]; +extern u8 D_80195E54[]; +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_80181D34[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80181D50[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80181D58[])(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_80181DC0[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80181D64; +extern u8 D_80181D70; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80181DF4[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80181DFC[])(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_80181E50[])(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_80181E84[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80181E74[]; +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_80181EA0; +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); +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_80181F18[])(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_80181F20[])(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_80181F28[])(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_80181F30[])(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_80181F38[])(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_80181F40[])(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_80181F4C[])(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_80181F58[])(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_80181F64[])(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_80181F74[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80181F84[])(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_80181F8C[])(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_80181F94[])(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_80181F9C[])(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_80181FA4[])(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_80181FAC[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80181FB4[])(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_80181FBC[])(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_80181FC4[])(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_80181FCC[])(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_80181FD4[])(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_80181FDC[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80181FE4[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80181FEC[])(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_80181FF4[])(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_80181FFC[])(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_80182004[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018200C[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80182014[])(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_8018201C[])(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_80182024[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018202C[])(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_80182034[])(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_80182078[])(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_8018203C; +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_801820A8[])(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_801820E4[])(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(s32); +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_8018213C[])(); +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_8018214C[])(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_80182154[])(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_801822BC[])(); +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_801822C8[])(); +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_80195468; +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 int func_801789AC(void); +extern s16 D_80196BD0; +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_801965D8; +extern short D_80196C44; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_80196A04; +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_80196A2C; +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_801969E8; +extern s32 func_8017A3B0(void); +extern short D_80196A24; +extern short D_80196A20; +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_80196BA0; +extern s16 D_80196BA2; +extern s16 D_80196BAC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_80196BA0; + + 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_80196BAC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_80196BA0+0xC == &D_80196BAC; 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_80196BA0 + 0xC)) < 0x101) { + D_80196BA0 = 0; + D_80196BA2 = 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_80196BAC); + 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_80196BA0 + 0xC)) < 0x101) { + D_80196BA0 = 0; + D_80196BA2 = 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_80196A64; + extern s16 D_80196A66; + extern s16 D_80196A68; + extern s16 D_80196A5C; + extern s16 D_80196A5E; + extern s16 D_80196A60; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80196A64, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80196A66, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80196A68, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_80196A5C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_80196A5E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80196A60, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801969EC; +extern u16 D_80196A6C; +extern u16 D_80196A6E; +extern u16 D_80196A70; +extern s16 D_80196BD0; + +void func_8017B1D8(void) { + func_8012A418(); + D_80196BD0 = 0; + D_801969EC = 0; + D_80196A6C = D_80126B5E; + D_80196A6E = D_80126B62; + D_80196A70 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80182404[]; + extern s16 D_80196A64; + extern s16 D_80196A5C; + 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_80182404[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182404[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80196A64; + s16 *p78C = &D_80196A5C; + *(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_80196BD0 = 1; + D_801969EC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_80196A0C; + extern SV4_8017B368 D_80196A14; + extern s16 D_80196A64; + extern s16 D_80196A5C; + extern u16 D_80182404; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_80196A0C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_80196A14; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80182404)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80182404)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_80196A64) = loc0; + (*(SV4_8017B368 *)&D_80196A5C) = loc1; + D_80196BD0 = 1; + D_801969EC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC05_009/nonmatchings/ov_SC05_009_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80182404[]; + extern s16 D_80196A64; + extern s16 D_80196A66; + extern s16 D_80196A68; + extern s16 D_80196A5C; + extern s16 D_80196A5E; + extern s16 D_80196A60; + 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_80182404[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182404[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80196A64; + s16 *p78C = &D_80196A5C; + *(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_80196A66; + v798 = D_80196A68; + v78C = *p78C; + v78E = D_80196A5E; + v790 = D_80196A60; + __asm__ __volatile__(""); + D_80196BD0 = 1; + D_801969EC = 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_801969EC; +extern s16 D_80196A64; +extern s16 D_80196A66; +extern s16 D_80196A68; +extern s16 D_80196A5C; +extern s16 D_80196A5E; +extern s16 D_80196A60; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801969EC = 0; + D_80196A64 = (s16) D_80114F30; + D_80196A66 = (s16) D_80114F34; + D_80196A68 = (s16) D_80114F38; + D_80196A5C = (s16) D_80114F24; + D_80196A5E = (s16) D_80114F28; + D_80196A60 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_80196A7C; +extern s16 D_80196A7E; +extern s16 D_80196A80; +extern s16 D_80196A84; +extern s16 D_80196A86; +extern s16 D_80196A88; + +void func_8017B824(void) { + D_80196A7C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_80196A7E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_80196A80 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_80196A84 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_80196A86 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_80196A88 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_80196A7C; +extern s16 D_80196A7E; +extern s16 D_80196A80; +extern s16 D_80196A84; +extern s16 D_80196A86; +extern s16 D_80196A88; + +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_80196A7C; + D_80114F34 = D_80196A7E; + D_80114F38 = D_80196A80; + D_80114F24 = D_80196A84; + D_80114F28 = D_80196A86; + D_80114F2C = D_80196A88; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_80196A64), src[8..15] -> (*(S8_8017B8E8 *)&D_80196A5C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_80196A64) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_80196A5C) = ((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_80196A6C; +extern u16 D_80196A6E; +extern u16 D_80196A70; + +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_801969EC; +extern short D_80196A74; +extern short D_80196A76; +extern short D_80196A78; +extern s16 D_80196A64; +extern s16 D_80196A66; +extern s16 D_80196A68; +extern s16 D_80196A5C; +extern s16 D_80196A5E; +extern s16 D_80196A60; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_80196A6C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_80196A6E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80196A70); + (*(s16 *)&D_80196A74) = buf[0]; + (*(s16 *)&D_80196A76) = buf[1]; + (*(s16 *)&D_80196A78) = buf[2]; + D_80196A64 = D_80114F30 + buf[0]; + D_801969EC = 0; + D_80196A66 = D_80114F34 + buf[1]; + D_80196A68 = D_80114F38 + buf[2]; + D_80196A5C = D_80114F24 + buf[0]; + D_80196A5E = D_80114F28 + buf[1]; + D_80196A60 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_80196A0C; +extern SV4 D_80196A14; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_80196A14) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_80196A0C = 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_80196A14 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80196A14)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_80196A0C) = 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_80196A14) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_80196A34[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_80196A34; + 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_801969EC; +extern s16 D_80196BD0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801969EC = D_801969EC + 1; + if (D_801969EC >= 0x1F) { + D_80196BD0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801969EC; +extern s16 D_80196BD0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801969EC = D_801969EC + 1; + if (0x18 < D_801969EC) { + func_8012A4BC(); + D_80196BD0 = 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_801969EC; +extern void (*D_80196A30)(void); +extern short D_80196A74; +extern short D_80196A76; +extern short D_80196A78; +extern s16 D_80196BD0; + +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_801969EC = D_801969EC + 1; + if (D_801969EC >= 0x19) { + if (D_80196A30 != 0) { + (*D_80196A30)(); + } else { + D_80114F30 = D_80114F30 + D_80196A74; + D_80114F34 = D_80114F34 + D_80196A76; + D_80114F38 = D_80114F38 + D_80196A78; + D_80114F24 = D_80114F24 + D_80196A74; + D_80114F28 = D_80114F28 + D_80196A76; + D_80114F2C = D_80114F2C + D_80196A78; + func_8012A4BC(); + } + D_80196BD0 = 0; + } +} + + + +extern void (*D_801824A4[])(void); + +void func_8017BE60(void *a0) { + D_801824A4[*(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) */ + diff --git a/src/ov_SC05_010/ov_SC05_010_jr_8017A4AC.c b/src/ov_SC05_010/ov_SC05_010_jr_8017A4AC.c index c13c822bd..55c4f50a9 100644 --- a/src/ov_SC05_010/ov_SC05_010_jr_8017A4AC.c +++ b/src/ov_SC05_010/ov_SC05_010_jr_8017A4AC.c @@ -2946,604 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801C6EB4; - extern s16 D_801C6EB6; - extern s16 D_801C6EB8; - extern s16 D_801C6EAC; - extern s16 D_801C6EAE; - extern s16 D_801C6EB0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C6EB4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C6EB6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C6EB8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C6EAC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C6EAE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C6EB0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801C6E3C; -extern u16 D_801C6EBC; -extern u16 D_801C6EBE; -extern u16 D_801C6EC0; -extern s16 D_801C7FB8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801C7FB8 = 0; - D_801C6E3C = 0; - D_801C6EBC = D_80126B5E; - D_801C6EBE = D_80126B62; - D_801C6EC0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018C2E0[]; - extern s16 D_801C6EB4; - extern s16 D_801C6EAC; - 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_8018C2E0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018C2E0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C6EB4; - s16 *p78C = &D_801C6EAC; - *(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_801C7FB8 = 1; - D_801C6E3C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C6E5C; - extern SV4_8017B368 D_801C6E64; - extern s16 D_801C6EB4; - extern s16 D_801C6EAC; - extern u16 D_8018C2E0; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801C6E5C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801C6E64; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018C2E0)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018C2E0)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801C6EB4) = loc0; - (*(SV4_8017B368 *)&D_801C6EAC) = loc1; - D_801C7FB8 = 1; - D_801C6E3C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018C2E0[]; - extern s16 D_801C6EB4; - extern s16 D_801C6EB6; - extern s16 D_801C6EB8; - extern s16 D_801C6EAC; - extern s16 D_801C6EAE; - extern s16 D_801C6EB0; - 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_8018C2E0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018C2E0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C6EB4; - s16 *p78C = &D_801C6EAC; - *(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_801C6EB6; - v798 = D_801C6EB8; - v78C = *p78C; - v78E = D_801C6EAE; - v790 = D_801C6EB0; - __asm__ __volatile__(""); - D_801C7FB8 = 1; - D_801C6E3C = 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_801C6E3C; -extern s16 D_801C6EB4; -extern s16 D_801C6EB6; -extern s16 D_801C6EB8; -extern s16 D_801C6EAC; -extern s16 D_801C6EAE; -extern s16 D_801C6EB0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801C6E3C = 0; - D_801C6EB4 = (s16) D_80114F30; - D_801C6EB6 = (s16) D_80114F34; - D_801C6EB8 = (s16) D_80114F38; - D_801C6EAC = (s16) D_80114F24; - D_801C6EAE = (s16) D_80114F28; - D_801C6EB0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801C6ECC; -extern s16 D_801C6ECE; -extern s16 D_801C6ED0; -extern s16 D_801C6ED4; -extern s16 D_801C6ED6; -extern s16 D_801C6ED8; - -void func_8017B824(void) { - D_801C6ECC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801C6ECE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801C6ED0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801C6ED4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801C6ED6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801C6ED8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801C6ECC; -extern s16 D_801C6ECE; -extern s16 D_801C6ED0; -extern s16 D_801C6ED4; -extern s16 D_801C6ED6; -extern s16 D_801C6ED8; - -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_801C6ECC; - D_80114F34 = D_801C6ECE; - D_80114F38 = D_801C6ED0; - D_80114F24 = D_801C6ED4; - D_80114F28 = D_801C6ED6; - D_80114F2C = D_801C6ED8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801C6EB4), src[8..15] -> (*(S8_8017B8E8 *)&D_801C6EAC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801C6EB4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801C6EAC) = ((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_801C6EBC; -extern u16 D_801C6EBE; -extern u16 D_801C6EC0; - -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_801C6E3C; -extern short D_801C6EC4; -extern short D_801C6EC6; -extern short D_801C6EC8; -extern s16 D_801C6EB4; -extern s16 D_801C6EB6; -extern s16 D_801C6EB8; -extern s16 D_801C6EAC; -extern s16 D_801C6EAE; -extern s16 D_801C6EB0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C6EBC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C6EBE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C6EC0); - (*(s16 *)&D_801C6EC4) = buf[0]; - (*(s16 *)&D_801C6EC6) = buf[1]; - (*(s16 *)&D_801C6EC8) = buf[2]; - D_801C6EB4 = D_80114F30 + buf[0]; - D_801C6E3C = 0; - D_801C6EB6 = D_80114F34 + buf[1]; - D_801C6EB8 = D_80114F38 + buf[2]; - D_801C6EAC = D_80114F24 + buf[0]; - D_801C6EAE = D_80114F28 + buf[1]; - D_801C6EB0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801C6E5C; -extern SV4 D_801C6E64; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C6E64) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801C6E5C = 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_801C6E64 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C6E64)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801C6E5C) = 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_801C6E64) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801C6E84[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801C6E84; - 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_801C6E3C; -extern s16 D_801C7FB8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801C6E3C = D_801C6E3C + 1; - if (D_801C6E3C >= 0x1F) { - D_801C7FB8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801C6E3C; -extern s16 D_801C7FB8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801C6E3C = D_801C6E3C + 1; - if (0x18 < D_801C6E3C) { - func_8012A4BC(); - D_801C7FB8 = 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_801C6E3C; -extern void (*D_801C6E80)(void); -extern short D_801C6EC4; -extern short D_801C6EC6; -extern short D_801C6EC8; -extern s16 D_801C7FB8; - -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_801C6E3C = D_801C6E3C + 1; - if (D_801C6E3C >= 0x19) { - if (D_801C6E80 != 0) { - (*D_801C6E80)(); - } else { - D_80114F30 = D_80114F30 + D_801C6EC4; - D_80114F34 = D_80114F34 + D_801C6EC6; - D_80114F38 = D_80114F38 + D_801C6EC8; - D_80114F24 = D_80114F24 + D_801C6EC4; - D_80114F28 = D_80114F28 + D_801C6EC6; - D_80114F2C = D_80114F2C + D_801C6EC8; - func_8012A4BC(); - } - D_801C7FB8 = 0; - } -} - - - -extern void (*D_8018C380[])(void); - -void func_8017BE60(void *a0) { - D_8018C380[*(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) */ - -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017A4AC", func_8017BEE0); - - - -extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); - void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3) { - ((void (*)(void *, void *, s32, s32))func_8017BF34)(a0, a1, (s16)a2, (s16)a3); - } - - -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017A4AC", func_8017BF34); - -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017A4AC", func_8017BFBC); - -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017A4AC", func_8017C010); - -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017A4AC", func_8017C068); - - -extern void (*D_8018C3E0[])(void); - -void func_8017C114(void *a0) { - D_8018C3E0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017A4AC", func_8017C150); - -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017A4AC", func_8017C43C); diff --git a/src/ov_SC05_010/ov_SC05_010_jr_8017AE2C.c b/src/ov_SC05_010/ov_SC05_010_jr_8017AE2C.c new file mode 100644 index 000000000..111c72365 --- /dev/null +++ b/src/ov_SC05_010/ov_SC05_010_jr_8017AE2C.c @@ -0,0 +1,3481 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018AED8; +extern u8 D_8018AE48; +extern u8 D_8018AE24; +extern u8 D_8018AE00; +extern u8 D_8018AEB4; +extern u8 D_8018AE90; +extern u8 D_8018AE6C; +extern u8 D_8018ADDC; +extern void func_80145934(void); +extern u8 D_8018AF68; +extern u8 D_8018AF44; +extern u8 D_8018AF20; +extern u8 D_8018AEFC; +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_8018A360[]; +extern unsigned char D_8018A390[]; +extern unsigned char D_8018A3E0[]; +extern unsigned char D_8018A410[]; +extern unsigned char D_8018A440[]; +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(void); +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_8018A490[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018A558[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018A5E0[]; +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_8018A5E8; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801C5D38; +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_801C5D3C; +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_8018A618; +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 void 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_8018A6C0[])(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_8018A6E4[])(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_8018A6D4; +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_8018A6F8[])(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_8018A704[]; +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_8018A714[])(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_8018A72C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018A71C; +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_8018A740[])(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_8018A75C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018A74C; +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_8018A770[])(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_8018A784[])(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_8018A798; +extern void (*D_8018A7C0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018A7A0; +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_8018A80C[])(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_8018A810[])(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(void *a0); +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_8018AC74[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018AC84[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801C5D70; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018ACAC[])(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_8018AC8C; +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_8018AC9C; +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_8018ACEC[])(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_8018ACF4[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018ACC0; +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_8018AD00[])(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_8018ACD0; +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_801C5D78; +extern s32 D_801C5D84; +extern s32 D_801C5D88; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018AD3C[])(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_8018AD10[]; +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_801C5D80; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018AF8C[])(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_8018ADAC[]; +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_8018B030[])(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_8018B184[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018AFA0; +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_8018B18C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018AFB0; +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_8018AFD0; +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_8018B194[])(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(void); +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_8018B1BC[])(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_8018B1C8[])(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_8018B03C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018B26C; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018A350[]; +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_8018B280[]; +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_8018B2BC[]; +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_8018B304; +extern u16 D_8018B306; +extern u16 D_8018B308; +extern s32 D_8018B30C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018B314; +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_8018B020; +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_8018B398[]; +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_8018B448[])(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_8018B478[]; +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_8018B4DC; +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_801C5D90[]; +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_8018B500[])(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_801C5DE8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018B548[])(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_8018B538; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801C5444[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_8018B550[])(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_8018B5A4[])(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_8018B56C; +extern s16 D_8018B5A0; +extern s16 D_8018B59E; +extern s16 D_8018B59C; +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_8018B5B0[])(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_801C5E48; +extern u8 D_801C5E49; +extern u8 D_801C5E4A; +extern u8 D_801C5E4B; +extern u8 D_801C5E4C; +extern u8 D_801C5E4D; +extern u8 D_801C5E4E; +extern u8 D_801C5E4F; +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_8018B5C0[])(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_801C5E88; +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_8018B604[])(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_8018B680[]; +extern s32 D_8018B6A0[]; +extern u8 D_8018B71C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018B73C[]; +extern u8 D_8018B75C[]; +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_8018B7F8[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018B874[])(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_801C5454; +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_8018B880[])(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_8018B888[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018B950[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018B960[])(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_8018B970[])(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_8018B97C[])(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_8018B8DC[]; +extern u8 D_8018B8F0[]; +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_8018B994[])(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_8018B99C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018B9A4[])(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_8018B9AC[])(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_8018B9B4[])(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_8018B9BC[])(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_8018B9C4[])(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_8018BA78[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018BA80[])(void); +extern void func_80169F00(void *a0); +extern char D_8018BA30[]; +extern char D_8018B9F0[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018BAB8[])(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_8018BAC4[])(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_8018BB0C[])(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_8018BB88[])(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_801C61A8; +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_8018BB7C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018BBC0[]; +extern unsigned short D_8018BBC8[]; +extern unsigned short D_8018BBD0[]; +extern unsigned char D_801C61B0[]; +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_801C61A8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018BBD8[])(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_801C62E4; +extern M2C_UNK D_801C62E8; +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_801C6270; +extern void (*D_8018BC08[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801C62EC[]; +extern u8 D_801C62F4[]; +extern u8 D_801C62A4[]; +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_8018BC10[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018BC2C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018BC34[])(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_8018BC9C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018BC40; +extern u8 D_8018BC4C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018BCD0[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018BCD8[])(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_8018BD2C[])(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_8018BD60[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018BD50[]; +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_8018BD7C; +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); +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_8018BDF4[])(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_8018BDFC[])(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_8018BE04[])(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_8018BE0C[])(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_8018BE14[])(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_8018BE1C[])(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_8018BE28[])(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_8018BE34[])(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_8018BE40[])(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_8018BE50[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018BE60[])(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_8018BE68[])(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_8018BE70[])(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_8018BE78[])(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_8018BE80[])(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_8018BE88[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018BE90[])(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_8018BE98[])(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_8018BEA0[])(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_8018BEA8[])(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_8018BEB0[])(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_8018BEB8[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018BEC0[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018BEC8[])(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_8018BED0[])(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_8018BED8[])(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_8018BEE0[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018BEE8[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018BEF0[])(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_8018BEF8[])(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_8018BF00[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018BF08[])(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_8018BF10[])(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_8018BF54[])(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_8018BF18; +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_8018BF84[])(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_8018BFC0[])(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(s32); +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_8018C018[])(); +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_8018C028[])(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_8018C030[])(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_8018C198[])(); +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_8018C1A4[])(); +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_801C569C; +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 int func_801789AC(void); +extern s16 D_801C7FB8; +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_801C6A28; +extern short D_801C802C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801C6E54; +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_801C6E7C; +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_801C6E38; +extern s32 func_8017A3B0(void); +extern short D_801C6E74; +extern short D_801C6E70; +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_801C7F88; +extern s16 D_801C7F8A; +extern s16 D_801C7F94; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801C7F88; + + 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_801C7F94); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801C7F88+0xC == &D_801C7F94; 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_801C7F88 + 0xC)) < 0x101) { + D_801C7F88 = 0; + D_801C7F8A = 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_801C7F94); + 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_801C7F88 + 0xC)) < 0x101) { + D_801C7F88 = 0; + D_801C7F8A = 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_801C6EB4; + extern s16 D_801C6EB6; + extern s16 D_801C6EB8; + extern s16 D_801C6EAC; + extern s16 D_801C6EAE; + extern s16 D_801C6EB0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C6EB4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C6EB6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C6EB8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C6EAC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C6EAE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C6EB0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801C6E3C; +extern u16 D_801C6EBC; +extern u16 D_801C6EBE; +extern u16 D_801C6EC0; +extern s16 D_801C7FB8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801C7FB8 = 0; + D_801C6E3C = 0; + D_801C6EBC = D_80126B5E; + D_801C6EBE = D_80126B62; + D_801C6EC0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018C2E0[]; + extern s16 D_801C6EB4; + extern s16 D_801C6EAC; + 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_8018C2E0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018C2E0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C6EB4; + s16 *p78C = &D_801C6EAC; + *(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_801C7FB8 = 1; + D_801C6E3C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801C6E5C; + extern SV4_8017B368 D_801C6E64; + extern s16 D_801C6EB4; + extern s16 D_801C6EAC; + extern u16 D_8018C2E0; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801C6E5C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801C6E64; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018C2E0)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018C2E0)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801C6EB4) = loc0; + (*(SV4_8017B368 *)&D_801C6EAC) = loc1; + D_801C7FB8 = 1; + D_801C6E3C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018C2E0[]; + extern s16 D_801C6EB4; + extern s16 D_801C6EB6; + extern s16 D_801C6EB8; + extern s16 D_801C6EAC; + extern s16 D_801C6EAE; + extern s16 D_801C6EB0; + 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_8018C2E0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018C2E0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C6EB4; + s16 *p78C = &D_801C6EAC; + *(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_801C6EB6; + v798 = D_801C6EB8; + v78C = *p78C; + v78E = D_801C6EAE; + v790 = D_801C6EB0; + __asm__ __volatile__(""); + D_801C7FB8 = 1; + D_801C6E3C = 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_801C6E3C; +extern s16 D_801C6EB4; +extern s16 D_801C6EB6; +extern s16 D_801C6EB8; +extern s16 D_801C6EAC; +extern s16 D_801C6EAE; +extern s16 D_801C6EB0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801C6E3C = 0; + D_801C6EB4 = (s16) D_80114F30; + D_801C6EB6 = (s16) D_80114F34; + D_801C6EB8 = (s16) D_80114F38; + D_801C6EAC = (s16) D_80114F24; + D_801C6EAE = (s16) D_80114F28; + D_801C6EB0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801C6ECC; +extern s16 D_801C6ECE; +extern s16 D_801C6ED0; +extern s16 D_801C6ED4; +extern s16 D_801C6ED6; +extern s16 D_801C6ED8; + +void func_8017B824(void) { + D_801C6ECC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801C6ECE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801C6ED0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801C6ED4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801C6ED6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801C6ED8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801C6ECC; +extern s16 D_801C6ECE; +extern s16 D_801C6ED0; +extern s16 D_801C6ED4; +extern s16 D_801C6ED6; +extern s16 D_801C6ED8; + +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_801C6ECC; + D_80114F34 = D_801C6ECE; + D_80114F38 = D_801C6ED0; + D_80114F24 = D_801C6ED4; + D_80114F28 = D_801C6ED6; + D_80114F2C = D_801C6ED8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801C6EB4), src[8..15] -> (*(S8_8017B8E8 *)&D_801C6EAC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801C6EB4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801C6EAC) = ((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_801C6EBC; +extern u16 D_801C6EBE; +extern u16 D_801C6EC0; + +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_801C6E3C; +extern short D_801C6EC4; +extern short D_801C6EC6; +extern short D_801C6EC8; +extern s16 D_801C6EB4; +extern s16 D_801C6EB6; +extern s16 D_801C6EB8; +extern s16 D_801C6EAC; +extern s16 D_801C6EAE; +extern s16 D_801C6EB0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C6EBC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C6EBE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C6EC0); + (*(s16 *)&D_801C6EC4) = buf[0]; + (*(s16 *)&D_801C6EC6) = buf[1]; + (*(s16 *)&D_801C6EC8) = buf[2]; + D_801C6EB4 = D_80114F30 + buf[0]; + D_801C6E3C = 0; + D_801C6EB6 = D_80114F34 + buf[1]; + D_801C6EB8 = D_80114F38 + buf[2]; + D_801C6EAC = D_80114F24 + buf[0]; + D_801C6EAE = D_80114F28 + buf[1]; + D_801C6EB0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801C6E5C; +extern SV4 D_801C6E64; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801C6E64) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801C6E5C = 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_801C6E64 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C6E64)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801C6E5C) = 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_801C6E64) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801C6E84[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801C6E84; + 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_801C6E3C; +extern s16 D_801C7FB8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801C6E3C = D_801C6E3C + 1; + if (D_801C6E3C >= 0x1F) { + D_801C7FB8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801C6E3C; +extern s16 D_801C7FB8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801C6E3C = D_801C6E3C + 1; + if (0x18 < D_801C6E3C) { + func_8012A4BC(); + D_801C7FB8 = 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_801C6E3C; +extern void (*D_801C6E80)(void); +extern short D_801C6EC4; +extern short D_801C6EC6; +extern short D_801C6EC8; +extern s16 D_801C7FB8; + +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_801C6E3C = D_801C6E3C + 1; + if (D_801C6E3C >= 0x19) { + if (D_801C6E80 != 0) { + (*D_801C6E80)(); + } else { + D_80114F30 = D_80114F30 + D_801C6EC4; + D_80114F34 = D_80114F34 + D_801C6EC6; + D_80114F38 = D_80114F38 + D_801C6EC8; + D_80114F24 = D_80114F24 + D_801C6EC4; + D_80114F28 = D_80114F28 + D_801C6EC6; + D_80114F2C = D_80114F2C + D_801C6EC8; + func_8012A4BC(); + } + D_801C7FB8 = 0; + } +} + + + +extern void (*D_8018C380[])(void); + +void func_8017BE60(void *a0) { + D_8018C380[*(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) */ + +INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017AE2C", func_8017BEE0); + + + +extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); + void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3) { + ((void (*)(void *, void *, s32, s32))func_8017BF34)(a0, a1, (s16)a2, (s16)a3); + } + + +INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017AE2C", func_8017BF34); + +INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017AE2C", func_8017BFBC); + +INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017AE2C", func_8017C010); + +INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017AE2C", func_8017C068); + + +extern void (*D_8018C3E0[])(void); + +void func_8017C114(void *a0) { + D_8018C3E0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017AE2C", func_8017C150); + +INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017AE2C", func_8017C43C); + diff --git a/src/ov_SC05_011/ov_SC05_011_jr_8017A4AC.c b/src/ov_SC05_011/ov_SC05_011_jr_8017A4AC.c index 96027ad6b..0c93633ab 100644 --- a/src/ov_SC05_011/ov_SC05_011_jr_8017A4AC.c +++ b/src/ov_SC05_011/ov_SC05_011_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC05_011/nonmatchings/ov_SC05_011_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8019D03C; - extern s16 D_8019D03E; - extern s16 D_8019D040; - extern s16 D_8019D034; - extern s16 D_8019D036; - extern s16 D_8019D038; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019D03C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019D03E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019D040, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019D034, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019D036, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019D038, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8019CFC4; -extern u16 D_8019D044; -extern u16 D_8019D046; -extern u16 D_8019D048; -extern s16 D_8019D168; - -void func_8017B1D8(void) { - func_8012A418(); - D_8019D168 = 0; - D_8019CFC4 = 0; - D_8019D044 = D_80126B5E; - D_8019D046 = D_80126B62; - D_8019D048 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80181658[]; - extern s16 D_8019D03C; - extern s16 D_8019D034; - 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_80181658[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80181658[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019D03C; - s16 *p78C = &D_8019D034; - *(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_8019D168 = 1; - D_8019CFC4 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019CFE4; - extern SV4_8017B368 D_8019CFEC; - extern s16 D_8019D03C; - extern s16 D_8019D034; - extern u16 D_80181658; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8019CFE4; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8019CFEC; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80181658)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80181658)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8019D03C) = loc0; - (*(SV4_8017B368 *)&D_8019D034) = loc1; - D_8019D168 = 1; - D_8019CFC4 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC05_011/nonmatchings/ov_SC05_011_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80181658[]; - extern s16 D_8019D03C; - extern s16 D_8019D03E; - extern s16 D_8019D040; - extern s16 D_8019D034; - extern s16 D_8019D036; - extern s16 D_8019D038; - 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_80181658[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80181658[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019D03C; - s16 *p78C = &D_8019D034; - *(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_8019D03E; - v798 = D_8019D040; - v78C = *p78C; - v78E = D_8019D036; - v790 = D_8019D038; - __asm__ __volatile__(""); - D_8019D168 = 1; - D_8019CFC4 = 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_8019CFC4; -extern s16 D_8019D03C; -extern s16 D_8019D03E; -extern s16 D_8019D040; -extern s16 D_8019D034; -extern s16 D_8019D036; -extern s16 D_8019D038; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8019CFC4 = 0; - D_8019D03C = (s16) D_80114F30; - D_8019D03E = (s16) D_80114F34; - D_8019D040 = (s16) D_80114F38; - D_8019D034 = (s16) D_80114F24; - D_8019D036 = (s16) D_80114F28; - D_8019D038 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8019D054; -extern s16 D_8019D056; -extern s16 D_8019D058; -extern s16 D_8019D05C; -extern s16 D_8019D05E; -extern s16 D_8019D060; - -void func_8017B824(void) { - D_8019D054 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8019D056 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8019D058 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8019D05C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8019D05E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8019D060 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8019D054; -extern s16 D_8019D056; -extern s16 D_8019D058; -extern s16 D_8019D05C; -extern s16 D_8019D05E; -extern s16 D_8019D060; - -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_8019D054; - D_80114F34 = D_8019D056; - D_80114F38 = D_8019D058; - D_80114F24 = D_8019D05C; - D_80114F28 = D_8019D05E; - D_80114F2C = D_8019D060; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8019D03C), src[8..15] -> (*(S8_8017B8E8 *)&D_8019D034) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8019D03C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8019D034) = ((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_8019D044; -extern u16 D_8019D046; -extern u16 D_8019D048; - -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_8019CFC4; -extern short D_8019D04C; -extern short D_8019D04E; -extern short D_8019D050; -extern s16 D_8019D03C; -extern s16 D_8019D03E; -extern s16 D_8019D040; -extern s16 D_8019D034; -extern s16 D_8019D036; -extern s16 D_8019D038; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019D044); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019D046); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019D048); - (*(s16 *)&D_8019D04C) = buf[0]; - (*(s16 *)&D_8019D04E) = buf[1]; - (*(s16 *)&D_8019D050) = buf[2]; - D_8019D03C = D_80114F30 + buf[0]; - D_8019CFC4 = 0; - D_8019D03E = D_80114F34 + buf[1]; - D_8019D040 = D_80114F38 + buf[2]; - D_8019D034 = D_80114F24 + buf[0]; - D_8019D036 = D_80114F28 + buf[1]; - D_8019D038 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8019CFE4; -extern SV4 D_8019CFEC; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019CFEC) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8019CFE4 = 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_8019CFEC = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019CFEC)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8019CFE4) = 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_8019CFEC) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8019D00C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8019D00C; - 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_8019CFC4; -extern s16 D_8019D168; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8019CFC4 = D_8019CFC4 + 1; - if (D_8019CFC4 >= 0x1F) { - D_8019D168 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8019CFC4; -extern s16 D_8019D168; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8019CFC4 = D_8019CFC4 + 1; - if (0x18 < D_8019CFC4) { - func_8012A4BC(); - D_8019D168 = 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_8019CFC4; -extern void (*D_8019D008)(void); -extern short D_8019D04C; -extern short D_8019D04E; -extern short D_8019D050; -extern s16 D_8019D168; - -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_8019CFC4 = D_8019CFC4 + 1; - if (D_8019CFC4 >= 0x19) { - if (D_8019D008 != 0) { - (*D_8019D008)(); - } else { - D_80114F30 = D_80114F30 + D_8019D04C; - D_80114F34 = D_80114F34 + D_8019D04E; - D_80114F38 = D_80114F38 + D_8019D050; - D_80114F24 = D_80114F24 + D_8019D04C; - D_80114F28 = D_80114F28 + D_8019D04E; - D_80114F2C = D_80114F2C + D_8019D050; - func_8012A4BC(); - } - D_8019D168 = 0; - } -} - - - -extern void (*D_801816F8[])(void); - -void func_8017BE60(void *a0) { - D_801816F8[*(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) */ diff --git a/src/ov_SC05_011/ov_SC05_011_jr_8017AE2C.c b/src/ov_SC05_011/ov_SC05_011_jr_8017AE2C.c new file mode 100644 index 000000000..152a364be --- /dev/null +++ b/src/ov_SC05_011/ov_SC05_011_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80180250; +extern u8 D_801801C0; +extern u8 D_8018019C; +extern u8 D_80180178; +extern u8 D_8018022C; +extern u8 D_80180208; +extern u8 D_801801E4; +extern u8 D_80180154; +extern void func_80145934(void); +extern u8 D_801802E0; +extern u8 D_801802BC; +extern u8 D_80180298; +extern u8 D_80180274; +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_8017F6D8[]; +extern unsigned char D_8017F708[]; +extern unsigned char D_8017F758[]; +extern unsigned char D_8017F788[]; +extern unsigned char D_8017F7B8[]; +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(void); +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_8017F808[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8017F8D0[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8017F958[]; +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_8017F960; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8019BEC0; +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_8019BEC4; +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_8017F990; +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 void 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_8017FA38[])(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_8017FA5C[])(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_8017FA4C; +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_8017FA70[])(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_8017FA7C[]; +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_8017FA8C[])(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_8017FAA4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8017FA94; +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_8017FAB8[])(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_8017FAD4[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8017FAC4; +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_8017FAE8[])(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_8017FAFC[])(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_8017FB10; +extern void (*D_8017FB38[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8017FB18; +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_8017FB84[])(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_8017FB88[])(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(void *a0); +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_8017FFEC[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8017FFFC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8019BEF8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180024[])(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_80180004; +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_80180014; +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_80180064[])(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_8018006C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180038; +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_80180078[])(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_80180048; +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_8019BF00; +extern s32 D_8019BF0C; +extern s32 D_8019BF10; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801800B4[])(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_80180088[]; +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_8019BF08; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80180304[])(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_80180124[]; +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_801803A8[])(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_801804FC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80180318; +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_80180504[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80180328; +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_80180348; +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_8018050C[])(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(void); +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_80180534[])(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_80180540[])(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_801803B4[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801805E4; +extern void func_8015D380(s32 a0); +extern unsigned char D_8017F6C8[]; +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_801805F8[]; +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_80180634[]; +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_8018067C; +extern u16 D_8018067E; +extern u16 D_80180680; +extern s32 D_80180684; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018068C; +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_80180398; +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_80180710[]; +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_801807C0[])(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_801807F0[]; +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_80180854; +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_8019BF18[]; +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_80180878[])(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_8019BF70[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_801808C0[])(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_801808B0; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8019B7A8[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_801808C8[])(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_8018091C[])(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_801808E4; +extern s16 D_80180918; +extern s16 D_80180916; +extern s16 D_80180914; +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_80180928[])(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_8019BFD0; +extern u8 D_8019BFD1; +extern u8 D_8019BFD2; +extern u8 D_8019BFD3; +extern u8 D_8019BFD4; +extern u8 D_8019BFD5; +extern u8 D_8019BFD6; +extern u8 D_8019BFD7; +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_80180938[])(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_8019C010; +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_8018097C[])(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_801809F8[]; +extern s32 D_80180A18[]; +extern u8 D_80180A94[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80180AB4[]; +extern u8 D_80180AD4[]; +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_80180B70[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80180BEC[])(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_8019B7B8; +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_80180BF8[])(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_80180C00[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80180CC8[])(void); +extern void func_80166618(void *a0); +extern void (*D_80180CD8[])(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_80180CE8[])(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_80180CF4[])(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_80180C54[]; +extern u8 D_80180C68[]; +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_80180D0C[])(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_80180D14[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80180D1C[])(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_80180D24[])(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_80180D2C[])(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_80180D34[])(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_80180D3C[])(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_80180DF0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80180DF8[])(void); +extern void func_80169F00(void *a0); +extern char D_80180DA8[]; +extern char D_80180D68[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80180E30[])(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_80180E3C[])(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_80180E84[])(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_80180F00[])(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_8019C330; +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_80180EF4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80180F38[]; +extern unsigned short D_80180F40[]; +extern unsigned short D_80180F48[]; +extern unsigned char D_8019C338[]; +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_8019C330; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80180F50[])(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_8019C46C; +extern M2C_UNK D_8019C470; +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_8019C3F8; +extern void (*D_80180F80[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8019C474[]; +extern u8 D_8019C47C[]; +extern u8 D_8019C42C[]; +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_80180F88[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80180FA4[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80180FAC[])(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_80181014[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80180FB8; +extern u8 D_80180FC4; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80181048[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80181050[])(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_801810A4[])(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_801810D8[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801810C8[]; +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_801810F4; +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); +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_8018116C[])(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_80181174[])(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_8018117C[])(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_80181184[])(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_8018118C[])(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_80181194[])(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_801811A0[])(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_801811AC[])(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_801811B8[])(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_801811C8[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801811D8[])(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_801811E0[])(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_801811E8[])(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_801811F0[])(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_801811F8[])(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_80181200[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80181208[])(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_80181210[])(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_80181218[])(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_80181220[])(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_80181228[])(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_80181230[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80181238[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80181240[])(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_80181248[])(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_80181250[])(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_80181258[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80181260[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80181268[])(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_80181270[])(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_80181278[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80181280[])(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_80181288[])(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_801812CC[])(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_80181290; +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_801812FC[])(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_80181338[])(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(s32); +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_80181390[])(); +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_801813A0[])(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_801813A8[])(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_80181510[])(); +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_8018151C[])(); +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_8019BA00; +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 int func_801789AC(void); +extern s16 D_8019D168; +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_8019CBB0; +extern short D_8019D1DC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8019CFDC; +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_8019D004; +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_8019CFC0; +extern s32 func_8017A3B0(void); +extern short D_8019CFFC; +extern short D_8019CFF8; +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_8019D138; +extern s16 D_8019D13A; +extern s16 D_8019D144; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_8019D138; + + 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_8019D144); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_8019D138+0xC == &D_8019D144; 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_8019D138 + 0xC)) < 0x101) { + D_8019D138 = 0; + D_8019D13A = 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_8019D144); + 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_8019D138 + 0xC)) < 0x101) { + D_8019D138 = 0; + D_8019D13A = 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_8019D03C; + extern s16 D_8019D03E; + extern s16 D_8019D040; + extern s16 D_8019D034; + extern s16 D_8019D036; + extern s16 D_8019D038; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019D03C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019D03E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019D040, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019D034, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019D036, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019D038, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8019CFC4; +extern u16 D_8019D044; +extern u16 D_8019D046; +extern u16 D_8019D048; +extern s16 D_8019D168; + +void func_8017B1D8(void) { + func_8012A418(); + D_8019D168 = 0; + D_8019CFC4 = 0; + D_8019D044 = D_80126B5E; + D_8019D046 = D_80126B62; + D_8019D048 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80181658[]; + extern s16 D_8019D03C; + extern s16 D_8019D034; + 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_80181658[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80181658[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019D03C; + s16 *p78C = &D_8019D034; + *(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_8019D168 = 1; + D_8019CFC4 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019CFE4; + extern SV4_8017B368 D_8019CFEC; + extern s16 D_8019D03C; + extern s16 D_8019D034; + extern u16 D_80181658; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8019CFE4; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8019CFEC; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80181658)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80181658)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8019D03C) = loc0; + (*(SV4_8017B368 *)&D_8019D034) = loc1; + D_8019D168 = 1; + D_8019CFC4 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC05_011/nonmatchings/ov_SC05_011_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80181658[]; + extern s16 D_8019D03C; + extern s16 D_8019D03E; + extern s16 D_8019D040; + extern s16 D_8019D034; + extern s16 D_8019D036; + extern s16 D_8019D038; + 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_80181658[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80181658[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019D03C; + s16 *p78C = &D_8019D034; + *(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_8019D03E; + v798 = D_8019D040; + v78C = *p78C; + v78E = D_8019D036; + v790 = D_8019D038; + __asm__ __volatile__(""); + D_8019D168 = 1; + D_8019CFC4 = 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_8019CFC4; +extern s16 D_8019D03C; +extern s16 D_8019D03E; +extern s16 D_8019D040; +extern s16 D_8019D034; +extern s16 D_8019D036; +extern s16 D_8019D038; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8019CFC4 = 0; + D_8019D03C = (s16) D_80114F30; + D_8019D03E = (s16) D_80114F34; + D_8019D040 = (s16) D_80114F38; + D_8019D034 = (s16) D_80114F24; + D_8019D036 = (s16) D_80114F28; + D_8019D038 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8019D054; +extern s16 D_8019D056; +extern s16 D_8019D058; +extern s16 D_8019D05C; +extern s16 D_8019D05E; +extern s16 D_8019D060; + +void func_8017B824(void) { + D_8019D054 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8019D056 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8019D058 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8019D05C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8019D05E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8019D060 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8019D054; +extern s16 D_8019D056; +extern s16 D_8019D058; +extern s16 D_8019D05C; +extern s16 D_8019D05E; +extern s16 D_8019D060; + +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_8019D054; + D_80114F34 = D_8019D056; + D_80114F38 = D_8019D058; + D_80114F24 = D_8019D05C; + D_80114F28 = D_8019D05E; + D_80114F2C = D_8019D060; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8019D03C), src[8..15] -> (*(S8_8017B8E8 *)&D_8019D034) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8019D03C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8019D034) = ((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_8019D044; +extern u16 D_8019D046; +extern u16 D_8019D048; + +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_8019CFC4; +extern short D_8019D04C; +extern short D_8019D04E; +extern short D_8019D050; +extern s16 D_8019D03C; +extern s16 D_8019D03E; +extern s16 D_8019D040; +extern s16 D_8019D034; +extern s16 D_8019D036; +extern s16 D_8019D038; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019D044); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019D046); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019D048); + (*(s16 *)&D_8019D04C) = buf[0]; + (*(s16 *)&D_8019D04E) = buf[1]; + (*(s16 *)&D_8019D050) = buf[2]; + D_8019D03C = D_80114F30 + buf[0]; + D_8019CFC4 = 0; + D_8019D03E = D_80114F34 + buf[1]; + D_8019D040 = D_80114F38 + buf[2]; + D_8019D034 = D_80114F24 + buf[0]; + D_8019D036 = D_80114F28 + buf[1]; + D_8019D038 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8019CFE4; +extern SV4 D_8019CFEC; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019CFEC) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8019CFE4 = 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_8019CFEC = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019CFEC)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8019CFE4) = 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_8019CFEC) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8019D00C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8019D00C; + 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_8019CFC4; +extern s16 D_8019D168; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8019CFC4 = D_8019CFC4 + 1; + if (D_8019CFC4 >= 0x1F) { + D_8019D168 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8019CFC4; +extern s16 D_8019D168; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8019CFC4 = D_8019CFC4 + 1; + if (0x18 < D_8019CFC4) { + func_8012A4BC(); + D_8019D168 = 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_8019CFC4; +extern void (*D_8019D008)(void); +extern short D_8019D04C; +extern short D_8019D04E; +extern short D_8019D050; +extern s16 D_8019D168; + +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_8019CFC4 = D_8019CFC4 + 1; + if (D_8019CFC4 >= 0x19) { + if (D_8019D008 != 0) { + (*D_8019D008)(); + } else { + D_80114F30 = D_80114F30 + D_8019D04C; + D_80114F34 = D_80114F34 + D_8019D04E; + D_80114F38 = D_80114F38 + D_8019D050; + D_80114F24 = D_80114F24 + D_8019D04C; + D_80114F28 = D_80114F28 + D_8019D04E; + D_80114F2C = D_80114F2C + D_8019D050; + func_8012A4BC(); + } + D_8019D168 = 0; + } +} + + + +extern void (*D_801816F8[])(void); + +void func_8017BE60(void *a0) { + D_801816F8[*(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) */ + diff --git a/src/ov_SC05_017/ov_SC05_017_jr_8017A4AC.c b/src/ov_SC05_017/ov_SC05_017_jr_8017A4AC.c index f98e6867b..5d9f68b19 100644 --- a/src/ov_SC05_017/ov_SC05_017_jr_8017A4AC.c +++ b/src/ov_SC05_017/ov_SC05_017_jr_8017A4AC.c @@ -2946,2480 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801ECB7C; - extern s16 D_801ECB7E; - extern s16 D_801ECB80; - extern s16 D_801ECB74; - extern s16 D_801ECB76; - extern s16 D_801ECB78; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801ECB7C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801ECB7E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801ECB80, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801ECB74, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801ECB76, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801ECB78, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801ECB04; -extern u16 D_801ECB84; -extern u16 D_801ECB86; -extern u16 D_801ECB88; -extern s16 D_801ED910; - -void func_8017B1D8(void) { - func_8012A418(); - D_801ED910 = 0; - D_801ECB04 = 0; - D_801ECB84 = D_80126B5E; - D_801ECB86 = D_80126B62; - D_801ECB88 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80190B18[]; - extern s16 D_801ECB7C; - extern s16 D_801ECB74; - 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_80190B18[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80190B18[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801ECB7C; - s16 *p78C = &D_801ECB74; - *(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_801ED910 = 1; - D_801ECB04 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801ECB24; - extern SV4_8017B368 D_801ECB2C; - extern s16 D_801ECB7C; - extern s16 D_801ECB74; - extern u16 D_80190B18; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801ECB24; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801ECB2C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80190B18)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80190B18)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801ECB7C) = loc0; - (*(SV4_8017B368 *)&D_801ECB74) = loc1; - D_801ED910 = 1; - D_801ECB04 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80190B18[]; - extern s16 D_801ECB7C; - extern s16 D_801ECB7E; - extern s16 D_801ECB80; - extern s16 D_801ECB74; - extern s16 D_801ECB76; - extern s16 D_801ECB78; - 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_80190B18[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80190B18[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801ECB7C; - s16 *p78C = &D_801ECB74; - *(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_801ECB7E; - v798 = D_801ECB80; - v78C = *p78C; - v78E = D_801ECB76; - v790 = D_801ECB78; - __asm__ __volatile__(""); - D_801ED910 = 1; - D_801ECB04 = 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_801ECB04; -extern s16 D_801ECB7C; -extern s16 D_801ECB7E; -extern s16 D_801ECB80; -extern s16 D_801ECB74; -extern s16 D_801ECB76; -extern s16 D_801ECB78; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801ECB04 = 0; - D_801ECB7C = (s16) D_80114F30; - D_801ECB7E = (s16) D_80114F34; - D_801ECB80 = (s16) D_80114F38; - D_801ECB74 = (s16) D_80114F24; - D_801ECB76 = (s16) D_80114F28; - D_801ECB78 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801ECB94; -extern s16 D_801ECB96; -extern s16 D_801ECB98; -extern s16 D_801ECB9C; -extern s16 D_801ECB9E; -extern s16 D_801ECBA0; - -void func_8017B824(void) { - D_801ECB94 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801ECB96 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801ECB98 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801ECB9C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801ECB9E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801ECBA0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801ECB94; -extern s16 D_801ECB96; -extern s16 D_801ECB98; -extern s16 D_801ECB9C; -extern s16 D_801ECB9E; -extern s16 D_801ECBA0; - -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_801ECB94; - D_80114F34 = D_801ECB96; - D_80114F38 = D_801ECB98; - D_80114F24 = D_801ECB9C; - D_80114F28 = D_801ECB9E; - D_80114F2C = D_801ECBA0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801ECB7C), src[8..15] -> (*(S8_8017B8E8 *)&D_801ECB74) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801ECB7C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801ECB74) = ((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_801ECB84; -extern u16 D_801ECB86; -extern u16 D_801ECB88; - -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_801ECB04; -extern short D_801ECB8C; -extern short D_801ECB8E; -extern short D_801ECB90; -extern s16 D_801ECB7C; -extern s16 D_801ECB7E; -extern s16 D_801ECB80; -extern s16 D_801ECB74; -extern s16 D_801ECB76; -extern s16 D_801ECB78; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801ECB84); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801ECB86); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801ECB88); - (*(s16 *)&D_801ECB8C) = buf[0]; - (*(s16 *)&D_801ECB8E) = buf[1]; - (*(s16 *)&D_801ECB90) = buf[2]; - D_801ECB7C = D_80114F30 + buf[0]; - D_801ECB04 = 0; - D_801ECB7E = D_80114F34 + buf[1]; - D_801ECB80 = D_80114F38 + buf[2]; - D_801ECB74 = D_80114F24 + buf[0]; - D_801ECB76 = D_80114F28 + buf[1]; - D_801ECB78 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801ECB24; -extern SV4 D_801ECB2C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801ECB2C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801ECB24 = 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_801ECB2C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801ECB2C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801ECB24) = 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_801ECB2C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801ECB4C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801ECB4C; - 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_801ECB04; -extern s16 D_801ED910; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801ECB04 = D_801ECB04 + 1; - if (D_801ECB04 >= 0x1F) { - D_801ED910 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801ECB04; -extern s16 D_801ED910; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801ECB04 = D_801ECB04 + 1; - if (0x18 < D_801ECB04) { - func_8012A4BC(); - D_801ED910 = 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_801ECB04; -extern void (*D_801ECB48)(void); -extern short D_801ECB8C; -extern short D_801ECB8E; -extern short D_801ECB90; -extern s16 D_801ED910; - -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_801ECB04 = D_801ECB04 + 1; - if (D_801ECB04 >= 0x19) { - if (D_801ECB48 != 0) { - (*D_801ECB48)(); - } else { - D_80114F30 = D_80114F30 + D_801ECB8C; - D_80114F34 = D_80114F34 + D_801ECB8E; - D_80114F38 = D_80114F38 + D_801ECB90; - D_80114F24 = D_80114F24 + D_801ECB8C; - D_80114F28 = D_80114F28 + D_801ECB8E; - D_80114F2C = D_80114F2C + D_801ECB90; - func_8012A4BC(); - } - D_801ED910 = 0; - } -} - - - -extern void (*D_80190BB8[])(void); - -void func_8017BE60(void *a0) { - D_80190BB8[*(u8 *)((s32)a0 + 0x4)](); -} - - - -extern void (*D_80190C58[])(void); - -void func_8017BE9C(void *a0) { - D_80190C58[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80190C60[])(void); - -void func_8017BED8(void *a0) { - D_80190C60[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80190C68[])(void); - -void func_8017BF14(void *a0) { - D_80190C68[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017BF50); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017C094); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017C100); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017C1AC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017C1EC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017C2B0); - - -extern void (*D_80190C88[])(void); - -void func_8017C338(void *a0) { - D_80190C88[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017C374); - -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); - } -} - - - -extern void (*D_80190C90[])(void); - -void func_8017C5CC(void *a0) { - D_80190C90[*(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_80190C7C; - -void func_8017C608(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_80190C7C, 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; - } -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017C710); - - -extern void (*D_80190CA8[])(void); - -void func_8017D5F0(void *a0) { - D_80190CA8[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32, s32); -extern u32 D_80190C98; - -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_80190C98 | 0x40000000; - *(s16*)((u8*)(*(s32*)((u8*)arg0 + 0x20)) + 0x12) = *(u16*)((u8*)arg0 + 0xFC); - } -} - - -DEFINE_func_8017D6A8() /* dedup: shared engine-core @0x8017D6A8 (src/shared) */ - - -extern void (*D_80190CE0[])(void); - -void func_8017D6B0(void *a0) { - D_80190CE0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017D6EC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017D77C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017D9B8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017DA08); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017DAC4); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017DBDC); - - -// @class: regalloc-order -// @stuck: none — MATCH - -extern u32 D_801ECE40; -extern u16 D_80190CE8[]; -extern u16 D_801ECE44[]; -extern s32 D_80190D08; - -extern void func_800183E0(s32 a0); - -void func_8017DC0C(void) -{ - u32 i; - u16 *p; - u32 base; - u16 *tbl; - - i = 0; - tbl = D_80190CE8; - base = D_801ECE40 >> 8; - p = D_801ECE44; - do { - *p = tbl[(base + i) & 0xF] | 0x8000; - i = i + 1; - p = p + 1; - } while (i < 0x10); - func_800183E0((s32)&D_80190D08); - D_801ECE40 = D_801ECE40 + 0x100; -} - - - -// @class: plumbing -// @stuck: none — MATCH (simple two-call wrapper, $s0 holds param across calls by default regalloc) - -extern void func_8017E050(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_8017E050, 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; -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017DD0C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017DD7C); - -extern void func_800D1EBC(void); -void func_8017DE2C(void) { - func_800D1EBC(); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017DE4C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017DEA0); - - -extern void (*D_80190D28[])(void); - -void func_8017DF4C(void *a0) { - D_80190D28[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void (*D_80190D30[])(void); - -void func_8017DF88(void *a0) { - D_80190D30[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void (*D_80190D3C[])(void); - -void func_8017DFC4(void *a0) { - D_80190D3C[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void (*D_80190D48[])(void); - -void func_8017E000(void *a0) { - D_80190D48[*(u8 *)((s32)a0 + 0x15)](); -} - - -extern s32 D_80127050; - void func_8017E03C(void) { - D_80127050 = 1; - } - - - -extern void (*D_80190FFC[])(void); - -void func_8017E050(void *a0) { - D_80190FFC[*(u8 *)((s32)a0 + 0x214)](); -} - - -void func_8017E08C(u8 *a0) { - *(s8 *)(a0 + 0x214) = *(u8 *)(a0 + 0x214) + 1; - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017E0A0); - - -extern void (*D_80191004[])(void); - -void func_8017E0D8(void *a0) { - D_80191004[*(u8 *)((s32)a0 + 0x214)](); -} - - -void func_8017E114(void *a0) { - *(s8 *)((s32)a0 + 0x214) += 1; - } - - -extern void func_8016F0E4(void); - void func_8017E128(void) { - func_8016F0E4(); - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017E148); - - -extern void (*D_8019100C[])(void); - -void func_8017E20C(void *a0) { - D_8019100C[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017E248); - -void func_8017E27C(u8 *a0) { - *(s8 *)(a0 + 0xA0) = 0; - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017E284); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017E3C4); - - -extern void (*D_80191158[])(void); - -void func_8017E5B8(void *a0) { - D_80191158[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_80029514(int); -void func_8017E5F4(void) { - func_80029514(0x3a2); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017E614); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017E6D8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017E778); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017E7EC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017E85C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017E8CC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017E92C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017EA6C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017EAE0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017EB30); - - -extern void (*D_801912B8[])(void); - -void func_8017ED1C(void *a0) { - D_801912B8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017ED58); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017ED94); - - -extern s32 func_80029178(s32 arg); - extern void func_80029124(s32, s32); - s32 func_8017EDD4(void) { - if ((func_80029178(0x110) & 0xFF) == 0) { - ((void (*)(void *, s32))func_80029124)((void *)0x110, 1); - return 1; - } - return 0; - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017EE10); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017EEC8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017EF20); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017EF78); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017EFFC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017F04C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017F0C0); - -extern void func_80029124(s32 arg0, s32 arg1); - void func_8017F174(void) { - func_80029124(0x110, 1); - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017F198); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017F274); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017F308); - -extern void func_801849B8(s32 *a0, s32 a1); - extern short D_801912E8; - void func_8017F398(short *a0) { - *(short *)((char *)a0 + 0x2) = 2; - func_801849B8((s32 *)a0, (s32)&D_801912E8); - } - - - -extern void (*D_80191350[])(void); - -void func_8017F3C4(void *a0) { - D_80191350[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_80178CBC(s32 arg0, s32 arg1); -extern short D_80191318; - -void func_8017F400(short *param) { - param[1] = 4; - func_80178CBC((int)param, (int)&D_80191318); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017F42C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017F46C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017F4C8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017F53C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017F58C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017F650); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017F6C8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017F73C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017F794); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017F81C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017F848); - - -extern void (*D_801913FC[])(void); - -void func_8017F98C(void *a0) { - D_801913FC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017F9C8); - -extern void func_80178CBC(s32 arg0, s32 arg1); -extern short D_8019139C; - -void func_8017FA2C(void *arg0) { - *(short *)((char *)arg0 + 0x2) = 0x7; - ((void (*)(s32 *, s32))func_80178CBC)(arg0, &D_8019139C); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017FA58); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017FA98); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017FB10); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017FC00); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017FCA0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017FD34); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017FDB8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017FE28); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017FEBC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017FF6C); - - -extern void func_80178CBC(s32 a0, s32 a1); - extern short D_801913D4; - void func_8017FFBC(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 11; - func_80178CBC((int)arg0, (int)&D_801913D4); - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8017FFE8); - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80180048); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801800BC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80180124); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80180188); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801801B4); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80180240); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018026C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801802B8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801803D8); - - -extern void (*D_80191504[])(void); - -void func_801804F0(void *a0) { - D_80191504[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018052C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018058C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801805CC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801805F0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80180664); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801806BC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80180748); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80180788); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80180808); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80180894); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801808D4); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801809E0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80180A20); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80180A94); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80180AEC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80180BA8); - -extern void func_801849B8(s32 *a0, s32 a1); - extern short D_80191530; - void func_80180C30(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x5; - func_801849B8((s32 *)a0, (s32)&D_80191530); - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80180C5C); - - -extern void (*D_8019187C[])(void); - -void func_80180DA4(void *a0) { - D_8019187C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80180DE0); - -extern void func_80178CBC(s32 arg0, s32 arg1); - extern short D_80191568; - void func_80180ED0(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x7; - func_80178CBC((s32 *)a0, (s32)&D_80191568); - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80180EFC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80180F3C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80180FB4); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801810A4); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181144); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801811D8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181268); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801812D8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181364); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181414); - - -extern void func_80178CBC(s32 a0, s32 a1); - extern short D_80191840; - void func_80181464(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 11; - func_80178CBC((int)arg0, (int)&D_80191840); - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181490); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801814F0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181564); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801815BC); - - -extern void (*D_80191990[])(void); - -void func_80181630(void *a0) { - D_80191990[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018166C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801816CC); - - -extern s32 func_80029178(s32 arg); - extern void func_80029124(s32, s32); - s32 func_801816DC(void) { - if ((func_80029178(0x113) & 0xFF) == 0) { - ((void (*)(void *, s32))func_80029124)((void *)0x113, 1); - return 1; - } - return 0; - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181718); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181758); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801817F0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181830); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801818A0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018193C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181A4C); - -extern void func_801849B8(s32 *a0, s32 a1); - extern short D_801919AC; - void func_80181B04(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x2; - func_801849B8((s32 *)a0, (s32)&D_801919AC); - } - - - -extern void (*D_80191AA4[])(void); - -void func_80181B30(void *a0) { - D_80191AA4[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_80178CBC(s32 a0, s32 a1); - extern short D_80191A54; - void func_80181B6C(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 4; - func_80178CBC((int)arg0, (int)&D_80191A54); - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181B98); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181BD8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181C1C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181C60); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181CA4); - - -void func_80181CF0(void *a0) { - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 2; - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181D00); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181D50); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181E0C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181E90); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181F00); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181F60); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80181FC0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182034); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182084); - - -extern void (*D_80191C18[])(void); - -void func_80182234(void *a0) { - D_80191C18[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_80178CBC(s32 a0, s32 a1); - extern short D_80191B18; - void func_80182270(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 5; - func_80178CBC((int)arg0, (int)&D_80191B18); - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018229C); - - -extern s32 func_80029178(s32 arg); - extern void func_80029124(s32, s32); - s32 func_801822DC(void) { - if ((func_80029178(0x115) & 0xFF) == 0) { - ((void (*)(void *, s32))func_80029124)((void *)0x115, 1); - return 1; - } - return 0; - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182318); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801823D0); - -extern s32 func_80184CA4(s32 a0); -extern s32 func_80181F00(void *a0); -void func_80182410(int param_1) -{ - if (((int (*)(void))func_80184CA4)() != 0) { - ((void (*)(int))func_80181F00)(param_1); - } -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182448); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801824AC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801824FC); - -extern void func_80029124(s32 arg0, s32 arg1); - void func_80182540(void) { - func_80029124(0x115, 1); - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182564); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018268C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182750); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801827E4); - -extern void func_801849B8(s32 *a0, s32 a1); - extern short D_80191C44; - void func_80182874(short *param_1) { - *(short *)((char *)param_1 + 2) = 1; - ((void (*)(int, int))func_801849B8)((int)param_1, &D_80191C44); - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801828A0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801828EC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182A28); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182A74); - - -extern void (*D_80191E84[])(void); - -void func_80182BB0(void *a0) { - D_80191E84[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182BEC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182C2C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182C6C); - - -extern s32 func_80029178(s32 arg); - extern void func_80029124(s32, s32); - s32 func_80182CAC(void) { - if ((func_80029178(0x116) & 0xFF) == 0) { - ((void (*)(void *, s32))func_80029124)((void *)0x116, 1); - return 1; - } - return 0; - } - - -extern s16 func_80184B44(void); -s32 func_80182CE8(void) { - return ((s32 (*)(void))func_80184B44)() == 1; -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182D0C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182D3C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182D6C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182D9C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182DCC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182E18); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182E68); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182EB4); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182F04); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182F50); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80182FA8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80183004); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018305C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80183100); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801831C8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801832C4); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80183328); - - -extern void (*D_80191F98[])(void); - -void func_80183380(void *a0) { - D_80191F98[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_80178CBC(s32 a0, s32 a1); - extern short D_80191F38; - void func_801833BC(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 4; - func_80178CBC((int)arg0, (int)&D_80191F38); - } - - -extern void func_80178CBC(s32 arg0, s32 arg1); - extern short D_80191F70; - void func_801833E8(short *param) { - param[1] = 0x7; - func_80178CBC((int)param, (int)&D_80191F70); - } - - -extern void func_80178CBC(s32 arg0, s32 arg1); - extern short D_80191F70; - void func_80183414(short *param) { - param[1] = 0xD; - func_80178CBC((int)param, (int)&D_80191F70); - } - - -extern void func_80178CBC(s32 arg0, s32 arg1); - extern short D_80191F70; - void func_80183440(short *param) { - param[1] = 0xA; - func_80178CBC((int)param, (int)&D_80191F70); - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018346C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801834A4); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801834F8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80183558); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801835FC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801836A4); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80183724); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80183774); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801837D4); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80183830); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801838A0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80183980); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801839AC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80183A08); - - -extern void (*D_80192140[])(void); - -void func_80183CC0(void *a0) { - D_80192140[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_80178CBC(s32 a0, s32 a1); - extern short D_801920BC; - void func_80183CFC(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 4; - func_80178CBC((int)arg0, (int)&D_801920BC); - } - - -extern void func_80178CBC(s32 arg0, s32 arg1); - extern short D_80192110; - void func_80183D28(short *a0) { - *(short *)((char *)a0 + 2) = 0x7; - func_80178CBC((s32 *)a0, (s32)&D_80192110); - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80183D54); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80183DB8); - -extern void func_8014AD7C(s32 arg); - void func_80183DEC(void) { - func_8014AD7C(0x3C); - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80183E0C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80183E44); - -extern s16 func_80184B44(void); -s32 func_80183ED4(void) { - return ((s32 (*)(void))func_80184B44)() == 1; -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80183EF8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80183F44); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184004); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184054); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801840DC); - -extern void func_801849B8(s32 *a0, s32 a1); - extern short D_80192160; - void func_801841B8(short *param_1) { - *(short *)((char *)param_1 + 0x2) = 2; - func_801849B8((s32 *)param_1, (s32)&D_80192160); - } - - - -extern void (*D_801921D8[])(void); - -void func_801841E4(void *a0) { - D_801921D8[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_80178CBC(s32 arg0, s32 arg1); - extern short D_801921A0; - void func_80184220(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x4; - ((void (*)(s32 *, s32))func_80178CBC)((s32 *)a0, (s32)&D_801921A0); - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018424C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184284); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801842C4); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184310); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184360); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801843E0); - - -void func_8018449C(void *a0) { - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; - } - - - -void func_801844AC(void *a0) { - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 2; - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801844BC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184558); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184584); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801845B0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801845DC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184660); - -extern s32 func_80184660(s32 arg); - extern void func_801847C4(void *a0); - void func_80184790(void *a0) { - *(s32 *)((u8 *)a0 + 0xe0) = func_80184660((s32)a0); - func_801847C4(a0); - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801847C4); - - -extern short D_800BA2BA; - s32 func_80184804(s32 arg0) { - return *(short *)((char *)&D_800BA2BA + (*(short *)(*(s32 *)(arg0 + 0xd0) + 0x10) << 2)); - } - - - -extern void (*D_801B86DC[])(void); - -void func_8018482C(void *a0) { - D_801B86DC[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_80184868(void) { -} - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184870); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801848AC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801848D0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184928); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184990); - -void func_801849B0(void *a0) { - *(s16 *)((s32)a0 + 0x5C) = 0; - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801849B8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184A00); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184A5C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184AD0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184B44); - -extern s32 func_80029504(void); -extern void func_80029514(s32 arg); - -void func_80184BA0(void) { - if (((s32 (*)(void))func_80029504)() == 0x3A2) { - ((void (*)(s32))func_80029514)(0x3AC); - } -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184BD4); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184CA4); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184E6C); - - -extern void (*D_801B86FC[])(void); - -void func_80184EB4(void *a0) { - D_801B86FC[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_80184EF0(void) { -} - -void func_80184EF8(void) { -} - -void func_80184F00(void) { -} - -void func_80184F08(void) { -} - -void func_80184F10(void) { -} - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184F18); - -void func_80184F5C(void) { -} - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184F64); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80184FEC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801851C4); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80185364); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801853E0); - -extern s32 func_80185BEC(void); - void func_801854AC(void) { - func_80185BEC(); - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801854CC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018559C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80185604); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80185678); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801856D8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80185758); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801857B0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80185810); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80185858); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801858A8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801858E0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018596C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80185A10); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80185A70); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80185BEC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80185C20); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80185C54); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80185CB8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80185D2C); - - -extern void (*D_801B89F8[])(void); - -void func_80185D84(void *a0) { - D_801B89F8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80185DC0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80185E3C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80185F5C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80185FA8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801860B4); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80186110); - -extern s16 D_801ECE90; - s32 func_80186150(void) { - return D_801ECE90; - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80186160); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801861AC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018621C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80186270); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80186B24); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801874B0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801875E8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80187DEC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80188128); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80188478); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_801886B8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80188884); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80188B1C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80188F14); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80189240); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80189ADC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80189B14); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80189B54); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80189BA0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80189DB4); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80189E68); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80189ED0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80189F24); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_80189FE0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018A3C8); - - -extern void (*D_801E67B0[])(void); - -void func_8018A440(void *a0) { - D_801E67B0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018A47C); - - -extern void (*D_801E67DC[])(void); - -void func_8018A598(void *a0) { - D_801E67DC[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801E67E4[])(void); - -void func_8018A5D4(void *a0) { - D_801E67E4[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801E67F4[])(void); - -void func_8018A610(void *a0) { - D_801E67F4[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801E6804[])(void); - -void func_8018A64C(void *a0) { - D_801E6804[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_8018A688(void) { -} - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018A690); - - -extern void (*D_801E6814[])(void); - -void func_8018A83C(void *a0) { - D_801E6814[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018A878); - -extern s32 D_801E64B0; -extern s32 D_801ED7E0; -extern void func_80189E68(s32 arg0, s32 arg1); - -void func_8018A9D4(void) { - D_801ED7E0 = &D_801E64B0; - func_80189E68(0x474, 0x4B0); -} - - - -extern s32 D_801E64E8; -extern s32 D_801ED7E0; -extern void func_80189E68(s32 arg0, s32 arg1); - -void func_8018AA08(void) { - D_801ED7E0 = &D_801E64E8; - func_80189E68(0x474, 0x4EC); -} - - - -extern s32 D_801E6520; -extern s32 D_801ED7E0; -extern void func_80189E68(s32 arg0, s32 arg1); - -void func_8018AA3C(void) { - D_801ED7E0 = &D_801E6520; - func_80189E68(0x474, 0x4B0); -} - - - -extern s32 D_801E6548; -extern s32 D_801ED7E0; -extern void func_80189E68(s32 arg0, s32 arg1); - -void func_8018AA70(void) { - D_801ED7E0 = &D_801E6548; - func_80189E68(0x474, 0x4B0); -} - - - -extern s32 D_801E6580; -extern s32 D_801ED7E0; -extern void func_80189E68(s32 arg0, s32 arg1); - -void func_8018AAA4(void) { - D_801ED7E0 = &D_801E6580; - func_80189E68(0x474, 0x528); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018AAD8); - - -extern s32 D_801E65F8; -extern s32 D_801ED7E0; -extern void func_80189E68(s32 arg0, s32 arg1); - -void func_8018AB4C(void) { - D_801ED7E0 = &D_801E65F8; - func_80189E68(0x474, 0x1A4); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018AB80); - -extern s32 D_801E6650; -extern s32 D_801ED7E0; -extern void func_80189E68(s32 arg0, s32 arg1); - -void func_8018ABCC(void) { - D_801ED7E0 = &D_801E6650; - func_80189E68(0x12C, 0x1A4); -} - - - -extern s32 D_801E66A0; -extern s32 D_801ED7E0; -extern void func_80189E68(s32 arg0, s32 arg1); - -void func_8018AC00(void) { - D_801ED7E0 = &D_801E66A0; - func_80189E68(0x474, 0x4B0); -} - - - -extern s32 D_801E6700; -extern s32 D_801ED7E0; -extern void func_80189E68(s32 arg0, s32 arg1); - -void func_8018AC34(void) { - D_801ED7E0 = &D_801E6700; - func_80189E68(0x474, 0x4B0); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018AC68); - - -extern s32 D_801E6748; -extern s32 D_801ED7E0; -extern void func_80189E68(s32 arg0, s32 arg1); - -void func_8018ACB4(void) { - D_801ED7E0 = &D_801E6748; - func_80189E68(0x564, 0x1A4); -} - - - -s32 func_8018ACE8(void) { - return -1; -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018ACF0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018ADAC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018AE58); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018AE9C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018AFB8); - - -extern void func_8012B414(int a0); - void func_8018B054(s32 arg0) { - s32 temp_v1 = *(s32 *)(arg0 + 0x20); - *(s16 *)(temp_v1 + 0x14) += 0x8; - ((void (*)(void))func_8012B414)(); - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B088); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B100); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B148); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B1EC); - -void func_8018B264(void *a0) { - M2C_FIELD(a0, s16 *, 0x2) = 2; - } - - - -extern void (*D_801E682C[])(void); - -void func_8018B270(void *a0) { - D_801E682C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B2AC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B314); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B360); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B3A0); - -void func_8018B3E8(void *a0) { - M2C_FIELD(a0, s16 *, 0x2) = 2; - } - - - -extern void (*D_801E6840[])(void); - -void func_8018B3F4(void *a0) { - D_801E6840[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B430); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B498); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B4FC); - -void func_8018B568(void *a0) { - M2C_FIELD(a0, s16 *, 0x2) = 2; - } - - - -extern void (*D_801E6854[])(void); - -void func_8018B574(void *a0) { - D_801E6854[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B5B0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B604); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B648); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B688); - -void func_8018B6D0(s32 *a0) { - *(s16 *)((s32)a0 + 0x2) = 0x2; - } - - - -extern void (*D_801E6868[])(void); - -void func_8018B6DC(void *a0) { - D_801E6868[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B718); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B780); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B7E4); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B850); - - -extern void (*D_801E6874[])(void); - -void func_8018B93C(void *a0) { - D_801E6874[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B978); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018B9DC); - - -extern void (*D_801E687C[])(void); - -void func_8018BA58(void *a0) { - D_801E687C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -void func_8018BA94(void *a0) { - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018BAA4); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018BAE0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018BB0C); - - -extern void (*D_801E6950[])(void); - -void func_8018BB38(void *a0) { - D_801E6950[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018BB74); - -extern s32 func_8014CB1C(void); - s32 func_8018BBE8(void) { - return func_8014CB1C() != 0; - } - - -extern void func_8014B2A8(void); -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_8018BC08(void) { - func_8014B2A8(); - ((s32 (*)(s32, s32))func_8002D4C8)(0x464, 0); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018BC34); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018BC64); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018BCCC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018BD38); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018BDB0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018BE14); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018BEE0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018BF4C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018BF78); - - -extern void (*D_801E6A3C[])(void); - -void func_8018C068(void *a0) { - D_801E6A3C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_80178CBC(s32 a0, s32 a1); - extern short D_801E69CC; - void func_8018C0A4(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 4; - func_80178CBC((int)arg0, (int)&D_801E69CC); - } - - -extern s32 func_800D0EC4(); -s32 func_8018C0D0(void) { - return func_800D0EC4() == 0; -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018C0F0); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018C194); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018C218); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018C2AC); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018C2FC); - -extern void func_8012B2CC(s32 arg); - void func_8018C360(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 arg0); - void func_8018C390(u8 *param_1) { - s32 p; - *(short *)(param_1 + 0x2) = 4; - p = *(s32 *)(param_1 + 0x20); - *(short *)(p + 0x12) = 0x600; - func_8012B2CC((s32)param_1); - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018C3C0); - - -extern void (*D_801E9920[])(void); - -void func_8018C530(void *a0) { - D_801E9920[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018C56C); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018C5E8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018C658); - -extern void func_8002D4C8(s32 arg0, s32 arg1); - void func_8018C670(void) { - func_8002D4C8(0x7E0, 0); - } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018C694); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018C7C8); - -void func_8018C830(void) { -} - -void func_8018C838(void) { -} - - -extern void (*D_801E9A58[])(void); - -void func_8018C840(void *a0) { - D_801E9A58[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018C87C); - -void func_8018C8E0(void) { -} - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018C8E8); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018C934); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018C974); - - -extern void (*D_801E9B20[])(void); - -void func_8018C9D0(void *a0) { - D_801E9B20[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: iv-combine -// @stuck: none — MATCH (49 ins). gcc folds (v0+0x1800)-0x1000 -> v0+0x800; re-tie barrier on the WORKING reg v0 (NOT a saved local) forces the target chain v0=base+0x1800; s2=copy; v0-=0x1000; s1=v0<<5. NO register pins (pins re-trigger the lhu/lh dual-load CSE collapse and shrink the frame; natural alloc gives s0-s3 + frame 0x38). -extern int rand(void); -extern u8 *func_8012913C(s32 a0); - -extern unsigned short D_801E9B00[]; - -void func_8018CA0C(s32 param_1, s32 param_2) -{ - int s3; - unsigned short s0; - int s2; - int s1; - int v0; - int iVar3; - - s0 = D_801E9B00[*(short *)(param_1 + 0xfc)]; - s3 = param_2; - if (((short *)D_801E9B00)[*(short *)(param_1 + 0xfc)] == 0) { - *(short *)(param_1 + 0xfc) = 0; - s0 = D_801E9B00[0]; - } - *(short *)(param_1 + 0xfc) = *(short *)(param_1 + 0xfc) + 1; - v0 = (rand() & 3) * 0x400 + 0x1800; - s2 = v0; - __asm__ __volatile__("" : "=r"(v0) : "0"(v0)); - s1 = (v0 - 0x1000) * 0x20; - iVar3 = ((int (*)(int))func_8012913C)(4); - if (iVar3 != 0) { - *(short *)(iVar3 + 6) = s3; - *(short *)(iVar3 + 0xa) = s0; - *(short *)(iVar3 + 0xe) = 0; - *(int *)(iVar3 + 0x10) = s1; - *(short *)(iVar3 + 0x2c) = s2; - } -} - - - -extern void (*D_801E9B34[])(void); - -void func_8018CAD0(void *a0) { - D_801E9B34[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH - -extern void func_8018CA0C(s32, s32); -extern s32 func_8012AD50(void *a0); - -void func_8018CB0C(int param_1) { - short uVar1; - - *(short *)(param_1 + 0xfc) = 0; - *(int *)(param_1 + 0x1c) = 1; - uVar1 = *(unsigned short *)(param_1 + 0x70) & 7; - *(short *)(param_1 + 0xfe) = (uVar1 < 2) ? 0x1e : 0xf; - if (uVar1 != 0) { - func_8018CA0C(param_1, -0x80); - func_8018CA0C(param_1, -0x30); - func_8018CA0C(param_1, 0x20); - func_8018CA0C(param_1, 0x70); - func_8018CA0C(param_1, 0xc0); - } - if (1 < uVar1) { - func_8018CA0C(param_1, -0x58); - func_8018CA0C(param_1, -0x8); - func_8018CA0C(param_1, 0x48); - func_8018CA0C(param_1, 0x98); - func_8018CA0C(param_1, 0xe8); - } - ((void (*)(int))func_8012AD50)(param_1); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (param_1 naturally lands in $s0 across the call, mirrors sibling func_80184AEC) - -extern s32 func_8012BEE8(s32 a0); -extern void func_8018CA0C(s32, s32); - -void func_8018CBF4(s32 arg0) { - if (func_8012BEE8(arg0)) { - *(s32 *)(arg0 + 0x1c) = (s32)*(s16 *)(arg0 + 0xfe); - func_8018CA0C(arg0, 0x110); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (expected) -extern void func_8001CB00(int param_1, void *src, int len, int n); - -extern unsigned char D_801E9B28; - -void func_8018CC34(int param_1) -{ - unsigned short uVar1; - int iVar2; - - iVar2 = *(int *)(param_1 + 0x20); - func_8001CB00(iVar2, &D_801E9B28, 0x280, 0x100); - *(unsigned int *)(iVar2 + 4) = *(unsigned int *)(iVar2 + 4) | 0x70000000; - uVar1 = *(unsigned short *)(param_1 + 0x2c); - *(unsigned char *)(iVar2 + 0x27) = 0x9e; - *(unsigned short *)(iVar2 + 0x2c) = 4; - *(unsigned short *)(iVar2 + 0x1c) = uVar1; - *(unsigned short *)(iVar2 + 0x1a) = uVar1; - *(unsigned short *)(iVar2 + 0x18) = uVar1; - *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + 1; - return; -} - - - -extern void func_801292C8(u8 *a0); - -void func_8018CCBC(u8 *a0) { - *(s32 *)(a0 + 0x4) = *(s32 *)(a0 + 0x4) - *(s32 *)(a0 + 0x10); - if (*(s16 *)(a0 + 0x6) < -0x110) { - func_801292C8(a0); - } -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018CD04); - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017A4AC", func_8018CDB0); - - - diff --git a/src/ov_SC05_017/ov_SC05_017_jr_8017AE2C.c b/src/ov_SC05_017/ov_SC05_017_jr_8017AE2C.c new file mode 100644 index 000000000..0ee794ca7 --- /dev/null +++ b/src/ov_SC05_017/ov_SC05_017_jr_8017AE2C.c @@ -0,0 +1,5357 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018F710; +extern u8 D_8018F680; +extern u8 D_8018F65C; +extern u8 D_8018F638; +extern u8 D_8018F6EC; +extern u8 D_8018F6C8; +extern u8 D_8018F6A4; +extern u8 D_8018F614; +extern void func_80145934(void); +extern u8 D_8018F7A0; +extern u8 D_8018F77C; +extern u8 D_8018F758; +extern u8 D_8018F734; +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_8018EB98[]; +extern unsigned char D_8018EBC8[]; +extern unsigned char D_8018EC18[]; +extern unsigned char D_8018EC48[]; +extern unsigned char D_8018EC78[]; +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(void); +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_8018ECC8[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018ED90[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018EE18[]; +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_8018EE20; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801EBA00; +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_801EBA04; +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_8018EE50; +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 void 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_8018EEF8[])(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_8018EF1C[])(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_8018EF0C; +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_8018EF30[])(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_8018EF3C[]; +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_8018EF4C[])(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_8018EF64[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018EF54; +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_8018EF78[])(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_8018EF94[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018EF84; +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_8018EFA8[])(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_8018EFBC[])(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_8018EFD0; +extern void (*D_8018EFF8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018EFD8; +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_8018F044[])(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_8018F048[])(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(void *a0); +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_8018F4AC[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018F4BC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801EBA38; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018F4E4[])(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_8018F4C4; +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_8018F4D4; +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_8018F524[])(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_8018F52C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018F4F8; +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_8018F538[])(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_8018F508; +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_801EBA40; +extern s32 D_801EBA4C; +extern s32 D_801EBA50; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018F574[])(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_8018F548[]; +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_801EBA48; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018F7C4[])(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_8018F5E4[]; +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_8018F868[])(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_8018F9BC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018F7D8; +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_8018F9C4[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018F7E8; +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_8018F808; +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_8018F9CC[])(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(void); +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_8018F9F4[])(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_8018FA00[])(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_8018F874[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018FAA4; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018EB88[]; +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_8018FAB8[]; +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_8018FAF4[]; +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_8018FB3C; +extern u16 D_8018FB3E; +extern u16 D_8018FB40; +extern s32 D_8018FB44; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018FB4C; +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_8018F858; +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_8018FBD0[]; +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_8018FC80[])(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_8018FCB0[]; +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_8018FD14; +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_801EBA58[]; +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_8018FD38[])(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_801EBAB0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018FD80[])(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_8018FD70; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801EAE90[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_8018FD88[])(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_8018FDDC[])(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_8018FDA4; +extern s16 D_8018FDD8; +extern s16 D_8018FDD6; +extern s16 D_8018FDD4; +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_8018FDE8[])(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_801EBB10; +extern u8 D_801EBB11; +extern u8 D_801EBB12; +extern u8 D_801EBB13; +extern u8 D_801EBB14; +extern u8 D_801EBB15; +extern u8 D_801EBB16; +extern u8 D_801EBB17; +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_8018FDF8[])(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_801EBB50; +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_8018FE3C[])(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_8018FEB8[]; +extern s32 D_8018FED8[]; +extern u8 D_8018FF54[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018FF74[]; +extern u8 D_8018FF94[]; +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_80190030[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801900AC[])(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_801EAEA0; +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_801900B8[])(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_801900C0[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80190188[])(void); +extern void func_80166618(void *a0); +extern void (*D_80190198[])(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_801901A8[])(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_801901B4[])(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_80190114[]; +extern u8 D_80190128[]; +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_801901CC[])(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_801901D4[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_801901DC[])(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_801901E4[])(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_801901EC[])(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_801901F4[])(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_801901FC[])(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_801902B0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801902B8[])(void); +extern void func_80169F00(void *a0); +extern char D_80190268[]; +extern char D_80190228[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_801902F0[])(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_801902FC[])(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_80190344[])(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_801903C0[])(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_801EBE70; +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_801903B4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_801903F8[]; +extern unsigned short D_80190400[]; +extern unsigned short D_80190408[]; +extern unsigned char D_801EBE78[]; +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_801EBE70; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80190410[])(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_801EBFAC; +extern M2C_UNK D_801EBFB0; +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_801EBF38; +extern void (*D_80190440[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801EBFB4[]; +extern u8 D_801EBFBC[]; +extern u8 D_801EBF6C[]; +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_80190448[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80190464[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8019046C[])(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_801904D4[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80190478; +extern u8 D_80190484; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80190508[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80190510[])(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_80190564[])(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_80190598[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80190588[]; +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_801905B4; +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); +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_8019062C[])(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_80190634[])(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_8019063C[])(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_80190644[])(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_8019064C[])(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_80190654[])(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_80190660[])(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_8019066C[])(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_80190678[])(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_80190688[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80190698[])(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_801906A0[])(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_801906A8[])(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_801906B0[])(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_801906B8[])(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_801906C0[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801906C8[])(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_801906D0[])(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_801906D8[])(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_801906E0[])(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_801906E8[])(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_801906F0[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801906F8[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80190700[])(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_80190708[])(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_80190710[])(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_80190718[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80190720[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80190728[])(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_80190730[])(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_80190738[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80190740[])(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_80190748[])(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_8019078C[])(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_80190750; +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_801907BC[])(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_801907F8[])(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(s32); +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_80190850[])(); +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_80190860[])(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_80190868[])(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_801909D0[])(); +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_801909DC[])(); +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_801EB0E8; +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 int func_801789AC(void); +extern s16 D_801ED910; +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_801EC6F0; +extern short D_801ED984; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801ECB1C; +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_801ECB44; +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_801ECB00; +extern s32 func_8017A3B0(void); +extern short D_801ECB3C; +extern short D_801ECB38; +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_801ED8C8; +extern s16 D_801ED8CA; +extern s16 D_801ED8D4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801ED8C8; + + 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_801ED8D4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801ED8C8+0xC == &D_801ED8D4; 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_801ED8C8 + 0xC)) < 0x101) { + D_801ED8C8 = 0; + D_801ED8CA = 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_801ED8D4); + 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_801ED8C8 + 0xC)) < 0x101) { + D_801ED8C8 = 0; + D_801ED8CA = 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_801ECB7C; + extern s16 D_801ECB7E; + extern s16 D_801ECB80; + extern s16 D_801ECB74; + extern s16 D_801ECB76; + extern s16 D_801ECB78; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801ECB7C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801ECB7E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801ECB80, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801ECB74, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801ECB76, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801ECB78, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801ECB04; +extern u16 D_801ECB84; +extern u16 D_801ECB86; +extern u16 D_801ECB88; +extern s16 D_801ED910; + +void func_8017B1D8(void) { + func_8012A418(); + D_801ED910 = 0; + D_801ECB04 = 0; + D_801ECB84 = D_80126B5E; + D_801ECB86 = D_80126B62; + D_801ECB88 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80190B18[]; + extern s16 D_801ECB7C; + extern s16 D_801ECB74; + 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_80190B18[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80190B18[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801ECB7C; + s16 *p78C = &D_801ECB74; + *(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_801ED910 = 1; + D_801ECB04 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801ECB24; + extern SV4_8017B368 D_801ECB2C; + extern s16 D_801ECB7C; + extern s16 D_801ECB74; + extern u16 D_80190B18; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801ECB24; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801ECB2C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80190B18)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80190B18)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801ECB7C) = loc0; + (*(SV4_8017B368 *)&D_801ECB74) = loc1; + D_801ED910 = 1; + D_801ECB04 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80190B18[]; + extern s16 D_801ECB7C; + extern s16 D_801ECB7E; + extern s16 D_801ECB80; + extern s16 D_801ECB74; + extern s16 D_801ECB76; + extern s16 D_801ECB78; + 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_80190B18[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80190B18[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801ECB7C; + s16 *p78C = &D_801ECB74; + *(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_801ECB7E; + v798 = D_801ECB80; + v78C = *p78C; + v78E = D_801ECB76; + v790 = D_801ECB78; + __asm__ __volatile__(""); + D_801ED910 = 1; + D_801ECB04 = 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_801ECB04; +extern s16 D_801ECB7C; +extern s16 D_801ECB7E; +extern s16 D_801ECB80; +extern s16 D_801ECB74; +extern s16 D_801ECB76; +extern s16 D_801ECB78; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801ECB04 = 0; + D_801ECB7C = (s16) D_80114F30; + D_801ECB7E = (s16) D_80114F34; + D_801ECB80 = (s16) D_80114F38; + D_801ECB74 = (s16) D_80114F24; + D_801ECB76 = (s16) D_80114F28; + D_801ECB78 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801ECB94; +extern s16 D_801ECB96; +extern s16 D_801ECB98; +extern s16 D_801ECB9C; +extern s16 D_801ECB9E; +extern s16 D_801ECBA0; + +void func_8017B824(void) { + D_801ECB94 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801ECB96 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801ECB98 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801ECB9C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801ECB9E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801ECBA0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801ECB94; +extern s16 D_801ECB96; +extern s16 D_801ECB98; +extern s16 D_801ECB9C; +extern s16 D_801ECB9E; +extern s16 D_801ECBA0; + +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_801ECB94; + D_80114F34 = D_801ECB96; + D_80114F38 = D_801ECB98; + D_80114F24 = D_801ECB9C; + D_80114F28 = D_801ECB9E; + D_80114F2C = D_801ECBA0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801ECB7C), src[8..15] -> (*(S8_8017B8E8 *)&D_801ECB74) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801ECB7C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801ECB74) = ((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_801ECB84; +extern u16 D_801ECB86; +extern u16 D_801ECB88; + +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_801ECB04; +extern short D_801ECB8C; +extern short D_801ECB8E; +extern short D_801ECB90; +extern s16 D_801ECB7C; +extern s16 D_801ECB7E; +extern s16 D_801ECB80; +extern s16 D_801ECB74; +extern s16 D_801ECB76; +extern s16 D_801ECB78; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801ECB84); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801ECB86); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801ECB88); + (*(s16 *)&D_801ECB8C) = buf[0]; + (*(s16 *)&D_801ECB8E) = buf[1]; + (*(s16 *)&D_801ECB90) = buf[2]; + D_801ECB7C = D_80114F30 + buf[0]; + D_801ECB04 = 0; + D_801ECB7E = D_80114F34 + buf[1]; + D_801ECB80 = D_80114F38 + buf[2]; + D_801ECB74 = D_80114F24 + buf[0]; + D_801ECB76 = D_80114F28 + buf[1]; + D_801ECB78 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801ECB24; +extern SV4 D_801ECB2C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801ECB2C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801ECB24 = 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_801ECB2C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801ECB2C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801ECB24) = 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_801ECB2C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801ECB4C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801ECB4C; + 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_801ECB04; +extern s16 D_801ED910; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801ECB04 = D_801ECB04 + 1; + if (D_801ECB04 >= 0x1F) { + D_801ED910 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801ECB04; +extern s16 D_801ED910; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801ECB04 = D_801ECB04 + 1; + if (0x18 < D_801ECB04) { + func_8012A4BC(); + D_801ED910 = 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_801ECB04; +extern void (*D_801ECB48)(void); +extern short D_801ECB8C; +extern short D_801ECB8E; +extern short D_801ECB90; +extern s16 D_801ED910; + +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_801ECB04 = D_801ECB04 + 1; + if (D_801ECB04 >= 0x19) { + if (D_801ECB48 != 0) { + (*D_801ECB48)(); + } else { + D_80114F30 = D_80114F30 + D_801ECB8C; + D_80114F34 = D_80114F34 + D_801ECB8E; + D_80114F38 = D_80114F38 + D_801ECB90; + D_80114F24 = D_80114F24 + D_801ECB8C; + D_80114F28 = D_80114F28 + D_801ECB8E; + D_80114F2C = D_80114F2C + D_801ECB90; + func_8012A4BC(); + } + D_801ED910 = 0; + } +} + + + +extern void (*D_80190BB8[])(void); + +void func_8017BE60(void *a0) { + D_80190BB8[*(u8 *)((s32)a0 + 0x4)](); +} + + + +extern void (*D_80190C58[])(void); + +void func_8017BE9C(void *a0) { + D_80190C58[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80190C60[])(void); + +void func_8017BED8(void *a0) { + D_80190C60[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80190C68[])(void); + +void func_8017BF14(void *a0) { + D_80190C68[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017BF50); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017C094); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017C100); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017C1AC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017C1EC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017C2B0); + + +extern void (*D_80190C88[])(void); + +void func_8017C338(void *a0) { + D_80190C88[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017C374); + +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); + } +} + + + +extern void (*D_80190C90[])(void); + +void func_8017C5CC(void *a0) { + D_80190C90[*(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_80190C7C; + +void func_8017C608(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_80190C7C, 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; + } +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017C710); + + +extern void (*D_80190CA8[])(void); + +void func_8017D5F0(void *a0) { + D_80190CA8[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32, s32); +extern u32 D_80190C98; + +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_80190C98 | 0x40000000; + *(s16*)((u8*)(*(s32*)((u8*)arg0 + 0x20)) + 0x12) = *(u16*)((u8*)arg0 + 0xFC); + } +} + + +DEFINE_func_8017D6A8() /* dedup: shared engine-core @0x8017D6A8 (src/shared) */ + + +extern void (*D_80190CE0[])(void); + +void func_8017D6B0(void *a0) { + D_80190CE0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017D6EC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017D77C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017D9B8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017DA08); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017DAC4); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017DBDC); + + +// @class: regalloc-order +// @stuck: none — MATCH + +extern u32 D_801ECE40; +extern u16 D_80190CE8[]; +extern u16 D_801ECE44[]; +extern s32 D_80190D08; + +extern void func_800183E0(s32 a0); + +void func_8017DC0C(void) +{ + u32 i; + u16 *p; + u32 base; + u16 *tbl; + + i = 0; + tbl = D_80190CE8; + base = D_801ECE40 >> 8; + p = D_801ECE44; + do { + *p = tbl[(base + i) & 0xF] | 0x8000; + i = i + 1; + p = p + 1; + } while (i < 0x10); + func_800183E0((s32)&D_80190D08); + D_801ECE40 = D_801ECE40 + 0x100; +} + + + +// @class: plumbing +// @stuck: none — MATCH (simple two-call wrapper, $s0 holds param across calls by default regalloc) + +extern void func_8017E050(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_8017E050, 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; +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017DD0C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017DD7C); + +extern void func_800D1EBC(void); +void func_8017DE2C(void) { + func_800D1EBC(); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017DE4C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017DEA0); + + +extern void (*D_80190D28[])(void); + +void func_8017DF4C(void *a0) { + D_80190D28[*(u8 *)((s32)a0 + 0x15)](); +} + + + +extern void (*D_80190D30[])(void); + +void func_8017DF88(void *a0) { + D_80190D30[*(u8 *)((s32)a0 + 0x15)](); +} + + + +extern void (*D_80190D3C[])(void); + +void func_8017DFC4(void *a0) { + D_80190D3C[*(u8 *)((s32)a0 + 0x15)](); +} + + + +extern void (*D_80190D48[])(void); + +void func_8017E000(void *a0) { + D_80190D48[*(u8 *)((s32)a0 + 0x15)](); +} + + +extern s32 D_80127050; + void func_8017E03C(void) { + D_80127050 = 1; + } + + + +extern void (*D_80190FFC[])(void); + +void func_8017E050(void *a0) { + D_80190FFC[*(u8 *)((s32)a0 + 0x214)](); +} + + +void func_8017E08C(u8 *a0) { + *(s8 *)(a0 + 0x214) = *(u8 *)(a0 + 0x214) + 1; + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017E0A0); + + +extern void (*D_80191004[])(void); + +void func_8017E0D8(void *a0) { + D_80191004[*(u8 *)((s32)a0 + 0x214)](); +} + + +void func_8017E114(void *a0) { + *(s8 *)((s32)a0 + 0x214) += 1; + } + + +extern void func_8016F0E4(void); + void func_8017E128(void) { + func_8016F0E4(); + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017E148); + + +extern void (*D_8019100C[])(void); + +void func_8017E20C(void *a0) { + D_8019100C[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017E248); + +void func_8017E27C(u8 *a0) { + *(s8 *)(a0 + 0xA0) = 0; + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017E284); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017E3C4); + + +extern void (*D_80191158[])(void); + +void func_8017E5B8(void *a0) { + D_80191158[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_80029514(int); +void func_8017E5F4(void) { + func_80029514(0x3a2); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017E614); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017E6D8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017E778); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017E7EC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017E85C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017E8CC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017E92C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017EA6C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017EAE0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017EB30); + + +extern void (*D_801912B8[])(void); + +void func_8017ED1C(void *a0) { + D_801912B8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017ED58); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017ED94); + + +extern s32 func_80029178(s32 arg); + extern void func_80029124(s32, s32); + s32 func_8017EDD4(void) { + if ((func_80029178(0x110) & 0xFF) == 0) { + ((void (*)(void *, s32))func_80029124)((void *)0x110, 1); + return 1; + } + return 0; + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017EE10); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017EEC8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017EF20); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017EF78); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017EFFC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017F04C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017F0C0); + +extern void func_80029124(s32 arg0, s32 arg1); + void func_8017F174(void) { + func_80029124(0x110, 1); + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017F198); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017F274); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017F308); + +extern void func_801849B8(s32 *a0, s32 a1); + extern short D_801912E8; + void func_8017F398(short *a0) { + *(short *)((char *)a0 + 0x2) = 2; + func_801849B8((s32 *)a0, (s32)&D_801912E8); + } + + + +extern void (*D_80191350[])(void); + +void func_8017F3C4(void *a0) { + D_80191350[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_80178CBC(s32 arg0, s32 arg1); +extern short D_80191318; + +void func_8017F400(short *param) { + param[1] = 4; + func_80178CBC((int)param, (int)&D_80191318); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017F42C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017F46C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017F4C8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017F53C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017F58C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017F650); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017F6C8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017F73C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017F794); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017F81C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017F848); + + +extern void (*D_801913FC[])(void); + +void func_8017F98C(void *a0) { + D_801913FC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017F9C8); + +extern void func_80178CBC(s32 arg0, s32 arg1); +extern short D_8019139C; + +void func_8017FA2C(void *arg0) { + *(short *)((char *)arg0 + 0x2) = 0x7; + ((void (*)(s32 *, s32))func_80178CBC)(arg0, &D_8019139C); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017FA58); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017FA98); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017FB10); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017FC00); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017FCA0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017FD34); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017FDB8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017FE28); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017FEBC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017FF6C); + + +extern void func_80178CBC(s32 a0, s32 a1); + extern short D_801913D4; + void func_8017FFBC(void * arg0) { + *(short *)((char *)arg0 + 0x2) = 11; + func_80178CBC((int)arg0, (int)&D_801913D4); + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8017FFE8); + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80180048); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801800BC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80180124); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80180188); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801801B4); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80180240); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018026C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801802B8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801803D8); + + +extern void (*D_80191504[])(void); + +void func_801804F0(void *a0) { + D_80191504[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018052C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018058C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801805CC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801805F0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80180664); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801806BC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80180748); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80180788); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80180808); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80180894); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801808D4); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801809E0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80180A20); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80180A94); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80180AEC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80180BA8); + +extern void func_801849B8(s32 *a0, s32 a1); + extern short D_80191530; + void func_80180C30(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x5; + func_801849B8((s32 *)a0, (s32)&D_80191530); + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80180C5C); + + +extern void (*D_8019187C[])(void); + +void func_80180DA4(void *a0) { + D_8019187C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80180DE0); + +extern void func_80178CBC(s32 arg0, s32 arg1); + extern short D_80191568; + void func_80180ED0(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x7; + func_80178CBC((s32 *)a0, (s32)&D_80191568); + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80180EFC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80180F3C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80180FB4); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801810A4); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181144); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801811D8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181268); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801812D8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181364); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181414); + + +extern void func_80178CBC(s32 a0, s32 a1); + extern short D_80191840; + void func_80181464(void * arg0) { + *(short *)((char *)arg0 + 0x2) = 11; + func_80178CBC((int)arg0, (int)&D_80191840); + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181490); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801814F0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181564); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801815BC); + + +extern void (*D_80191990[])(void); + +void func_80181630(void *a0) { + D_80191990[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018166C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801816CC); + + +extern s32 func_80029178(s32 arg); + extern void func_80029124(s32, s32); + s32 func_801816DC(void) { + if ((func_80029178(0x113) & 0xFF) == 0) { + ((void (*)(void *, s32))func_80029124)((void *)0x113, 1); + return 1; + } + return 0; + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181718); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181758); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801817F0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181830); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801818A0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018193C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181A4C); + +extern void func_801849B8(s32 *a0, s32 a1); + extern short D_801919AC; + void func_80181B04(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x2; + func_801849B8((s32 *)a0, (s32)&D_801919AC); + } + + + +extern void (*D_80191AA4[])(void); + +void func_80181B30(void *a0) { + D_80191AA4[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void func_80178CBC(s32 a0, s32 a1); + extern short D_80191A54; + void func_80181B6C(void * arg0) { + *(short *)((char *)arg0 + 0x2) = 4; + func_80178CBC((int)arg0, (int)&D_80191A54); + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181B98); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181BD8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181C1C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181C60); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181CA4); + + +void func_80181CF0(void *a0) { + *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 2; + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181D00); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181D50); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181E0C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181E90); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181F00); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181F60); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80181FC0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182034); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182084); + + +extern void (*D_80191C18[])(void); + +void func_80182234(void *a0) { + D_80191C18[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void func_80178CBC(s32 a0, s32 a1); + extern short D_80191B18; + void func_80182270(void * arg0) { + *(short *)((char *)arg0 + 0x2) = 5; + func_80178CBC((int)arg0, (int)&D_80191B18); + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018229C); + + +extern s32 func_80029178(s32 arg); + extern void func_80029124(s32, s32); + s32 func_801822DC(void) { + if ((func_80029178(0x115) & 0xFF) == 0) { + ((void (*)(void *, s32))func_80029124)((void *)0x115, 1); + return 1; + } + return 0; + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182318); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801823D0); + +extern s32 func_80184CA4(s32 a0); +extern s32 func_80181F00(void *a0); +void func_80182410(int param_1) +{ + if (((int (*)(void))func_80184CA4)() != 0) { + ((void (*)(int))func_80181F00)(param_1); + } +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182448); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801824AC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801824FC); + +extern void func_80029124(s32 arg0, s32 arg1); + void func_80182540(void) { + func_80029124(0x115, 1); + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182564); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018268C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182750); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801827E4); + +extern void func_801849B8(s32 *a0, s32 a1); + extern short D_80191C44; + void func_80182874(short *param_1) { + *(short *)((char *)param_1 + 2) = 1; + ((void (*)(int, int))func_801849B8)((int)param_1, &D_80191C44); + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801828A0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801828EC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182A28); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182A74); + + +extern void (*D_80191E84[])(void); + +void func_80182BB0(void *a0) { + D_80191E84[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182BEC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182C2C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182C6C); + + +extern s32 func_80029178(s32 arg); + extern void func_80029124(s32, s32); + s32 func_80182CAC(void) { + if ((func_80029178(0x116) & 0xFF) == 0) { + ((void (*)(void *, s32))func_80029124)((void *)0x116, 1); + return 1; + } + return 0; + } + + +extern s16 func_80184B44(void); +s32 func_80182CE8(void) { + return ((s32 (*)(void))func_80184B44)() == 1; +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182D0C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182D3C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182D6C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182D9C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182DCC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182E18); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182E68); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182EB4); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182F04); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182F50); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80182FA8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80183004); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018305C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80183100); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801831C8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801832C4); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80183328); + + +extern void (*D_80191F98[])(void); + +void func_80183380(void *a0) { + D_80191F98[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void func_80178CBC(s32 a0, s32 a1); + extern short D_80191F38; + void func_801833BC(void * arg0) { + *(short *)((char *)arg0 + 0x2) = 4; + func_80178CBC((int)arg0, (int)&D_80191F38); + } + + +extern void func_80178CBC(s32 arg0, s32 arg1); + extern short D_80191F70; + void func_801833E8(short *param) { + param[1] = 0x7; + func_80178CBC((int)param, (int)&D_80191F70); + } + + +extern void func_80178CBC(s32 arg0, s32 arg1); + extern short D_80191F70; + void func_80183414(short *param) { + param[1] = 0xD; + func_80178CBC((int)param, (int)&D_80191F70); + } + + +extern void func_80178CBC(s32 arg0, s32 arg1); + extern short D_80191F70; + void func_80183440(short *param) { + param[1] = 0xA; + func_80178CBC((int)param, (int)&D_80191F70); + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018346C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801834A4); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801834F8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80183558); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801835FC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801836A4); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80183724); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80183774); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801837D4); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80183830); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801838A0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80183980); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801839AC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80183A08); + + +extern void (*D_80192140[])(void); + +void func_80183CC0(void *a0) { + D_80192140[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void func_80178CBC(s32 a0, s32 a1); + extern short D_801920BC; + void func_80183CFC(void * arg0) { + *(short *)((char *)arg0 + 0x2) = 4; + func_80178CBC((int)arg0, (int)&D_801920BC); + } + + +extern void func_80178CBC(s32 arg0, s32 arg1); + extern short D_80192110; + void func_80183D28(short *a0) { + *(short *)((char *)a0 + 2) = 0x7; + func_80178CBC((s32 *)a0, (s32)&D_80192110); + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80183D54); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80183DB8); + +extern void func_8014AD7C(s32 arg); + void func_80183DEC(void) { + func_8014AD7C(0x3C); + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80183E0C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80183E44); + +extern s16 func_80184B44(void); +s32 func_80183ED4(void) { + return ((s32 (*)(void))func_80184B44)() == 1; +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80183EF8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80183F44); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184004); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184054); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801840DC); + +extern void func_801849B8(s32 *a0, s32 a1); + extern short D_80192160; + void func_801841B8(short *param_1) { + *(short *)((char *)param_1 + 0x2) = 2; + func_801849B8((s32 *)param_1, (s32)&D_80192160); + } + + + +extern void (*D_801921D8[])(void); + +void func_801841E4(void *a0) { + D_801921D8[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_80178CBC(s32 arg0, s32 arg1); + extern short D_801921A0; + void func_80184220(short *a0) { + *(short *)((char *)a0 + 0x2) = 0x4; + ((void (*)(s32 *, s32))func_80178CBC)((s32 *)a0, (s32)&D_801921A0); + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018424C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184284); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801842C4); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184310); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184360); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801843E0); + + +void func_8018449C(void *a0) { + *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; + } + + + +void func_801844AC(void *a0) { + *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 2; + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801844BC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184558); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184584); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801845B0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801845DC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184660); + +extern s32 func_80184660(s32 arg); + extern void func_801847C4(void *a0); + void func_80184790(void *a0) { + *(s32 *)((u8 *)a0 + 0xe0) = func_80184660((s32)a0); + func_801847C4(a0); + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801847C4); + + +extern short D_800BA2BA; + s32 func_80184804(s32 arg0) { + return *(short *)((char *)&D_800BA2BA + (*(short *)(*(s32 *)(arg0 + 0xd0) + 0x10) << 2)); + } + + + +extern void (*D_801B86DC[])(void); + +void func_8018482C(void *a0) { + D_801B86DC[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_80184868(void) { +} + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184870); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801848AC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801848D0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184928); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184990); + +void func_801849B0(void *a0) { + *(s16 *)((s32)a0 + 0x5C) = 0; + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801849B8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184A00); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184A5C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184AD0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184B44); + +extern s32 func_80029504(void); +extern void func_80029514(s32 arg); + +void func_80184BA0(void) { + if (((s32 (*)(void))func_80029504)() == 0x3A2) { + ((void (*)(s32))func_80029514)(0x3AC); + } +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184BD4); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184CA4); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184E6C); + + +extern void (*D_801B86FC[])(void); + +void func_80184EB4(void *a0) { + D_801B86FC[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_80184EF0(void) { +} + +void func_80184EF8(void) { +} + +void func_80184F00(void) { +} + +void func_80184F08(void) { +} + +void func_80184F10(void) { +} + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184F18); + +void func_80184F5C(void) { +} + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184F64); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80184FEC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801851C4); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80185364); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801853E0); + +extern s32 func_80185BEC(void); + void func_801854AC(void) { + func_80185BEC(); + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801854CC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018559C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80185604); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80185678); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801856D8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80185758); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801857B0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80185810); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80185858); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801858A8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801858E0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018596C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80185A10); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80185A70); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80185BEC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80185C20); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80185C54); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80185CB8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80185D2C); + + +extern void (*D_801B89F8[])(void); + +void func_80185D84(void *a0) { + D_801B89F8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80185DC0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80185E3C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80185F5C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80185FA8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801860B4); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80186110); + +extern s16 D_801ECE90; + s32 func_80186150(void) { + return D_801ECE90; + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80186160); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801861AC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018621C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80186270); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80186B24); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801874B0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801875E8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80187DEC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80188128); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80188478); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801886B8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80188884); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80188B1C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80188F14); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80189240); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80189ADC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80189B14); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80189B54); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80189BA0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80189DB4); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80189E68); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80189ED0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80189F24); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_80189FE0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018A3C8); + + +extern void (*D_801E67B0[])(void); + +void func_8018A440(void *a0) { + D_801E67B0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018A47C); + + +extern void (*D_801E67DC[])(void); + +void func_8018A598(void *a0) { + D_801E67DC[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_801E67E4[])(void); + +void func_8018A5D4(void *a0) { + D_801E67E4[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_801E67F4[])(void); + +void func_8018A610(void *a0) { + D_801E67F4[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_801E6804[])(void); + +void func_8018A64C(void *a0) { + D_801E6804[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_8018A688(void) { +} + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018A690); + + +extern void (*D_801E6814[])(void); + +void func_8018A83C(void *a0) { + D_801E6814[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018A878); + +extern s32 D_801E64B0; +extern s32 D_801ED7E0; +extern void func_80189E68(s32 arg0, s32 arg1); + +void func_8018A9D4(void) { + D_801ED7E0 = &D_801E64B0; + func_80189E68(0x474, 0x4B0); +} + + + +extern s32 D_801E64E8; +extern s32 D_801ED7E0; +extern void func_80189E68(s32 arg0, s32 arg1); + +void func_8018AA08(void) { + D_801ED7E0 = &D_801E64E8; + func_80189E68(0x474, 0x4EC); +} + + + +extern s32 D_801E6520; +extern s32 D_801ED7E0; +extern void func_80189E68(s32 arg0, s32 arg1); + +void func_8018AA3C(void) { + D_801ED7E0 = &D_801E6520; + func_80189E68(0x474, 0x4B0); +} + + + +extern s32 D_801E6548; +extern s32 D_801ED7E0; +extern void func_80189E68(s32 arg0, s32 arg1); + +void func_8018AA70(void) { + D_801ED7E0 = &D_801E6548; + func_80189E68(0x474, 0x4B0); +} + + + +extern s32 D_801E6580; +extern s32 D_801ED7E0; +extern void func_80189E68(s32 arg0, s32 arg1); + +void func_8018AAA4(void) { + D_801ED7E0 = &D_801E6580; + func_80189E68(0x474, 0x528); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018AAD8); + + +extern s32 D_801E65F8; +extern s32 D_801ED7E0; +extern void func_80189E68(s32 arg0, s32 arg1); + +void func_8018AB4C(void) { + D_801ED7E0 = &D_801E65F8; + func_80189E68(0x474, 0x1A4); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018AB80); + +extern s32 D_801E6650; +extern s32 D_801ED7E0; +extern void func_80189E68(s32 arg0, s32 arg1); + +void func_8018ABCC(void) { + D_801ED7E0 = &D_801E6650; + func_80189E68(0x12C, 0x1A4); +} + + + +extern s32 D_801E66A0; +extern s32 D_801ED7E0; +extern void func_80189E68(s32 arg0, s32 arg1); + +void func_8018AC00(void) { + D_801ED7E0 = &D_801E66A0; + func_80189E68(0x474, 0x4B0); +} + + + +extern s32 D_801E6700; +extern s32 D_801ED7E0; +extern void func_80189E68(s32 arg0, s32 arg1); + +void func_8018AC34(void) { + D_801ED7E0 = &D_801E6700; + func_80189E68(0x474, 0x4B0); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018AC68); + + +extern s32 D_801E6748; +extern s32 D_801ED7E0; +extern void func_80189E68(s32 arg0, s32 arg1); + +void func_8018ACB4(void) { + D_801ED7E0 = &D_801E6748; + func_80189E68(0x564, 0x1A4); +} + + + +s32 func_8018ACE8(void) { + return -1; +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018ACF0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018ADAC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018AE58); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018AE9C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018AFB8); + + +extern void func_8012B414(int a0); + void func_8018B054(s32 arg0) { + s32 temp_v1 = *(s32 *)(arg0 + 0x20); + *(s16 *)(temp_v1 + 0x14) += 0x8; + ((void (*)(void))func_8012B414)(); + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B088); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B100); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B148); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B1EC); + +void func_8018B264(void *a0) { + M2C_FIELD(a0, s16 *, 0x2) = 2; + } + + + +extern void (*D_801E682C[])(void); + +void func_8018B270(void *a0) { + D_801E682C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B2AC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B314); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B360); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B3A0); + +void func_8018B3E8(void *a0) { + M2C_FIELD(a0, s16 *, 0x2) = 2; + } + + + +extern void (*D_801E6840[])(void); + +void func_8018B3F4(void *a0) { + D_801E6840[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B430); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B498); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B4FC); + +void func_8018B568(void *a0) { + M2C_FIELD(a0, s16 *, 0x2) = 2; + } + + + +extern void (*D_801E6854[])(void); + +void func_8018B574(void *a0) { + D_801E6854[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B5B0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B604); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B648); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B688); + +void func_8018B6D0(s32 *a0) { + *(s16 *)((s32)a0 + 0x2) = 0x2; + } + + + +extern void (*D_801E6868[])(void); + +void func_8018B6DC(void *a0) { + D_801E6868[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B718); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B780); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B7E4); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B850); + + +extern void (*D_801E6874[])(void); + +void func_8018B93C(void *a0) { + D_801E6874[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B978); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018B9DC); + + +extern void (*D_801E687C[])(void); + +void func_8018BA58(void *a0) { + D_801E687C[*(u16 *)((s32)a0 + 0x2)](); +} + + + +void func_8018BA94(void *a0) { + *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018BAA4); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018BAE0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018BB0C); + + +extern void (*D_801E6950[])(void); + +void func_8018BB38(void *a0) { + D_801E6950[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018BB74); + +extern s32 func_8014CB1C(void); + s32 func_8018BBE8(void) { + return func_8014CB1C() != 0; + } + + +extern void func_8014B2A8(void); +extern void func_8002D4C8(s32 a0, s32 a1); + +void func_8018BC08(void) { + func_8014B2A8(); + ((s32 (*)(s32, s32))func_8002D4C8)(0x464, 0); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018BC34); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018BC64); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018BCCC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018BD38); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018BDB0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018BE14); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018BEE0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018BF4C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018BF78); + + +extern void (*D_801E6A3C[])(void); + +void func_8018C068(void *a0) { + D_801E6A3C[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void func_80178CBC(s32 a0, s32 a1); + extern short D_801E69CC; + void func_8018C0A4(void * arg0) { + *(short *)((char *)arg0 + 0x2) = 4; + func_80178CBC((int)arg0, (int)&D_801E69CC); + } + + +extern s32 func_800D0EC4(); +s32 func_8018C0D0(void) { + return func_800D0EC4() == 0; +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018C0F0); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018C194); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018C218); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018C2AC); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018C2FC); + +extern void func_8012B2CC(s32 arg); + void func_8018C360(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 arg0); + void func_8018C390(u8 *param_1) { + s32 p; + *(short *)(param_1 + 0x2) = 4; + p = *(s32 *)(param_1 + 0x20); + *(short *)(p + 0x12) = 0x600; + func_8012B2CC((s32)param_1); + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018C3C0); + + +extern void (*D_801E9920[])(void); + +void func_8018C530(void *a0) { + D_801E9920[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018C56C); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018C5E8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018C658); + +extern void func_8002D4C8(s32 arg0, s32 arg1); + void func_8018C670(void) { + func_8002D4C8(0x7E0, 0); + } + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018C694); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018C7C8); + +void func_8018C830(void) { +} + +void func_8018C838(void) { +} + + +extern void (*D_801E9A58[])(void); + +void func_8018C840(void *a0) { + D_801E9A58[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018C87C); + +void func_8018C8E0(void) { +} + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018C8E8); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018C934); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018C974); + + +extern void (*D_801E9B20[])(void); + +void func_8018C9D0(void *a0) { + D_801E9B20[*(u16 *)((s32)a0 + 0x2)](); +} + + + +// @class: iv-combine +// @stuck: none — MATCH (49 ins). gcc folds (v0+0x1800)-0x1000 -> v0+0x800; re-tie barrier on the WORKING reg v0 (NOT a saved local) forces the target chain v0=base+0x1800; s2=copy; v0-=0x1000; s1=v0<<5. NO register pins (pins re-trigger the lhu/lh dual-load CSE collapse and shrink the frame; natural alloc gives s0-s3 + frame 0x38). +extern int rand(void); +extern u8 *func_8012913C(s32 a0); + +extern unsigned short D_801E9B00[]; + +void func_8018CA0C(s32 param_1, s32 param_2) +{ + int s3; + unsigned short s0; + int s2; + int s1; + int v0; + int iVar3; + + s0 = D_801E9B00[*(short *)(param_1 + 0xfc)]; + s3 = param_2; + if (((short *)D_801E9B00)[*(short *)(param_1 + 0xfc)] == 0) { + *(short *)(param_1 + 0xfc) = 0; + s0 = D_801E9B00[0]; + } + *(short *)(param_1 + 0xfc) = *(short *)(param_1 + 0xfc) + 1; + v0 = (rand() & 3) * 0x400 + 0x1800; + s2 = v0; + __asm__ __volatile__("" : "=r"(v0) : "0"(v0)); + s1 = (v0 - 0x1000) * 0x20; + iVar3 = ((int (*)(int))func_8012913C)(4); + if (iVar3 != 0) { + *(short *)(iVar3 + 6) = s3; + *(short *)(iVar3 + 0xa) = s0; + *(short *)(iVar3 + 0xe) = 0; + *(int *)(iVar3 + 0x10) = s1; + *(short *)(iVar3 + 0x2c) = s2; + } +} + + + +extern void (*D_801E9B34[])(void); + +void func_8018CAD0(void *a0) { + D_801E9B34[*(u16 *)((s32)a0 + 0x2)](); +} + + + +// @class: regalloc-order +// @stuck: none — MATCH + +extern void func_8018CA0C(s32, s32); +extern s32 func_8012AD50(void *a0); + +void func_8018CB0C(int param_1) { + short uVar1; + + *(short *)(param_1 + 0xfc) = 0; + *(int *)(param_1 + 0x1c) = 1; + uVar1 = *(unsigned short *)(param_1 + 0x70) & 7; + *(short *)(param_1 + 0xfe) = (uVar1 < 2) ? 0x1e : 0xf; + if (uVar1 != 0) { + func_8018CA0C(param_1, -0x80); + func_8018CA0C(param_1, -0x30); + func_8018CA0C(param_1, 0x20); + func_8018CA0C(param_1, 0x70); + func_8018CA0C(param_1, 0xc0); + } + if (1 < uVar1) { + func_8018CA0C(param_1, -0x58); + func_8018CA0C(param_1, -0x8); + func_8018CA0C(param_1, 0x48); + func_8018CA0C(param_1, 0x98); + func_8018CA0C(param_1, 0xe8); + } + ((void (*)(int))func_8012AD50)(param_1); +} + + + +// @class: regalloc-order +// @stuck: none — MATCH (param_1 naturally lands in $s0 across the call, mirrors sibling func_80184AEC) + +extern s32 func_8012BEE8(s32 a0); +extern void func_8018CA0C(s32, s32); + +void func_8018CBF4(s32 arg0) { + if (func_8012BEE8(arg0)) { + *(s32 *)(arg0 + 0x1c) = (s32)*(s16 *)(arg0 + 0xfe); + func_8018CA0C(arg0, 0x110); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (expected) +extern void func_8001CB00(int param_1, void *src, int len, int n); + +extern unsigned char D_801E9B28; + +void func_8018CC34(int param_1) +{ + unsigned short uVar1; + int iVar2; + + iVar2 = *(int *)(param_1 + 0x20); + func_8001CB00(iVar2, &D_801E9B28, 0x280, 0x100); + *(unsigned int *)(iVar2 + 4) = *(unsigned int *)(iVar2 + 4) | 0x70000000; + uVar1 = *(unsigned short *)(param_1 + 0x2c); + *(unsigned char *)(iVar2 + 0x27) = 0x9e; + *(unsigned short *)(iVar2 + 0x2c) = 4; + *(unsigned short *)(iVar2 + 0x1c) = uVar1; + *(unsigned short *)(iVar2 + 0x1a) = uVar1; + *(unsigned short *)(iVar2 + 0x18) = uVar1; + *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + 1; + return; +} + + + +extern void func_801292C8(u8 *a0); + +void func_8018CCBC(u8 *a0) { + *(s32 *)(a0 + 0x4) = *(s32 *)(a0 + 0x4) - *(s32 *)(a0 + 0x10); + if (*(s16 *)(a0 + 0x6) < -0x110) { + func_801292C8(a0); + } +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018CD04); + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_8018CDB0); + + + + diff --git a/src/ov_SC05_018/ov_SC05_018_jr_8017A4AC.c b/src/ov_SC05_018/ov_SC05_018_jr_8017A4AC.c index e00ffcfea..9308b19b7 100644 --- a/src/ov_SC05_018/ov_SC05_018_jr_8017A4AC.c +++ b/src/ov_SC05_018/ov_SC05_018_jr_8017A4AC.c @@ -2946,654 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801E62BC; - extern s16 D_801E62BE; - extern s16 D_801E62C0; - extern s16 D_801E62B4; - extern s16 D_801E62B6; - extern s16 D_801E62B8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801E62BC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801E62BE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801E62C0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801E62B4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801E62B6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801E62B8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801E6244; -extern u16 D_801E62C4; -extern u16 D_801E62C6; -extern u16 D_801E62C8; -extern s16 D_801E6818; - -void func_8017B1D8(void) { - func_8012A418(); - D_801E6818 = 0; - D_801E6244 = 0; - D_801E62C4 = D_80126B5E; - D_801E62C6 = D_80126B62; - D_801E62C8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018A274[]; - extern s16 D_801E62BC; - extern s16 D_801E62B4; - 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_8018A274[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018A274[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E62BC; - s16 *p78C = &D_801E62B4; - *(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_801E6818 = 1; - D_801E6244 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801E6264; - extern SV4_8017B368 D_801E626C; - extern s16 D_801E62BC; - extern s16 D_801E62B4; - extern u16 D_8018A274; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801E6264; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801E626C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018A274)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018A274)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801E62BC) = loc0; - (*(SV4_8017B368 *)&D_801E62B4) = loc1; - D_801E6818 = 1; - D_801E6244 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018A274[]; - extern s16 D_801E62BC; - extern s16 D_801E62BE; - extern s16 D_801E62C0; - extern s16 D_801E62B4; - extern s16 D_801E62B6; - extern s16 D_801E62B8; - 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_8018A274[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018A274[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E62BC; - s16 *p78C = &D_801E62B4; - *(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_801E62BE; - v798 = D_801E62C0; - v78C = *p78C; - v78E = D_801E62B6; - v790 = D_801E62B8; - __asm__ __volatile__(""); - D_801E6818 = 1; - D_801E6244 = 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_801E6244; -extern s16 D_801E62BC; -extern s16 D_801E62BE; -extern s16 D_801E62C0; -extern s16 D_801E62B4; -extern s16 D_801E62B6; -extern s16 D_801E62B8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801E6244 = 0; - D_801E62BC = (s16) D_80114F30; - D_801E62BE = (s16) D_80114F34; - D_801E62C0 = (s16) D_80114F38; - D_801E62B4 = (s16) D_80114F24; - D_801E62B6 = (s16) D_80114F28; - D_801E62B8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801E62D4; -extern s16 D_801E62D6; -extern s16 D_801E62D8; -extern s16 D_801E62DC; -extern s16 D_801E62DE; -extern s16 D_801E62E0; - -void func_8017B824(void) { - D_801E62D4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801E62D6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801E62D8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801E62DC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801E62DE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801E62E0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801E62D4; -extern s16 D_801E62D6; -extern s16 D_801E62D8; -extern s16 D_801E62DC; -extern s16 D_801E62DE; -extern s16 D_801E62E0; - -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_801E62D4; - D_80114F34 = D_801E62D6; - D_80114F38 = D_801E62D8; - D_80114F24 = D_801E62DC; - D_80114F28 = D_801E62DE; - D_80114F2C = D_801E62E0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801E62BC), src[8..15] -> (*(S8_8017B8E8 *)&D_801E62B4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801E62BC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801E62B4) = ((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_801E62C4; -extern u16 D_801E62C6; -extern u16 D_801E62C8; - -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_801E6244; -extern short D_801E62CC; -extern short D_801E62CE; -extern short D_801E62D0; -extern s16 D_801E62BC; -extern s16 D_801E62BE; -extern s16 D_801E62C0; -extern s16 D_801E62B4; -extern s16 D_801E62B6; -extern s16 D_801E62B8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801E62C4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801E62C6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801E62C8); - (*(s16 *)&D_801E62CC) = buf[0]; - (*(s16 *)&D_801E62CE) = buf[1]; - (*(s16 *)&D_801E62D0) = buf[2]; - D_801E62BC = D_80114F30 + buf[0]; - D_801E6244 = 0; - D_801E62BE = D_80114F34 + buf[1]; - D_801E62C0 = D_80114F38 + buf[2]; - D_801E62B4 = D_80114F24 + buf[0]; - D_801E62B6 = D_80114F28 + buf[1]; - D_801E62B8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801E6264; -extern SV4 D_801E626C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801E626C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801E6264 = 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_801E626C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801E626C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801E6264) = 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_801E626C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801E628C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801E628C; - 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_801E6244; -extern s16 D_801E6818; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801E6244 = D_801E6244 + 1; - if (D_801E6244 >= 0x1F) { - D_801E6818 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801E6244; -extern s16 D_801E6818; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801E6244 = D_801E6244 + 1; - if (0x18 < D_801E6244) { - func_8012A4BC(); - D_801E6818 = 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_801E6244; -extern void (*D_801E6288)(void); -extern short D_801E62CC; -extern short D_801E62CE; -extern short D_801E62D0; -extern s16 D_801E6818; - -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_801E6244 = D_801E6244 + 1; - if (D_801E6244 >= 0x19) { - if (D_801E6288 != 0) { - (*D_801E6288)(); - } else { - D_80114F30 = D_80114F30 + D_801E62CC; - D_80114F34 = D_80114F34 + D_801E62CE; - D_80114F38 = D_80114F38 + D_801E62D0; - D_80114F24 = D_80114F24 + D_801E62CC; - D_80114F28 = D_80114F28 + D_801E62CE; - D_80114F2C = D_80114F2C + D_801E62D0; - func_8012A4BC(); - } - D_801E6818 = 0; - } -} - - - -extern void (*D_8018A314[])(void); - -void func_8017BE60(void *a0) { - D_8018A314[*(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) */ - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017BF88); - - -extern void (*D_8018A32C[])(void); - -void func_8017C0E4(void *a0) { - D_8018A32C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017C120); - - -extern void (*D_8018A3C8[])(void); - -void func_8017C180(void *a0) { - D_8018A3C8[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_8018A3D0[])(void); - -void func_8017C1BC(void *a0) { - D_8018A3D0[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_8018A3D8[])(void); - -void func_8017C1F8(void *a0) { - D_8018A3D8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017C234); - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017C378); - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017C3E4); - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017C490); - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017C4D0); - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017C594); - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017C61C); - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017C7B8); - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017C9BC); - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017CDB0); - - -extern void (*D_8018A6B4[])(void); - -void func_8017CF30(void *a0) { - D_8018A6B4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017CF6C); - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017CFE0); - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017D0BC); - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017D2D0); - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017D3A4); - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017D474); - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017D4CC); - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017A4AC", func_8017D5C4); diff --git a/src/ov_SC05_018/ov_SC05_018_jr_8017AE2C.c b/src/ov_SC05_018/ov_SC05_018_jr_8017AE2C.c new file mode 100644 index 000000000..2ff82f90b --- /dev/null +++ b/src/ov_SC05_018/ov_SC05_018_jr_8017AE2C.c @@ -0,0 +1,3531 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80188E6C; +extern u8 D_80188DDC; +extern u8 D_80188DB8; +extern u8 D_80188D94; +extern u8 D_80188E48; +extern u8 D_80188E24; +extern u8 D_80188E00; +extern u8 D_80188D70; +extern void func_80145934(void); +extern u8 D_80188EFC; +extern u8 D_80188ED8; +extern u8 D_80188EB4; +extern u8 D_80188E90; +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_801882F4[]; +extern unsigned char D_80188324[]; +extern unsigned char D_80188374[]; +extern unsigned char D_801883A4[]; +extern unsigned char D_801883D4[]; +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(void); +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_80188424[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_801884EC[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80188574[]; +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_8018857C; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801E5140; +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_801E5144; +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_801885AC; +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 void 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_80188654[])(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_80188678[])(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_80188668; +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_8018868C[])(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_80188698[]; +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_801886A8[])(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_801886C0[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801886B0; +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_801886D4[])(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_801886F0[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801886E0; +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_80188704[])(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_80188718[])(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_8018872C; +extern void (*D_80188754[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80188734; +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_801887A0[])(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_801887A4[])(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(void *a0); +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_80188C08[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80188C18[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801E5178; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80188C40[])(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_80188C20; +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_80188C30; +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_80188C80[])(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_80188C88[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80188C54; +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_80188C94[])(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_80188C64; +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_801E5180; +extern s32 D_801E518C; +extern s32 D_801E5190; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80188CD0[])(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_80188CA4[]; +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_801E5188; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80188F20[])(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_80188D40[]; +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_80188FC4[])(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_80189118[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80188F34; +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_80189120[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80188F44; +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_80188F64; +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_80189128[])(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(void); +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_80189150[])(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_8018915C[])(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_80188FD0[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80189200; +extern void func_8015D380(s32 a0); +extern unsigned char D_801882E4[]; +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_80189214[]; +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_80189250[]; +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_80189298; +extern u16 D_8018929A; +extern u16 D_8018929C; +extern s32 D_801892A0; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_801892A8; +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_80188FB4; +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_8018932C[]; +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_801893DC[])(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_8018940C[]; +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_80189470; +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_801E5198[]; +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_80189494[])(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_801E51F0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_801894DC[])(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_801894CC; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801E4A04[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_801894E4[])(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_80189538[])(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_80189500; +extern s16 D_80189534; +extern s16 D_80189532; +extern s16 D_80189530; +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_80189544[])(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_801E5250; +extern u8 D_801E5251; +extern u8 D_801E5252; +extern u8 D_801E5253; +extern u8 D_801E5254; +extern u8 D_801E5255; +extern u8 D_801E5256; +extern u8 D_801E5257; +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_80189554[])(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_801E5290; +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_80189598[])(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_80189614[]; +extern s32 D_80189634[]; +extern u8 D_801896B0[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801896D0[]; +extern u8 D_801896F0[]; +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_8018978C[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80189808[])(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_801E4A14; +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_80189814[])(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_8018981C[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801898E4[])(void); +extern void func_80166618(void *a0); +extern void (*D_801898F4[])(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_80189904[])(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_80189910[])(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_80189870[]; +extern u8 D_80189884[]; +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_80189928[])(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_80189930[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80189938[])(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_80189940[])(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_80189948[])(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_80189950[])(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_80189958[])(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_80189A0C[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80189A14[])(void); +extern void func_80169F00(void *a0); +extern char D_801899C4[]; +extern char D_80189984[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80189A4C[])(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_80189A58[])(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_80189AA0[])(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_80189B1C[])(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_801E55B0; +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_80189B10[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80189B54[]; +extern unsigned short D_80189B5C[]; +extern unsigned short D_80189B64[]; +extern unsigned char D_801E55B8[]; +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_801E55B0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80189B6C[])(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_801E56EC; +extern M2C_UNK D_801E56F0; +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_801E5678; +extern void (*D_80189B9C[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801E56F4[]; +extern u8 D_801E56FC[]; +extern u8 D_801E56AC[]; +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_80189BA4[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80189BC0[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80189BC8[])(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_80189C30[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80189BD4; +extern u8 D_80189BE0; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80189C64[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80189C6C[])(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_80189CC0[])(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_80189CF4[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80189CE4[]; +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_80189D10; +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); +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_80189D88[])(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_80189D90[])(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_80189D98[])(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_80189DA0[])(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_80189DA8[])(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_80189DB0[])(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_80189DBC[])(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_80189DC8[])(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_80189DD4[])(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_80189DE4[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80189DF4[])(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_80189DFC[])(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_80189E04[])(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_80189E0C[])(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_80189E14[])(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_80189E1C[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80189E24[])(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_80189E2C[])(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_80189E34[])(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_80189E3C[])(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_80189E44[])(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_80189E4C[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80189E54[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80189E5C[])(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_80189E64[])(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_80189E6C[])(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_80189E74[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80189E7C[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80189E84[])(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_80189E8C[])(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_80189E94[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80189E9C[])(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_80189EA4[])(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_80189EE8[])(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_80189EAC; +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_80189F18[])(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_80189F54[])(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(s32); +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_80189FAC[])(); +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_80189FBC[])(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_80189FC4[])(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_8018A12C[])(); +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_8018A138[])(); +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_801E4C5C; +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 int func_801789AC(void); +extern s16 D_801E6818; +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_801E5E30; +extern short D_801E688C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801E625C; +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_801E6284; +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_801E6240; +extern s32 func_8017A3B0(void); +extern short D_801E627C; +extern short D_801E6278; +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_801E67D0; +extern s16 D_801E67D2; +extern s16 D_801E67DC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801E67D0; + + 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_801E67DC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801E67D0+0xC == &D_801E67DC; 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_801E67D0 + 0xC)) < 0x101) { + D_801E67D0 = 0; + D_801E67D2 = 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_801E67DC); + 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_801E67D0 + 0xC)) < 0x101) { + D_801E67D0 = 0; + D_801E67D2 = 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_801E62BC; + extern s16 D_801E62BE; + extern s16 D_801E62C0; + extern s16 D_801E62B4; + extern s16 D_801E62B6; + extern s16 D_801E62B8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801E62BC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801E62BE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801E62C0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801E62B4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801E62B6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801E62B8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801E6244; +extern u16 D_801E62C4; +extern u16 D_801E62C6; +extern u16 D_801E62C8; +extern s16 D_801E6818; + +void func_8017B1D8(void) { + func_8012A418(); + D_801E6818 = 0; + D_801E6244 = 0; + D_801E62C4 = D_80126B5E; + D_801E62C6 = D_80126B62; + D_801E62C8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018A274[]; + extern s16 D_801E62BC; + extern s16 D_801E62B4; + 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_8018A274[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018A274[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801E62BC; + s16 *p78C = &D_801E62B4; + *(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_801E6818 = 1; + D_801E6244 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801E6264; + extern SV4_8017B368 D_801E626C; + extern s16 D_801E62BC; + extern s16 D_801E62B4; + extern u16 D_8018A274; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801E6264; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801E626C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018A274)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018A274)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801E62BC) = loc0; + (*(SV4_8017B368 *)&D_801E62B4) = loc1; + D_801E6818 = 1; + D_801E6244 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018A274[]; + extern s16 D_801E62BC; + extern s16 D_801E62BE; + extern s16 D_801E62C0; + extern s16 D_801E62B4; + extern s16 D_801E62B6; + extern s16 D_801E62B8; + 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_8018A274[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018A274[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801E62BC; + s16 *p78C = &D_801E62B4; + *(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_801E62BE; + v798 = D_801E62C0; + v78C = *p78C; + v78E = D_801E62B6; + v790 = D_801E62B8; + __asm__ __volatile__(""); + D_801E6818 = 1; + D_801E6244 = 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_801E6244; +extern s16 D_801E62BC; +extern s16 D_801E62BE; +extern s16 D_801E62C0; +extern s16 D_801E62B4; +extern s16 D_801E62B6; +extern s16 D_801E62B8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801E6244 = 0; + D_801E62BC = (s16) D_80114F30; + D_801E62BE = (s16) D_80114F34; + D_801E62C0 = (s16) D_80114F38; + D_801E62B4 = (s16) D_80114F24; + D_801E62B6 = (s16) D_80114F28; + D_801E62B8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801E62D4; +extern s16 D_801E62D6; +extern s16 D_801E62D8; +extern s16 D_801E62DC; +extern s16 D_801E62DE; +extern s16 D_801E62E0; + +void func_8017B824(void) { + D_801E62D4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801E62D6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801E62D8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801E62DC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801E62DE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801E62E0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801E62D4; +extern s16 D_801E62D6; +extern s16 D_801E62D8; +extern s16 D_801E62DC; +extern s16 D_801E62DE; +extern s16 D_801E62E0; + +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_801E62D4; + D_80114F34 = D_801E62D6; + D_80114F38 = D_801E62D8; + D_80114F24 = D_801E62DC; + D_80114F28 = D_801E62DE; + D_80114F2C = D_801E62E0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801E62BC), src[8..15] -> (*(S8_8017B8E8 *)&D_801E62B4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801E62BC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801E62B4) = ((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_801E62C4; +extern u16 D_801E62C6; +extern u16 D_801E62C8; + +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_801E6244; +extern short D_801E62CC; +extern short D_801E62CE; +extern short D_801E62D0; +extern s16 D_801E62BC; +extern s16 D_801E62BE; +extern s16 D_801E62C0; +extern s16 D_801E62B4; +extern s16 D_801E62B6; +extern s16 D_801E62B8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801E62C4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801E62C6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801E62C8); + (*(s16 *)&D_801E62CC) = buf[0]; + (*(s16 *)&D_801E62CE) = buf[1]; + (*(s16 *)&D_801E62D0) = buf[2]; + D_801E62BC = D_80114F30 + buf[0]; + D_801E6244 = 0; + D_801E62BE = D_80114F34 + buf[1]; + D_801E62C0 = D_80114F38 + buf[2]; + D_801E62B4 = D_80114F24 + buf[0]; + D_801E62B6 = D_80114F28 + buf[1]; + D_801E62B8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801E6264; +extern SV4 D_801E626C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801E626C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801E6264 = 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_801E626C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801E626C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801E6264) = 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_801E626C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801E628C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801E628C; + 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_801E6244; +extern s16 D_801E6818; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801E6244 = D_801E6244 + 1; + if (D_801E6244 >= 0x1F) { + D_801E6818 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801E6244; +extern s16 D_801E6818; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801E6244 = D_801E6244 + 1; + if (0x18 < D_801E6244) { + func_8012A4BC(); + D_801E6818 = 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_801E6244; +extern void (*D_801E6288)(void); +extern short D_801E62CC; +extern short D_801E62CE; +extern short D_801E62D0; +extern s16 D_801E6818; + +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_801E6244 = D_801E6244 + 1; + if (D_801E6244 >= 0x19) { + if (D_801E6288 != 0) { + (*D_801E6288)(); + } else { + D_80114F30 = D_80114F30 + D_801E62CC; + D_80114F34 = D_80114F34 + D_801E62CE; + D_80114F38 = D_80114F38 + D_801E62D0; + D_80114F24 = D_80114F24 + D_801E62CC; + D_80114F28 = D_80114F28 + D_801E62CE; + D_80114F2C = D_80114F2C + D_801E62D0; + func_8012A4BC(); + } + D_801E6818 = 0; + } +} + + + +extern void (*D_8018A314[])(void); + +void func_8017BE60(void *a0) { + D_8018A314[*(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) */ + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017BF88); + + +extern void (*D_8018A32C[])(void); + +void func_8017C0E4(void *a0) { + D_8018A32C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017C120); + + +extern void (*D_8018A3C8[])(void); + +void func_8017C180(void *a0) { + D_8018A3C8[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_8018A3D0[])(void); + +void func_8017C1BC(void *a0) { + D_8018A3D0[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_8018A3D8[])(void); + +void func_8017C1F8(void *a0) { + D_8018A3D8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017C234); + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017C378); + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017C3E4); + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017C490); + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017C4D0); + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017C594); + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017C61C); + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017C7B8); + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017C9BC); + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017CDB0); + + +extern void (*D_8018A6B4[])(void); + +void func_8017CF30(void *a0) { + D_8018A6B4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017CF6C); + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017CFE0); + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017D0BC); + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017D2D0); + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017D3A4); + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017D474); + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017D4CC); + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017AE2C", func_8017D5C4); + diff --git a/src/ov_SC05_019/ov_SC05_019_jr_8017A4AC.c b/src/ov_SC05_019/ov_SC05_019_jr_8017A4AC.c index ab98d9706..cf28c8b64 100644 --- a/src/ov_SC05_019/ov_SC05_019_jr_8017A4AC.c +++ b/src/ov_SC05_019/ov_SC05_019_jr_8017A4AC.c @@ -2946,654 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8018F98C; - extern s16 D_8018F98E; - extern s16 D_8018F990; - extern s16 D_8018F984; - extern s16 D_8018F986; - extern s16 D_8018F988; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8018F98C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8018F98E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8018F990, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8018F984, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8018F986, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8018F988, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8018F914; -extern u16 D_8018F994; -extern u16 D_8018F996; -extern u16 D_8018F998; -extern s16 D_8018FAB0; - -void func_8017B1D8(void) { - func_8012A418(); - D_8018FAB0 = 0; - D_8018F914 = 0; - D_8018F994 = D_80126B5E; - D_8018F996 = D_80126B62; - D_8018F998 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80182BB8[]; - extern s16 D_8018F98C; - extern s16 D_8018F984; - 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_80182BB8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182BB8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8018F98C; - s16 *p78C = &D_8018F984; - *(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_8018FAB0 = 1; - D_8018F914 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8018F934; - extern SV4_8017B368 D_8018F93C; - extern s16 D_8018F98C; - extern s16 D_8018F984; - extern u16 D_80182BB8; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8018F934; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8018F93C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80182BB8)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80182BB8)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8018F98C) = loc0; - (*(SV4_8017B368 *)&D_8018F984) = loc1; - D_8018FAB0 = 1; - D_8018F914 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80182BB8[]; - extern s16 D_8018F98C; - extern s16 D_8018F98E; - extern s16 D_8018F990; - extern s16 D_8018F984; - extern s16 D_8018F986; - extern s16 D_8018F988; - 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_80182BB8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80182BB8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8018F98C; - s16 *p78C = &D_8018F984; - *(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_8018F98E; - v798 = D_8018F990; - v78C = *p78C; - v78E = D_8018F986; - v790 = D_8018F988; - __asm__ __volatile__(""); - D_8018FAB0 = 1; - D_8018F914 = 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_8018F914; -extern s16 D_8018F98C; -extern s16 D_8018F98E; -extern s16 D_8018F990; -extern s16 D_8018F984; -extern s16 D_8018F986; -extern s16 D_8018F988; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8018F914 = 0; - D_8018F98C = (s16) D_80114F30; - D_8018F98E = (s16) D_80114F34; - D_8018F990 = (s16) D_80114F38; - D_8018F984 = (s16) D_80114F24; - D_8018F986 = (s16) D_80114F28; - D_8018F988 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8018F9A4; -extern s16 D_8018F9A6; -extern s16 D_8018F9A8; -extern s16 D_8018F9AC; -extern s16 D_8018F9AE; -extern s16 D_8018F9B0; - -void func_8017B824(void) { - D_8018F9A4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8018F9A6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8018F9A8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8018F9AC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8018F9AE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8018F9B0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8018F9A4; -extern s16 D_8018F9A6; -extern s16 D_8018F9A8; -extern s16 D_8018F9AC; -extern s16 D_8018F9AE; -extern s16 D_8018F9B0; - -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_8018F9A4; - D_80114F34 = D_8018F9A6; - D_80114F38 = D_8018F9A8; - D_80114F24 = D_8018F9AC; - D_80114F28 = D_8018F9AE; - D_80114F2C = D_8018F9B0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8018F98C), src[8..15] -> (*(S8_8017B8E8 *)&D_8018F984) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8018F98C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8018F984) = ((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_8018F994; -extern u16 D_8018F996; -extern u16 D_8018F998; - -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_8018F914; -extern short D_8018F99C; -extern short D_8018F99E; -extern short D_8018F9A0; -extern s16 D_8018F98C; -extern s16 D_8018F98E; -extern s16 D_8018F990; -extern s16 D_8018F984; -extern s16 D_8018F986; -extern s16 D_8018F988; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8018F994); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8018F996); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8018F998); - (*(s16 *)&D_8018F99C) = buf[0]; - (*(s16 *)&D_8018F99E) = buf[1]; - (*(s16 *)&D_8018F9A0) = buf[2]; - D_8018F98C = D_80114F30 + buf[0]; - D_8018F914 = 0; - D_8018F98E = D_80114F34 + buf[1]; - D_8018F990 = D_80114F38 + buf[2]; - D_8018F984 = D_80114F24 + buf[0]; - D_8018F986 = D_80114F28 + buf[1]; - D_8018F988 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8018F934; -extern SV4 D_8018F93C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8018F93C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8018F934 = 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_8018F93C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8018F93C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8018F934) = 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_8018F93C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8018F95C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8018F95C; - 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_8018F914; -extern s16 D_8018FAB0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8018F914 = D_8018F914 + 1; - if (D_8018F914 >= 0x1F) { - D_8018FAB0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8018F914; -extern s16 D_8018FAB0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8018F914 = D_8018F914 + 1; - if (0x18 < D_8018F914) { - func_8012A4BC(); - D_8018FAB0 = 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_8018F914; -extern void (*D_8018F958)(void); -extern short D_8018F99C; -extern short D_8018F99E; -extern short D_8018F9A0; -extern s16 D_8018FAB0; - -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_8018F914 = D_8018F914 + 1; - if (D_8018F914 >= 0x19) { - if (D_8018F958 != 0) { - (*D_8018F958)(); - } else { - D_80114F30 = D_80114F30 + D_8018F99C; - D_80114F34 = D_80114F34 + D_8018F99E; - D_80114F38 = D_80114F38 + D_8018F9A0; - D_80114F24 = D_80114F24 + D_8018F99C; - D_80114F28 = D_80114F28 + D_8018F99E; - D_80114F2C = D_80114F2C + D_8018F9A0; - func_8012A4BC(); - } - D_8018FAB0 = 0; - } -} - - - -extern void (*D_80182C58[])(void); - -void func_8017BE60(void *a0) { - D_80182C58[*(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 (*D_80182C70[])(void); - -void func_8017BEBC(void *a0) { - D_80182C70[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_8017A4AC", func_8017BEF8); - -INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_8017A4AC", func_8017BFA4); - -INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_8017A4AC", func_8017C014); - -extern void ReadRotMatrix(void *a0); -extern void PushMatrix(void); -extern void func_8004974C(void *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void PopMatrix(void); -void func_8017C3EC(u16 *a0, void *a1) { - s32 mat[8]; - s32 buf[8]; - s16 sv[4]; - ReadRotMatrix((void *)mat); - PushMatrix(); - sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); - sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); - sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); - func_8004974C((void *)mat, (void *)buf); - ApplyMatrixSV((void *)buf, (void *)sv, a1); - PopMatrix(); -} - - -int func_8017C490(short *param_1, short *param_2, short *param_3, int param_4) { - register int i2o __asm__("$5"); - register int i4o __asm__("$9"); - short sVar1; int rx, rz, uVar5; - i4o = param_2[1]; - __asm__ __volatile__("" : : "r"(i4o)); - i2o = param_1[1]; uVar5 = 0; - if (i2o >= i4o) { - rx = param_1[0] - i2o * (param_2[0] - param_1[0]); - rz = param_1[2] - i2o * (param_2[2] - param_1[2]); - } else { - register int den __asm__("$3"); - int p2x = param_2[0], p2z = param_2[2]; - den = i2o - i4o; - rx = p2x + i4o * (p2x - param_1[0]) / den; - rz = p2z + i4o * (p2z - param_1[2]) / den; - } - if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } - else i2o = -0x7fff; - *param_3 = (short)i2o; - if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } - else i2o = -0x7fff; - param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; - if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } - if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } - if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } - if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } - return uVar5; -} - - -extern void ReadGeomOffset(s32 *a0, s32 *a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8004921C(s32 a0, s32 a1); -void func_8017C688(s32 a0, s32 a1) { - s32 ofx; - s32 ofy; - s32 sxy; - s32 p; - ReadGeomOffset(&ofx, &ofy); - func_8004921C(0, 0); - RotTransPers(a0, a1, &sxy, &p); - func_8004921C(ofx, ofy); -} - - -INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_8017A4AC", func_8017C6F4); diff --git a/src/ov_SC05_019/ov_SC05_019_jr_8017AE2C.c b/src/ov_SC05_019/ov_SC05_019_jr_8017AE2C.c new file mode 100644 index 000000000..01df04228 --- /dev/null +++ b/src/ov_SC05_019/ov_SC05_019_jr_8017AE2C.c @@ -0,0 +1,3531 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801817B0; +extern u8 D_80181720; +extern u8 D_801816FC; +extern u8 D_801816D8; +extern u8 D_8018178C; +extern u8 D_80181768; +extern u8 D_80181744; +extern u8 D_801816B4; +extern void func_80145934(void); +extern u8 D_80181840; +extern u8 D_8018181C; +extern u8 D_801817F8; +extern u8 D_801817D4; +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_80180C38[]; +extern unsigned char D_80180C68[]; +extern unsigned char D_80180CB8[]; +extern unsigned char D_80180CE8[]; +extern unsigned char D_80180D18[]; +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(void); +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_80180D68[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80180E30[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80180EB8[]; +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_80180EC0; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8018E810; +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_8018E814; +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_80180EF0; +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 void 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_80180F98[])(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_80180FBC[])(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_80180FAC; +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_80180FD0[])(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_80180FDC[]; +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_80180FEC[])(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_80181004[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180FF4; +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_80181018[])(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_80181034[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181024; +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_80181048[])(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_8018105C[])(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_80181070; +extern void (*D_80181098[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80181078; +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_801810E4[])(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_801810E8[])(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(void *a0); +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_8018154C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018155C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8018E848; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80181584[])(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_80181564; +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_80181574; +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_801815C4[])(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_801815CC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80181598; +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_801815D8[])(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_801815A8; +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_8018E850; +extern s32 D_8018E85C; +extern s32 D_8018E860; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80181614[])(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_801815E8[]; +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_8018E858; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80181864[])(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_80181684[]; +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_80181908[])(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_80181A5C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80181878; +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_80181A64[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80181888; +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_801818A8; +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_80181A6C[])(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(void); +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_80181A94[])(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_80181AA0[])(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_80181914[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80181B44; +extern void func_8015D380(s32 a0); +extern unsigned char D_80180C28[]; +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_80181B58[]; +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_80181B94[]; +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_80181BDC; +extern u16 D_80181BDE; +extern u16 D_80181BE0; +extern s32 D_80181BE4; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80181BEC; +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_801818F8; +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_80181C70[]; +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_80181D20[])(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_80181D50[]; +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_80181DB4; +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_8018E868[]; +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_80181DD8[])(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_8018E8C0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80181E20[])(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_80181E10; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8018E118[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_80181E28[])(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_80181E7C[])(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_80181E44; +extern s16 D_80181E78; +extern s16 D_80181E76; +extern s16 D_80181E74; +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_80181E88[])(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_8018E920; +extern u8 D_8018E921; +extern u8 D_8018E922; +extern u8 D_8018E923; +extern u8 D_8018E924; +extern u8 D_8018E925; +extern u8 D_8018E926; +extern u8 D_8018E927; +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_80181E98[])(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_8018E960; +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_80181EDC[])(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_80181F58[]; +extern s32 D_80181F78[]; +extern u8 D_80181FF4[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80182014[]; +extern u8 D_80182034[]; +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_801820D0[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018214C[])(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_8018E128; +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_80182158[])(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_80182160[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80182228[])(void); +extern void func_80166618(void *a0); +extern void (*D_80182238[])(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_80182248[])(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_80182254[])(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_801821B4[]; +extern u8 D_801821C8[]; +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_8018226C[])(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_80182274[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018227C[])(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_80182284[])(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_8018228C[])(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_80182294[])(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_8018229C[])(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_80182350[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80182358[])(void); +extern void func_80169F00(void *a0); +extern char D_80182308[]; +extern char D_801822C8[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80182390[])(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_8018239C[])(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_801823E4[])(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_80182460[])(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_8018EC80; +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_80182454[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80182498[]; +extern unsigned short D_801824A0[]; +extern unsigned short D_801824A8[]; +extern unsigned char D_8018EC88[]; +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_8018EC80; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801824B0[])(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_8018EDBC; +extern M2C_UNK D_8018EDC0; +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_8018ED48; +extern void (*D_801824E0[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018EDC4[]; +extern u8 D_8018EDCC[]; +extern u8 D_8018ED7C[]; +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_801824E8[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80182504[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018250C[])(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_80182574[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80182518; +extern u8 D_80182524; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801825A8[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801825B0[])(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_80182604[])(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_80182638[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80182628[]; +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_80182654; +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); +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_801826CC[])(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_801826D4[])(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_801826DC[])(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_801826E4[])(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_801826EC[])(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_801826F4[])(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_80182700[])(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_8018270C[])(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_80182718[])(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_80182728[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80182738[])(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_80182740[])(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_80182748[])(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_80182750[])(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_80182758[])(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_80182760[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80182768[])(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_80182770[])(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_80182778[])(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_80182780[])(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_80182788[])(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_80182790[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80182798[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801827A0[])(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_801827A8[])(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_801827B0[])(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_801827B8[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801827C0[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801827C8[])(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_801827D0[])(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_801827D8[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801827E0[])(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_801827E8[])(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_8018282C[])(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_801827F0; +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_8018285C[])(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_80182898[])(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(s32); +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_801828F0[])(); +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_80182900[])(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_80182908[])(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_80182A70[])(); +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_80182A7C[])(); +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_8018E370; +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 int func_801789AC(void); +extern s16 D_8018FAB0; +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_8018F500; +extern short D_8018FB24; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8018F92C; +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_8018F954; +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_8018F910; +extern s32 func_8017A3B0(void); +extern short D_8018F94C; +extern short D_8018F948; +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_8018FA80; +extern s16 D_8018FA82; +extern s16 D_8018FA8C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_8018FA80; + + 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_8018FA8C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_8018FA80+0xC == &D_8018FA8C; 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_8018FA80 + 0xC)) < 0x101) { + D_8018FA80 = 0; + D_8018FA82 = 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_8018FA8C); + 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_8018FA80 + 0xC)) < 0x101) { + D_8018FA80 = 0; + D_8018FA82 = 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_8018F98C; + extern s16 D_8018F98E; + extern s16 D_8018F990; + extern s16 D_8018F984; + extern s16 D_8018F986; + extern s16 D_8018F988; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8018F98C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8018F98E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8018F990, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8018F984, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8018F986, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8018F988, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8018F914; +extern u16 D_8018F994; +extern u16 D_8018F996; +extern u16 D_8018F998; +extern s16 D_8018FAB0; + +void func_8017B1D8(void) { + func_8012A418(); + D_8018FAB0 = 0; + D_8018F914 = 0; + D_8018F994 = D_80126B5E; + D_8018F996 = D_80126B62; + D_8018F998 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80182BB8[]; + extern s16 D_8018F98C; + extern s16 D_8018F984; + 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_80182BB8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182BB8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8018F98C; + s16 *p78C = &D_8018F984; + *(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_8018FAB0 = 1; + D_8018F914 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8018F934; + extern SV4_8017B368 D_8018F93C; + extern s16 D_8018F98C; + extern s16 D_8018F984; + extern u16 D_80182BB8; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8018F934; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8018F93C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80182BB8)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80182BB8)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8018F98C) = loc0; + (*(SV4_8017B368 *)&D_8018F984) = loc1; + D_8018FAB0 = 1; + D_8018F914 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80182BB8[]; + extern s16 D_8018F98C; + extern s16 D_8018F98E; + extern s16 D_8018F990; + extern s16 D_8018F984; + extern s16 D_8018F986; + extern s16 D_8018F988; + 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_80182BB8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80182BB8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8018F98C; + s16 *p78C = &D_8018F984; + *(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_8018F98E; + v798 = D_8018F990; + v78C = *p78C; + v78E = D_8018F986; + v790 = D_8018F988; + __asm__ __volatile__(""); + D_8018FAB0 = 1; + D_8018F914 = 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_8018F914; +extern s16 D_8018F98C; +extern s16 D_8018F98E; +extern s16 D_8018F990; +extern s16 D_8018F984; +extern s16 D_8018F986; +extern s16 D_8018F988; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8018F914 = 0; + D_8018F98C = (s16) D_80114F30; + D_8018F98E = (s16) D_80114F34; + D_8018F990 = (s16) D_80114F38; + D_8018F984 = (s16) D_80114F24; + D_8018F986 = (s16) D_80114F28; + D_8018F988 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8018F9A4; +extern s16 D_8018F9A6; +extern s16 D_8018F9A8; +extern s16 D_8018F9AC; +extern s16 D_8018F9AE; +extern s16 D_8018F9B0; + +void func_8017B824(void) { + D_8018F9A4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8018F9A6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8018F9A8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8018F9AC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8018F9AE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8018F9B0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8018F9A4; +extern s16 D_8018F9A6; +extern s16 D_8018F9A8; +extern s16 D_8018F9AC; +extern s16 D_8018F9AE; +extern s16 D_8018F9B0; + +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_8018F9A4; + D_80114F34 = D_8018F9A6; + D_80114F38 = D_8018F9A8; + D_80114F24 = D_8018F9AC; + D_80114F28 = D_8018F9AE; + D_80114F2C = D_8018F9B0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8018F98C), src[8..15] -> (*(S8_8017B8E8 *)&D_8018F984) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8018F98C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8018F984) = ((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_8018F994; +extern u16 D_8018F996; +extern u16 D_8018F998; + +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_8018F914; +extern short D_8018F99C; +extern short D_8018F99E; +extern short D_8018F9A0; +extern s16 D_8018F98C; +extern s16 D_8018F98E; +extern s16 D_8018F990; +extern s16 D_8018F984; +extern s16 D_8018F986; +extern s16 D_8018F988; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8018F994); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8018F996); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8018F998); + (*(s16 *)&D_8018F99C) = buf[0]; + (*(s16 *)&D_8018F99E) = buf[1]; + (*(s16 *)&D_8018F9A0) = buf[2]; + D_8018F98C = D_80114F30 + buf[0]; + D_8018F914 = 0; + D_8018F98E = D_80114F34 + buf[1]; + D_8018F990 = D_80114F38 + buf[2]; + D_8018F984 = D_80114F24 + buf[0]; + D_8018F986 = D_80114F28 + buf[1]; + D_8018F988 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8018F934; +extern SV4 D_8018F93C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8018F93C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8018F934 = 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_8018F93C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8018F93C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8018F934) = 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_8018F93C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8018F95C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8018F95C; + 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_8018F914; +extern s16 D_8018FAB0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8018F914 = D_8018F914 + 1; + if (D_8018F914 >= 0x1F) { + D_8018FAB0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8018F914; +extern s16 D_8018FAB0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8018F914 = D_8018F914 + 1; + if (0x18 < D_8018F914) { + func_8012A4BC(); + D_8018FAB0 = 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_8018F914; +extern void (*D_8018F958)(void); +extern short D_8018F99C; +extern short D_8018F99E; +extern short D_8018F9A0; +extern s16 D_8018FAB0; + +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_8018F914 = D_8018F914 + 1; + if (D_8018F914 >= 0x19) { + if (D_8018F958 != 0) { + (*D_8018F958)(); + } else { + D_80114F30 = D_80114F30 + D_8018F99C; + D_80114F34 = D_80114F34 + D_8018F99E; + D_80114F38 = D_80114F38 + D_8018F9A0; + D_80114F24 = D_80114F24 + D_8018F99C; + D_80114F28 = D_80114F28 + D_8018F99E; + D_80114F2C = D_80114F2C + D_8018F9A0; + func_8012A4BC(); + } + D_8018FAB0 = 0; + } +} + + + +extern void (*D_80182C58[])(void); + +void func_8017BE60(void *a0) { + D_80182C58[*(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 (*D_80182C70[])(void); + +void func_8017BEBC(void *a0) { + D_80182C70[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_8017AE2C", func_8017BEF8); + +INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_8017AE2C", func_8017BFA4); + +INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_8017AE2C", func_8017C014); + +extern void ReadRotMatrix(void *a0); +extern void PushMatrix(void); +extern void func_8004974C(void *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern void PopMatrix(void); +void func_8017C3EC(u16 *a0, void *a1) { + s32 mat[8]; + s32 buf[8]; + s16 sv[4]; + ReadRotMatrix((void *)mat); + PushMatrix(); + sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); + sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); + sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); + func_8004974C((void *)mat, (void *)buf); + ApplyMatrixSV((void *)buf, (void *)sv, a1); + PopMatrix(); +} + + +int func_8017C490(short *param_1, short *param_2, short *param_3, int param_4) { + register int i2o __asm__("$5"); + register int i4o __asm__("$9"); + short sVar1; int rx, rz, uVar5; + i4o = param_2[1]; + __asm__ __volatile__("" : : "r"(i4o)); + i2o = param_1[1]; uVar5 = 0; + if (i2o >= i4o) { + rx = param_1[0] - i2o * (param_2[0] - param_1[0]); + rz = param_1[2] - i2o * (param_2[2] - param_1[2]); + } else { + register int den __asm__("$3"); + int p2x = param_2[0], p2z = param_2[2]; + den = i2o - i4o; + rx = p2x + i4o * (p2x - param_1[0]) / den; + rz = p2z + i4o * (p2z - param_1[2]) / den; + } + if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } + else i2o = -0x7fff; + *param_3 = (short)i2o; + if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } + else i2o = -0x7fff; + param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; + if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } + if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } + if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } + if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } + return uVar5; +} + + +extern void ReadGeomOffset(s32 *a0, s32 *a1); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +extern void func_8004921C(s32 a0, s32 a1); +void func_8017C688(s32 a0, s32 a1) { + s32 ofx; + s32 ofy; + s32 sxy; + s32 p; + ReadGeomOffset(&ofx, &ofy); + func_8004921C(0, 0); + RotTransPers(a0, a1, &sxy, &p); + func_8004921C(ofx, ofy); +} + + +INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_8017AE2C", func_8017C6F4); + diff --git a/src/ov_SC06_000/ov_SC06_000_jr_8017A4AC.c b/src/ov_SC06_000/ov_SC06_000_jr_8017A4AC.c index 0b6bdb0ea..10c7d4e15 100644 --- a/src/ov_SC06_000/ov_SC06_000_jr_8017A4AC.c +++ b/src/ov_SC06_000/ov_SC06_000_jr_8017A4AC.c @@ -2946,1731 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801AE5FC; - extern s16 D_801AE5FE; - extern s16 D_801AE600; - extern s16 D_801AE5F4; - extern s16 D_801AE5F6; - extern s16 D_801AE5F8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801AE5FC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801AE5FE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801AE600, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801AE5F4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801AE5F6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801AE5F8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801AE584; -extern u16 D_801AE604; -extern u16 D_801AE606; -extern u16 D_801AE608; -extern s16 D_801B20D8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801B20D8 = 0; - D_801AE584 = 0; - D_801AE604 = D_80126B5E; - D_801AE606 = D_80126B62; - D_801AE608 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018BBC8[]; - extern s16 D_801AE5FC; - extern s16 D_801AE5F4; - 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_8018BBC8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018BBC8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801AE5FC; - s16 *p78C = &D_801AE5F4; - *(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_801B20D8 = 1; - D_801AE584 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801AE5A4; - extern SV4_8017B368 D_801AE5AC; - extern s16 D_801AE5FC; - extern s16 D_801AE5F4; - extern u16 D_8018BBC8; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801AE5A4; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801AE5AC; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018BBC8)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018BBC8)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801AE5FC) = loc0; - (*(SV4_8017B368 *)&D_801AE5F4) = loc1; - D_801B20D8 = 1; - D_801AE584 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018BBC8[]; - extern s16 D_801AE5FC; - extern s16 D_801AE5FE; - extern s16 D_801AE600; - extern s16 D_801AE5F4; - extern s16 D_801AE5F6; - extern s16 D_801AE5F8; - 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_8018BBC8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018BBC8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801AE5FC; - s16 *p78C = &D_801AE5F4; - *(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_801AE5FE; - v798 = D_801AE600; - v78C = *p78C; - v78E = D_801AE5F6; - v790 = D_801AE5F8; - __asm__ __volatile__(""); - D_801B20D8 = 1; - D_801AE584 = 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_801AE584; -extern s16 D_801AE5FC; -extern s16 D_801AE5FE; -extern s16 D_801AE600; -extern s16 D_801AE5F4; -extern s16 D_801AE5F6; -extern s16 D_801AE5F8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801AE584 = 0; - D_801AE5FC = (s16) D_80114F30; - D_801AE5FE = (s16) D_80114F34; - D_801AE600 = (s16) D_80114F38; - D_801AE5F4 = (s16) D_80114F24; - D_801AE5F6 = (s16) D_80114F28; - D_801AE5F8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801AE614; -extern s16 D_801AE616; -extern s16 D_801AE618; -extern s16 D_801AE61C; -extern s16 D_801AE61E; -extern s16 D_801AE620; - -void func_8017B824(void) { - D_801AE614 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801AE616 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801AE618 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801AE61C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801AE61E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801AE620 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801AE614; -extern s16 D_801AE616; -extern s16 D_801AE618; -extern s16 D_801AE61C; -extern s16 D_801AE61E; -extern s16 D_801AE620; - -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_801AE614; - D_80114F34 = D_801AE616; - D_80114F38 = D_801AE618; - D_80114F24 = D_801AE61C; - D_80114F28 = D_801AE61E; - D_80114F2C = D_801AE620; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801AE5FC), src[8..15] -> (*(S8_8017B8E8 *)&D_801AE5F4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801AE5FC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801AE5F4) = ((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_801AE604; -extern u16 D_801AE606; -extern u16 D_801AE608; - -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_801AE584; -extern short D_801AE60C; -extern short D_801AE60E; -extern short D_801AE610; -extern s16 D_801AE5FC; -extern s16 D_801AE5FE; -extern s16 D_801AE600; -extern s16 D_801AE5F4; -extern s16 D_801AE5F6; -extern s16 D_801AE5F8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801AE604); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801AE606); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801AE608); - (*(s16 *)&D_801AE60C) = buf[0]; - (*(s16 *)&D_801AE60E) = buf[1]; - (*(s16 *)&D_801AE610) = buf[2]; - D_801AE5FC = D_80114F30 + buf[0]; - D_801AE584 = 0; - D_801AE5FE = D_80114F34 + buf[1]; - D_801AE600 = D_80114F38 + buf[2]; - D_801AE5F4 = D_80114F24 + buf[0]; - D_801AE5F6 = D_80114F28 + buf[1]; - D_801AE5F8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801AE5A4; -extern SV4 D_801AE5AC; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801AE5AC) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801AE5A4 = 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_801AE5AC = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801AE5AC)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801AE5A4) = 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_801AE5AC) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801AE5CC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801AE5CC; - 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_801AE584; -extern s16 D_801B20D8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801AE584 = D_801AE584 + 1; - if (D_801AE584 >= 0x1F) { - D_801B20D8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801AE584; -extern s16 D_801B20D8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801AE584 = D_801AE584 + 1; - if (0x18 < D_801AE584) { - func_8012A4BC(); - D_801B20D8 = 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_801AE584; -extern void (*D_801AE5C8)(void); -extern short D_801AE60C; -extern short D_801AE60E; -extern short D_801AE610; -extern s16 D_801B20D8; - -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_801AE584 = D_801AE584 + 1; - if (D_801AE584 >= 0x19) { - if (D_801AE5C8 != 0) { - (*D_801AE5C8)(); - } else { - D_80114F30 = D_80114F30 + D_801AE60C; - D_80114F34 = D_80114F34 + D_801AE60E; - D_80114F38 = D_80114F38 + D_801AE610; - D_80114F24 = D_80114F24 + D_801AE60C; - D_80114F28 = D_80114F28 + D_801AE60E; - D_80114F2C = D_80114F2C + D_801AE610; - func_8012A4BC(); - } - D_801B20D8 = 0; - } -} - - - -extern void (*D_8018BC68[])(void); - -void func_8017BE60(void *a0) { - D_8018BC68[*(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) */ - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017BEBC); - - -extern void (*D_8018BC74[])(void); - -void func_8017BEE4(void *a0) { - D_8018BC74[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017BF20); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017BF58); - -DEFINE_func_8017BF98() /* dedup: shared engine-core @0x8017BF98 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017BFA0); - - -extern void (*D_8018BC80[])(void); - -void func_8017BFC8(void *a0) { - D_8018BC80[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017C004); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017C03C); - -DEFINE_func_8017C07C() /* dedup: shared engine-core @0x8017C07C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017C084); - - -extern void (*D_8018BD40[])(void); - -void func_8017C0C8(void *a0) { - D_8018BD40[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017C104); - -extern void func_8017C154(void); -void func_8017C12C(void) { - func_8017C154(); -} - - -DEFINE_func_8017C14C() /* dedup: shared engine-core @0x8017C14C (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017C154); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017C290); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017C624); - - -extern void (*D_8018BD80[])(void); - -void func_8017C664(void *a0) { - D_8018BD80[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017C6A0); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017C814); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017C8FC); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017CC44); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017CCC4); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017CD10); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017CE10); - - -extern void (*D_8018BDA0[])(void); - -void func_8017CE54(void *a0) { - D_8018BDA0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017CE90); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017CFBC); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017D098); - - -extern void (*D_8018BDB0[])(void); - -void func_8017D0DC(void *a0) { - D_8018BDB0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017D118); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017D194); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017D1E0); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017D318); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017D5F8); - - -extern void (*D_8018BDBC[])(void); - -void func_8017D63C(void *a0) { - D_8018BDBC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017D678); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017D75C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017D804); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017D890); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017D900); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017D9C8); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017DA98); - - -extern void (*D_8018BF40[])(void); - -void func_8017DB00(void *a0) { - D_8018BF40[*(u8 *)((s32)a0 + 0x214)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017DB3C); - -extern s32 func_80171CC4(void *a0, void *a1); -extern void func_80171A1C(u8 *a0); -extern s16 D_80126B36; -void func_8017DB74(u8 *a0) { - s16 *p = &D_80126B36; - if (*p != 0) { - if (func_80171CC4(a0, p - 3) == 0) { - return; - } - } - func_80171A1C(a0); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017DBC4); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017DC28); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017DC4C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017DCC0); - -DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017DD7C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017DDBC); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017DE24); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017DE8C); - -DEFINE_func_8017DF7C() /* dedup: shared engine-core @0x8017DF7C (src/shared) */ - - -extern void (*D_8018BF84[])(void); - -void func_8017DF84(void *a0) { - D_8018BF84[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017DFC0); - -extern void func_80146C3C(void); -void func_8017E184(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_8018BF8C[])(void); - -void func_8017E218(void *a0) { - D_8018BF8C[*(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_8018BF78; - -void func_8017E254(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_8018BF78, 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_8017E2F8(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; - } -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017E35C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017EE98); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017EECC); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017EF08); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017EF68); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017FE8C); - - -extern void (*D_8018BFC0[])(void); - -void func_8017FEC8(void *a0) { - D_8018BFC0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017FF04); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017FF54); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8017FFB0); - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80180034); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8018019C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801801E8); - - -extern void (*D_8018BFD4[])(void); - -void func_801804F4(void *a0) { - D_8018BFD4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80180530); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80180570); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801805E0); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8018066C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80180740); - - -extern void (*D_8018BFE8[])(void); - -void func_80180794(void *a0) { - D_8018BFE8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801807D0); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80180884); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801808E0); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80180A50); - -extern void func_80183674(void); - void func_80180AB8(void) { - func_80183674(); - } - - - -extern void (*D_8018C040[])(void); - -void func_80180AD8(void *a0) { - D_8018C040[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80180B14); - - -extern s32 func_800167F0(s32 a0); - -s32 func_80180B58(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_8018C048[])(void); - -void func_80180B7C(void *a0) { - D_8018C048[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80180BB8); - - -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_80180BF8(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_80180C74(void) { - func_800D1EBC(); - } - - - -extern void (*D_8018C054[])(void); - -void func_80180C94(void *a0) { - D_8018C054[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80180CD0); - -s32 func_80180D0C(void) { - return 0; - } - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80180D14); - - -extern void (*D_8018C070[])(void); - -void func_80180D5C(void *a0) { - D_8018C070[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80180D98); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80180DD4); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80180E58); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80180EE0); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80180F14); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80180FC8); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8018103C); - -extern void func_80154150(s32 a0, s32 a1); - extern void func_8014706C(void *arg0); - extern s32 func_80171990(u8 *a0); - void func_80181074(s32 arg0) { - func_80154150(arg0, 0x4); - ((void (*)(s32))func_8014706C)(arg0); - ((void (*)(void *))func_80171990)((void *)arg0); - } - - -extern s32 func_80171990(u8 *a0); - void func_801810B0(void) { - ((s32 (*)(void))func_80171990)(); - } - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801810D0); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80181114); - -extern s32 func_801399F0(s32 a0); -extern void func_80139914(s32 a0); -extern void func_80171928(void *a0); -void func_80181164(u8 *a0) { - if (func_801399F0(*(s32 *)(a0 + 0x198)) != 0) { - func_80139914(*(s32 *)(a0 + 0x198)); - *(s32 *)(a0 + 0x198) = 0; - func_80171928(a0); - } -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801811B4); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801811DC); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80181204); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8018127C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801812BC); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80181388); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801813FC); - -extern s32 func_8017EE98(s32 arg); - extern s32 func_80171990(u8 *a0); - void func_80181440(s32 param_1) { - if (((int (*)(void))func_8017EE98)() != 0) { - ((void (*)(s32))func_80171990)(param_1); - } - } - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80181478); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801814DC); - -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_8018C0A0; - -void func_8018152C(void) { - ((void (*)(void *, s32))func_8016EE40)(&D_8018C0A0, 0x1000000); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80181554); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801815E8); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801816AC); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80181774); - -extern void func_8012A568(void (*a0)(void)); - extern s32 func_80181864(s32 a0); - s32 func_8018183C(void) -{ - ((void (*)(void *))func_8012A568)((void *)func_80181864); - } - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80181864); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80181918); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80181940); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801819F4); - - -extern void (*D_8018C100[])(void); - -void func_80181A78(void *a0) { - D_8018C100[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80181AB4); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80181BA4); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80181C38); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80181CCC); - -void func_80181E98(void) { -} - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80181EA0); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80181F14); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80181F78); - - -extern void (*D_8018C548[])(void); - -void func_80182348(void *a0) { - D_8018C548[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_8013C0F8(void *a0); - extern s32 func_8017EF08(s32 a0); - extern s32 D_801A158C; - extern s32 D_801AEB00; - void func_80182384(void) { - ((void (*)(void *))func_8013C0F8)(&D_801A158C); - ((void (*)(s32))func_8017EF08)((s32)&D_801AEB00); - } - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801823BC); - -extern void func_8013C0F8(void *a0); - extern s32 func_8017EF08(s32 a0); - extern s32 D_801A3A0C; - extern s32 D_801AEB58; - void func_8018242C(void) { - ((void (*)(void *))func_8013C0F8)(&D_801A3A0C); - ((void (*)(s32))func_8017EF08)((s32)&D_801AEB58); - } - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80182464); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801824D4); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80182560); - -s16 func_801825D8(void) { - - extern s16 D_801AEAFE; - return D_801AEAFE; -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801825E8); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80182614); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8018270C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8018278C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801827C0); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801827F4); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80182828); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80182888); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801828DC); - -extern void func_8012AD44(s32 *a0, s16 a1); - void func_801828FC(void *arg0) { - ((void (*)(s32, s32))func_8012AD44)((s32)arg0, 0x3); - } - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8018291C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80182950); - -extern void func_801816AC(void); - void func_801829C8(void) { - func_801816AC(); - } - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801829E8); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80182A30); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80182A90); - -extern void func_80181554(void); - void func_80182AD0(void) { - func_80181554(); - } - - -extern void func_80181774(void); - void func_80182AF0(void) { - func_80181774(); - } - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80182B10); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80182B68); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80182BB8); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80182C10); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80182CD8); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80182E38); - - -extern void (*D_8018C66C[])(void); - -void func_80183088(void *a0) { - D_8018C66C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801830C4); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80183130); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801831E4); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8018325C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80183338); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80183398); - - -extern void (*D_8018C734[])(void); - -void func_80183574(void *a0) { - D_8018C734[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801835B0); - - -extern void (*D_8018C7FC[])(void); - -void func_80183638(void *a0) { - D_8018C7FC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80183674); - -extern void (*D_8018C94C[])(void); - -void func_801836E0(void *a0) { - D_8018C94C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8018371C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80183790); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801837DC); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8018381C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80183884); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801838FC); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80183A1C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80183B20); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80183BC4); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80183C9C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80183DAC); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80183E48); - - -extern void (*D_8018C964[])(void); - -void func_80183EFC(void *a0) { - D_8018C964[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80183F38); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801840F8); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801842CC); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80184398); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801844AC); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80184524); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80184578); - - -s32 func_801845B8(s32 arg0) { - return *(u16*)(arg0 + 0x2) == 0x6; - } - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801845CC); - -extern void func_8012AD44(s32 *a0, s16 a1); - void func_8018467C(void *arg0) { - ((void (*)(s32, s32))func_8012AD44)((s32)arg0, 0x8); - } - - -extern void func_8013CAE8(void); - void func_8018469C(void) { - func_8013CAE8(); - } - - - -extern void (*D_8018CC08[])(void); - -void func_801846BC(void *a0) { - D_8018CC08[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801846F8); - -void func_80184808(void *a0) { - *(s32 *)((s32)a0 + 0x48) = 0x1400; - *(s32 *)((s32)a0 + 0x14) = 0; - } - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80184818); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80184870); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801848A4); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80184940); - -extern void func_8017BEBC(void); - void func_801849A8(void) { - func_8017BEBC(); - } - - -extern s32 func_8017BFA0(void); - void func_801849C8(void) { - func_8017BFA0(); - } - - -extern s32 func_8018183C(void); - void func_801849E8(void) { - func_8018183C(); - } - - -extern void func_80181918(void); - void func_80184A08(void) { - func_80181918(); - } - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80184A28); - -void func_80184A50(void *a0) { - *(short *)((char *)a0 + 0x2) = 0x2; - } - - -void func_80184A5C(void *a0) { - *(short *)((char *)a0 + 0x2) = 0x3; - } - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80184A68); - - -extern void func_8002D4C8(s32 arg0, s32 arg1); - void func_80184AA8(void *a0) { - *(s16 *)((s32)a0 + 0x2) = 0x4; - func_8002D4C8(0x921, 0); - } - - -void func_80184AD4(void *a0) { - *(short *)((char *)a0 + 0x2) = 0x5; - *(int *)((char *)a0 + 0x1c) = 0; - } - - - -// @class: struct -// @stuck: none — MATCH expected; param_1 survives jal in $s0, table fp-call with %lo-fold -extern void func_80184B30(u8 *a0); -extern void (*D_8018CC58[])(int); - -void func_80184AE4(int param_1) -{ - ((void (*)(void))func_80184B30)(); - D_8018CC58[*(unsigned short *)(param_1 + 2)](param_1); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80184B30); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80184B80); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80184C24); - -void func_80184C60(void) { -} - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80184C68); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80184CBC); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80184D68); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80184DD8); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80184E68); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80184EB8); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80184F68); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80184FD8); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80185028); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801850E4); - -extern void func_80184A68(void); -void func_8018514C(void) { - func_80184A68(); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8018516C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801851CC); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80185264); - - -extern void (*D_8018CC70[])(void); - -void func_80185318(void *a0) { - D_8018CC70[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80185354); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801853F0); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80185520); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8018562C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80185734); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80185764); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80185814); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801858E8); - - -extern void (*D_8018CCA0[])(void); - -void func_8018593C(void *a0) { - D_8018CCA0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80185978); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801859B4); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80185A5C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80185B04); - - -extern void (*D_8018CD04[])(void); - -void func_80185BA8(void *a0) { - D_8018CD04[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80185BE4); - -void func_80185C40(void *a0) { - *(u16 *)((s32)a0 + 0xA) += 1; - if (*(s16 *)((s32)a0 + 0xA) >= 0x101) { - *(u16 *)((s32)a0 + 0xA) = 0x100; - } - } - - - -extern void (*D_8018CE0C[])(void); - -void func_80185C70(void *a0) { - D_8018CE0C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80185CAC); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80185D24); - -extern s32 func_80187754(s32 *a0); -void func_80185D7C(void) { - - extern s32 D_801B2150; - func_80187754(&D_801B2150); -} - - - -extern void (*D_8018CE14[])(void); - -void func_80185DA4(void *a0) { - D_8018CE14[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80185DE0); - -void func_80185E44(void) { -} - - -extern void (*D_8018CE1C[])(void); - -void func_80185E4C(void *a0) { - D_8018CE1C[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_8012AD50(void *a0); - void func_80185E88(u8 *a0) { - *(s16 *)(a0 + 0xFC) = 0; - *(u16 *)(a0 + 0x72) |= 0x1000; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80185EB4); - - -s32 func_80185EDC(void) { - return 122; -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80185EE4); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80185F48); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801860A8); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8018628C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80186348); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801863F4); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80186468); - - -extern void (*D_801AAA64[])(void); - -void func_80186688(void *a0) { - D_801AAA64[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801866C4); - -void func_80186758(void) { - - extern s16 D_801B1EFC; - s16 *p = &D_801B1EFC; - s32 i = 0xF; - do { - *p = 0; - p = (s16 *)((s32)p + 0xe); - i--; - } while (i >= 0); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8018677C); - - -extern s16 D_801B1EF4; - extern s16 D_801B1EF6; - extern s16 D_801B1EF8; - extern s16 D_801B1EFA; - void func_8018681C(s32 arg0, s32 arg1, s32 arg2) { - D_801B1EF4 = *(u16 *)((s32)arg0 + 0x0); - D_801B1EF6 = *(u16 *)((s32)arg0 + 0x2); - D_801B1EF8 = arg1; - D_801B1EFA = arg2; - } - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8018684C); - -extern s16 D_801B1EFA; - -void func_801868C4(u16 a0) { - s16 *p = &D_801B1EFA; - *(u16 *)((char *)p + 0x0) += a0; -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801868E0); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80186938); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80186A0C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80186A48); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80186A94); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80186B70); - -void func_80186E34(void) { - - extern s16 D_801B1DF4; - s16 *p = &D_801B1DF4; - s32 i = 0xF; - do { - *p = 0; - p = (s16 *)((s32)p + 0x10); - i--; - } while (i >= 0); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80186E58); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80186E80); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80186F08); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80186F74); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80186FE4); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_8018705C); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801870A8); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801871C4); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80187200); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80187314); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801875F8); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80187720); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80187754); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80187798); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801878A8); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80187998); - -void func_801879A8(s32 *a0, s8 a1, s8 a2, s8 a3) { - *(s8*)((s32)a0 + 0x4) = a1; - *(s8*)((s32)a0 + 0x5) = a2; - *(s8*)((s32)a0 + 0x6) = a3; - } - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_801879B8); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80187AB8); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80187B34); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80187FD4); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80188160); - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017A4AC", func_80188194); - - - diff --git a/src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c b/src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c new file mode 100644 index 000000000..868484b55 --- /dev/null +++ b/src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c @@ -0,0 +1,4608 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018A7C0; +extern u8 D_8018A730; +extern u8 D_8018A70C; +extern u8 D_8018A6E8; +extern u8 D_8018A79C; +extern u8 D_8018A778; +extern u8 D_8018A754; +extern u8 D_8018A6C4; +extern void func_80145934(void); +extern u8 D_8018A850; +extern u8 D_8018A82C; +extern u8 D_8018A808; +extern u8 D_8018A7E4; +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_80189C48[]; +extern unsigned char D_80189C78[]; +extern unsigned char D_80189CC8[]; +extern unsigned char D_80189CF8[]; +extern unsigned char D_80189D28[]; +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(void); +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_80189D78[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80189E40[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80189EC8[]; +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_80189ED0; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801AD480; +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_801AD484; +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_80189F00; +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 void 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_80189FA8[])(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_80189FCC[])(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_80189FBC; +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_80189FE0[])(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_80189FEC[]; +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_80189FFC[])(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_8018A014[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018A004; +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_8018A028[])(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_8018A044[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018A034; +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_8018A058[])(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_8018A06C[])(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_8018A080; +extern void (*D_8018A0A8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018A088; +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_8018A0F4[])(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_8018A0F8[])(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(void *a0); +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_8018A55C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018A56C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801AD4B8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018A594[])(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_8018A574; +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_8018A584; +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_8018A5D4[])(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_8018A5DC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018A5A8; +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_8018A5E8[])(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_8018A5B8; +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_801AD4C0; +extern s32 D_801AD4CC; +extern s32 D_801AD4D0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018A624[])(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_8018A5F8[]; +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_801AD4C8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018A874[])(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_8018A694[]; +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_8018A918[])(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_8018AA6C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018A888; +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_8018AA74[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018A898; +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_8018A8B8; +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_8018AA7C[])(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(void); +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_8018AAA4[])(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_8018AAB0[])(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_8018A924[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018AB54; +extern void func_8015D380(s32 a0); +extern unsigned char D_80189C38[]; +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_8018AB68[]; +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_8018ABA4[]; +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_8018ABEC; +extern u16 D_8018ABEE; +extern u16 D_8018ABF0; +extern s32 D_8018ABF4; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018ABFC; +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_8018A908; +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_8018AC80[]; +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_8018AD30[])(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_8018AD60[]; +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_8018ADC4; +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_801AD4D8[]; +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_8018ADE8[])(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_801AD530[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018AE30[])(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_8018AE20; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801ACD90[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_8018AE38[])(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_8018AE8C[])(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_8018AE54; +extern s16 D_8018AE88; +extern s16 D_8018AE86; +extern s16 D_8018AE84; +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_8018AE98[])(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_801AD590; +extern u8 D_801AD591; +extern u8 D_801AD592; +extern u8 D_801AD593; +extern u8 D_801AD594; +extern u8 D_801AD595; +extern u8 D_801AD596; +extern u8 D_801AD597; +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_8018AEA8[])(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_801AD5D0; +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_8018AEEC[])(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_8018AF68[]; +extern s32 D_8018AF88[]; +extern u8 D_8018B004[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018B024[]; +extern u8 D_8018B044[]; +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_8018B0E0[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018B15C[])(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_801ACDA0; +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_8018B168[])(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_8018B170[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018B238[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018B248[])(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_8018B258[])(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_8018B264[])(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_8018B1C4[]; +extern u8 D_8018B1D8[]; +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_8018B27C[])(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_8018B284[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018B28C[])(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_8018B294[])(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_8018B29C[])(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_8018B2A4[])(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_8018B2AC[])(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_8018B360[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018B368[])(void); +extern void func_80169F00(void *a0); +extern char D_8018B318[]; +extern char D_8018B2D8[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018B3A0[])(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_8018B3AC[])(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_8018B3F4[])(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_8018B470[])(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_801AD8F0; +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_8018B464[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018B4A8[]; +extern unsigned short D_8018B4B0[]; +extern unsigned short D_8018B4B8[]; +extern unsigned char D_801AD8F8[]; +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_801AD8F0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018B4C0[])(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_801ADA2C; +extern M2C_UNK D_801ADA30; +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_801AD9B8; +extern void (*D_8018B4F0[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801ADA34[]; +extern u8 D_801ADA3C[]; +extern u8 D_801AD9EC[]; +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_8018B4F8[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018B514[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018B51C[])(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_8018B584[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018B528; +extern u8 D_8018B534; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018B5B8[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018B5C0[])(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_8018B614[])(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_8018B648[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018B638[]; +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_8018B664; +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); +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_8018B6DC[])(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_8018B6E4[])(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_8018B6EC[])(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_8018B6F4[])(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_8018B6FC[])(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_8018B704[])(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_8018B710[])(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_8018B71C[])(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_8018B728[])(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_8018B738[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018B748[])(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_8018B750[])(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_8018B758[])(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_8018B760[])(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_8018B768[])(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_8018B770[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018B778[])(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_8018B780[])(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_8018B788[])(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_8018B790[])(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_8018B798[])(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_8018B7A0[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018B7A8[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018B7B0[])(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_8018B7B8[])(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_8018B7C0[])(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_8018B7C8[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018B7D0[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018B7D8[])(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_8018B7E0[])(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_8018B7E8[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018B7F0[])(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_8018B7F8[])(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_8018B83C[])(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_8018B800; +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_8018B86C[])(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_8018B8A8[])(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(s32); +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_8018B900[])(); +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_8018B910[])(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_8018B918[])(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_8018BA80[])(); +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_8018BA8C[])(); +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_801ACFE8; +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 int func_801789AC(void); +extern s16 D_801B20D8; +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_801AE170; +extern short D_801B2184; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801AE59C; +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_801AE5C4; +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_801AE580; +extern s32 func_8017A3B0(void); +extern short D_801AE5BC; +extern short D_801AE5B8; +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_801B20A8; +extern s16 D_801B20AA; +extern s16 D_801B20B4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801B20A8; + + 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_801B20B4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801B20A8+0xC == &D_801B20B4; 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_801B20A8 + 0xC)) < 0x101) { + D_801B20A8 = 0; + D_801B20AA = 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_801B20B4); + 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_801B20A8 + 0xC)) < 0x101) { + D_801B20A8 = 0; + D_801B20AA = 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_801AE5FC; + extern s16 D_801AE5FE; + extern s16 D_801AE600; + extern s16 D_801AE5F4; + extern s16 D_801AE5F6; + extern s16 D_801AE5F8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801AE5FC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801AE5FE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801AE600, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801AE5F4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801AE5F6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801AE5F8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801AE584; +extern u16 D_801AE604; +extern u16 D_801AE606; +extern u16 D_801AE608; +extern s16 D_801B20D8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801B20D8 = 0; + D_801AE584 = 0; + D_801AE604 = D_80126B5E; + D_801AE606 = D_80126B62; + D_801AE608 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018BBC8[]; + extern s16 D_801AE5FC; + extern s16 D_801AE5F4; + 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_8018BBC8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018BBC8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801AE5FC; + s16 *p78C = &D_801AE5F4; + *(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_801B20D8 = 1; + D_801AE584 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801AE5A4; + extern SV4_8017B368 D_801AE5AC; + extern s16 D_801AE5FC; + extern s16 D_801AE5F4; + extern u16 D_8018BBC8; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801AE5A4; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801AE5AC; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018BBC8)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018BBC8)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801AE5FC) = loc0; + (*(SV4_8017B368 *)&D_801AE5F4) = loc1; + D_801B20D8 = 1; + D_801AE584 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018BBC8[]; + extern s16 D_801AE5FC; + extern s16 D_801AE5FE; + extern s16 D_801AE600; + extern s16 D_801AE5F4; + extern s16 D_801AE5F6; + extern s16 D_801AE5F8; + 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_8018BBC8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018BBC8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801AE5FC; + s16 *p78C = &D_801AE5F4; + *(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_801AE5FE; + v798 = D_801AE600; + v78C = *p78C; + v78E = D_801AE5F6; + v790 = D_801AE5F8; + __asm__ __volatile__(""); + D_801B20D8 = 1; + D_801AE584 = 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_801AE584; +extern s16 D_801AE5FC; +extern s16 D_801AE5FE; +extern s16 D_801AE600; +extern s16 D_801AE5F4; +extern s16 D_801AE5F6; +extern s16 D_801AE5F8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801AE584 = 0; + D_801AE5FC = (s16) D_80114F30; + D_801AE5FE = (s16) D_80114F34; + D_801AE600 = (s16) D_80114F38; + D_801AE5F4 = (s16) D_80114F24; + D_801AE5F6 = (s16) D_80114F28; + D_801AE5F8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801AE614; +extern s16 D_801AE616; +extern s16 D_801AE618; +extern s16 D_801AE61C; +extern s16 D_801AE61E; +extern s16 D_801AE620; + +void func_8017B824(void) { + D_801AE614 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801AE616 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801AE618 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801AE61C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801AE61E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801AE620 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801AE614; +extern s16 D_801AE616; +extern s16 D_801AE618; +extern s16 D_801AE61C; +extern s16 D_801AE61E; +extern s16 D_801AE620; + +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_801AE614; + D_80114F34 = D_801AE616; + D_80114F38 = D_801AE618; + D_80114F24 = D_801AE61C; + D_80114F28 = D_801AE61E; + D_80114F2C = D_801AE620; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801AE5FC), src[8..15] -> (*(S8_8017B8E8 *)&D_801AE5F4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801AE5FC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801AE5F4) = ((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_801AE604; +extern u16 D_801AE606; +extern u16 D_801AE608; + +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_801AE584; +extern short D_801AE60C; +extern short D_801AE60E; +extern short D_801AE610; +extern s16 D_801AE5FC; +extern s16 D_801AE5FE; +extern s16 D_801AE600; +extern s16 D_801AE5F4; +extern s16 D_801AE5F6; +extern s16 D_801AE5F8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801AE604); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801AE606); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801AE608); + (*(s16 *)&D_801AE60C) = buf[0]; + (*(s16 *)&D_801AE60E) = buf[1]; + (*(s16 *)&D_801AE610) = buf[2]; + D_801AE5FC = D_80114F30 + buf[0]; + D_801AE584 = 0; + D_801AE5FE = D_80114F34 + buf[1]; + D_801AE600 = D_80114F38 + buf[2]; + D_801AE5F4 = D_80114F24 + buf[0]; + D_801AE5F6 = D_80114F28 + buf[1]; + D_801AE5F8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801AE5A4; +extern SV4 D_801AE5AC; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801AE5AC) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801AE5A4 = 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_801AE5AC = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801AE5AC)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801AE5A4) = 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_801AE5AC) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801AE5CC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801AE5CC; + 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_801AE584; +extern s16 D_801B20D8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801AE584 = D_801AE584 + 1; + if (D_801AE584 >= 0x1F) { + D_801B20D8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801AE584; +extern s16 D_801B20D8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801AE584 = D_801AE584 + 1; + if (0x18 < D_801AE584) { + func_8012A4BC(); + D_801B20D8 = 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_801AE584; +extern void (*D_801AE5C8)(void); +extern short D_801AE60C; +extern short D_801AE60E; +extern short D_801AE610; +extern s16 D_801B20D8; + +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_801AE584 = D_801AE584 + 1; + if (D_801AE584 >= 0x19) { + if (D_801AE5C8 != 0) { + (*D_801AE5C8)(); + } else { + D_80114F30 = D_80114F30 + D_801AE60C; + D_80114F34 = D_80114F34 + D_801AE60E; + D_80114F38 = D_80114F38 + D_801AE610; + D_80114F24 = D_80114F24 + D_801AE60C; + D_80114F28 = D_80114F28 + D_801AE60E; + D_80114F2C = D_80114F2C + D_801AE610; + func_8012A4BC(); + } + D_801B20D8 = 0; + } +} + + + +extern void (*D_8018BC68[])(void); + +void func_8017BE60(void *a0) { + D_8018BC68[*(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) */ + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017BEBC); + + +extern void (*D_8018BC74[])(void); + +void func_8017BEE4(void *a0) { + D_8018BC74[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017BF20); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017BF58); + +DEFINE_func_8017BF98() /* dedup: shared engine-core @0x8017BF98 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017BFA0); + + +extern void (*D_8018BC80[])(void); + +void func_8017BFC8(void *a0) { + D_8018BC80[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017C004); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017C03C); + +DEFINE_func_8017C07C() /* dedup: shared engine-core @0x8017C07C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017C084); + + +extern void (*D_8018BD40[])(void); + +void func_8017C0C8(void *a0) { + D_8018BD40[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017C104); + +extern void func_8017C154(void); +void func_8017C12C(void) { + func_8017C154(); +} + + +DEFINE_func_8017C14C() /* dedup: shared engine-core @0x8017C14C (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017C154); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017C290); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017C624); + + +extern void (*D_8018BD80[])(void); + +void func_8017C664(void *a0) { + D_8018BD80[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017C6A0); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017C814); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017C8FC); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017CC44); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017CCC4); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017CD10); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017CE10); + + +extern void (*D_8018BDA0[])(void); + +void func_8017CE54(void *a0) { + D_8018BDA0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017CE90); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017CFBC); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017D098); + + +extern void (*D_8018BDB0[])(void); + +void func_8017D0DC(void *a0) { + D_8018BDB0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017D118); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017D194); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017D1E0); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017D318); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017D5F8); + + +extern void (*D_8018BDBC[])(void); + +void func_8017D63C(void *a0) { + D_8018BDBC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017D678); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017D75C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017D804); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017D890); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017D900); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017D9C8); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017DA98); + + +extern void (*D_8018BF40[])(void); + +void func_8017DB00(void *a0) { + D_8018BF40[*(u8 *)((s32)a0 + 0x214)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017DB3C); + +extern s32 func_80171CC4(void *a0, void *a1); +extern void func_80171A1C(u8 *a0); +extern s16 D_80126B36; +void func_8017DB74(u8 *a0) { + s16 *p = &D_80126B36; + if (*p != 0) { + if (func_80171CC4(a0, p - 3) == 0) { + return; + } + } + func_80171A1C(a0); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017DBC4); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017DC28); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017DC4C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017DCC0); + +DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017DD7C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017DDBC); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017DE24); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017DE8C); + +DEFINE_func_8017DF7C() /* dedup: shared engine-core @0x8017DF7C (src/shared) */ + + +extern void (*D_8018BF84[])(void); + +void func_8017DF84(void *a0) { + D_8018BF84[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017DFC0); + +extern void func_80146C3C(void); +void func_8017E184(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_8018BF8C[])(void); + +void func_8017E218(void *a0) { + D_8018BF8C[*(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_8018BF78; + +void func_8017E254(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_8018BF78, 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_8017E2F8(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; + } +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017E35C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017EE98); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017EECC); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017EF08); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017EF68); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017FE8C); + + +extern void (*D_8018BFC0[])(void); + +void func_8017FEC8(void *a0) { + D_8018BFC0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017FF04); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017FF54); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017FFB0); + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80180034); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8018019C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801801E8); + + +extern void (*D_8018BFD4[])(void); + +void func_801804F4(void *a0) { + D_8018BFD4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80180530); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80180570); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801805E0); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8018066C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80180740); + + +extern void (*D_8018BFE8[])(void); + +void func_80180794(void *a0) { + D_8018BFE8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801807D0); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80180884); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801808E0); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80180A50); + +extern void func_80183674(void); + void func_80180AB8(void) { + func_80183674(); + } + + + +extern void (*D_8018C040[])(void); + +void func_80180AD8(void *a0) { + D_8018C040[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80180B14); + + +extern s32 func_800167F0(s32 a0); + +s32 func_80180B58(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_8018C048[])(void); + +void func_80180B7C(void *a0) { + D_8018C048[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80180BB8); + + +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_80180BF8(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_80180C74(void) { + func_800D1EBC(); + } + + + +extern void (*D_8018C054[])(void); + +void func_80180C94(void *a0) { + D_8018C054[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80180CD0); + +s32 func_80180D0C(void) { + return 0; + } + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80180D14); + + +extern void (*D_8018C070[])(void); + +void func_80180D5C(void *a0) { + D_8018C070[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80180D98); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80180DD4); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80180E58); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80180EE0); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80180F14); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80180FC8); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8018103C); + +extern void func_80154150(s32 a0, s32 a1); + extern void func_8014706C(void *arg0); + extern s32 func_80171990(u8 *a0); + void func_80181074(s32 arg0) { + func_80154150(arg0, 0x4); + ((void (*)(s32))func_8014706C)(arg0); + ((void (*)(void *))func_80171990)((void *)arg0); + } + + +extern s32 func_80171990(u8 *a0); + void func_801810B0(void) { + ((s32 (*)(void))func_80171990)(); + } + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801810D0); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80181114); + +extern s32 func_801399F0(s32 a0); +extern void func_80139914(s32 a0); +extern void func_80171928(void *a0); +void func_80181164(u8 *a0) { + if (func_801399F0(*(s32 *)(a0 + 0x198)) != 0) { + func_80139914(*(s32 *)(a0 + 0x198)); + *(s32 *)(a0 + 0x198) = 0; + func_80171928(a0); + } +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801811B4); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801811DC); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80181204); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8018127C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801812BC); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80181388); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801813FC); + +extern s32 func_8017EE98(s32 arg); + extern s32 func_80171990(u8 *a0); + void func_80181440(s32 param_1) { + if (((int (*)(void))func_8017EE98)() != 0) { + ((void (*)(s32))func_80171990)(param_1); + } + } + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80181478); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801814DC); + +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); +extern M2C_UNK D_8018C0A0; + +void func_8018152C(void) { + ((void (*)(void *, s32))func_8016EE40)(&D_8018C0A0, 0x1000000); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80181554); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801815E8); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801816AC); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80181774); + +extern void func_8012A568(void (*a0)(void)); + extern s32 func_80181864(s32 a0); + s32 func_8018183C(void) +{ + ((void (*)(void *))func_8012A568)((void *)func_80181864); + } + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80181864); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80181918); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80181940); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801819F4); + + +extern void (*D_8018C100[])(void); + +void func_80181A78(void *a0) { + D_8018C100[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80181AB4); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80181BA4); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80181C38); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80181CCC); + +void func_80181E98(void) { +} + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80181EA0); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80181F14); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80181F78); + + +extern void (*D_8018C548[])(void); + +void func_80182348(void *a0) { + D_8018C548[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void func_8013C0F8(void *a0); + extern s32 func_8017EF08(s32 a0); + extern s32 D_801A158C; + extern s32 D_801AEB00; + void func_80182384(void) { + ((void (*)(void *))func_8013C0F8)(&D_801A158C); + ((void (*)(s32))func_8017EF08)((s32)&D_801AEB00); + } + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801823BC); + +extern void func_8013C0F8(void *a0); + extern s32 func_8017EF08(s32 a0); + extern s32 D_801A3A0C; + extern s32 D_801AEB58; + void func_8018242C(void) { + ((void (*)(void *))func_8013C0F8)(&D_801A3A0C); + ((void (*)(s32))func_8017EF08)((s32)&D_801AEB58); + } + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80182464); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801824D4); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80182560); + +s16 func_801825D8(void) { + + extern s16 D_801AEAFE; + return D_801AEAFE; +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801825E8); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80182614); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8018270C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8018278C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801827C0); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801827F4); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80182828); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80182888); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801828DC); + +extern void func_8012AD44(s32 *a0, s16 a1); + void func_801828FC(void *arg0) { + ((void (*)(s32, s32))func_8012AD44)((s32)arg0, 0x3); + } + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8018291C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80182950); + +extern void func_801816AC(void); + void func_801829C8(void) { + func_801816AC(); + } + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801829E8); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80182A30); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80182A90); + +extern void func_80181554(void); + void func_80182AD0(void) { + func_80181554(); + } + + +extern void func_80181774(void); + void func_80182AF0(void) { + func_80181774(); + } + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80182B10); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80182B68); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80182BB8); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80182C10); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80182CD8); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80182E38); + + +extern void (*D_8018C66C[])(void); + +void func_80183088(void *a0) { + D_8018C66C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801830C4); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80183130); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801831E4); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8018325C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80183338); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80183398); + + +extern void (*D_8018C734[])(void); + +void func_80183574(void *a0) { + D_8018C734[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801835B0); + + +extern void (*D_8018C7FC[])(void); + +void func_80183638(void *a0) { + D_8018C7FC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80183674); + +extern void (*D_8018C94C[])(void); + +void func_801836E0(void *a0) { + D_8018C94C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8018371C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80183790); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801837DC); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8018381C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80183884); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801838FC); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80183A1C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80183B20); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80183BC4); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80183C9C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80183DAC); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80183E48); + + +extern void (*D_8018C964[])(void); + +void func_80183EFC(void *a0) { + D_8018C964[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80183F38); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801840F8); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801842CC); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80184398); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801844AC); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80184524); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80184578); + + +s32 func_801845B8(s32 arg0) { + return *(u16*)(arg0 + 0x2) == 0x6; + } + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801845CC); + +extern void func_8012AD44(s32 *a0, s16 a1); + void func_8018467C(void *arg0) { + ((void (*)(s32, s32))func_8012AD44)((s32)arg0, 0x8); + } + + +extern void func_8013CAE8(void); + void func_8018469C(void) { + func_8013CAE8(); + } + + + +extern void (*D_8018CC08[])(void); + +void func_801846BC(void *a0) { + D_8018CC08[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801846F8); + +void func_80184808(void *a0) { + *(s32 *)((s32)a0 + 0x48) = 0x1400; + *(s32 *)((s32)a0 + 0x14) = 0; + } + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80184818); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80184870); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801848A4); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80184940); + +extern void func_8017BEBC(void); + void func_801849A8(void) { + func_8017BEBC(); + } + + +extern s32 func_8017BFA0(void); + void func_801849C8(void) { + func_8017BFA0(); + } + + +extern s32 func_8018183C(void); + void func_801849E8(void) { + func_8018183C(); + } + + +extern void func_80181918(void); + void func_80184A08(void) { + func_80181918(); + } + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80184A28); + +void func_80184A50(void *a0) { + *(short *)((char *)a0 + 0x2) = 0x2; + } + + +void func_80184A5C(void *a0) { + *(short *)((char *)a0 + 0x2) = 0x3; + } + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80184A68); + + +extern void func_8002D4C8(s32 arg0, s32 arg1); + void func_80184AA8(void *a0) { + *(s16 *)((s32)a0 + 0x2) = 0x4; + func_8002D4C8(0x921, 0); + } + + +void func_80184AD4(void *a0) { + *(short *)((char *)a0 + 0x2) = 0x5; + *(int *)((char *)a0 + 0x1c) = 0; + } + + + +// @class: struct +// @stuck: none — MATCH expected; param_1 survives jal in $s0, table fp-call with %lo-fold +extern void func_80184B30(u8 *a0); +extern void (*D_8018CC58[])(int); + +void func_80184AE4(int param_1) +{ + ((void (*)(void))func_80184B30)(); + D_8018CC58[*(unsigned short *)(param_1 + 2)](param_1); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80184B30); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80184B80); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80184C24); + +void func_80184C60(void) { +} + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80184C68); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80184CBC); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80184D68); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80184DD8); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80184E68); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80184EB8); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80184F68); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80184FD8); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80185028); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801850E4); + +extern void func_80184A68(void); +void func_8018514C(void) { + func_80184A68(); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8018516C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801851CC); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80185264); + + +extern void (*D_8018CC70[])(void); + +void func_80185318(void *a0) { + D_8018CC70[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80185354); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801853F0); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80185520); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8018562C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80185734); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80185764); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80185814); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801858E8); + + +extern void (*D_8018CCA0[])(void); + +void func_8018593C(void *a0) { + D_8018CCA0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80185978); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801859B4); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80185A5C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80185B04); + + +extern void (*D_8018CD04[])(void); + +void func_80185BA8(void *a0) { + D_8018CD04[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80185BE4); + +void func_80185C40(void *a0) { + *(u16 *)((s32)a0 + 0xA) += 1; + if (*(s16 *)((s32)a0 + 0xA) >= 0x101) { + *(u16 *)((s32)a0 + 0xA) = 0x100; + } + } + + + +extern void (*D_8018CE0C[])(void); + +void func_80185C70(void *a0) { + D_8018CE0C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80185CAC); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80185D24); + +extern s32 func_80187754(s32 *a0); +void func_80185D7C(void) { + + extern s32 D_801B2150; + func_80187754(&D_801B2150); +} + + + +extern void (*D_8018CE14[])(void); + +void func_80185DA4(void *a0) { + D_8018CE14[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80185DE0); + +void func_80185E44(void) { +} + + +extern void (*D_8018CE1C[])(void); + +void func_80185E4C(void *a0) { + D_8018CE1C[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern s32 func_8012AD50(void *a0); + void func_80185E88(u8 *a0) { + *(s16 *)(a0 + 0xFC) = 0; + *(u16 *)(a0 + 0x72) |= 0x1000; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80185EB4); + + +s32 func_80185EDC(void) { + return 122; +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80185EE4); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80185F48); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801860A8); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8018628C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80186348); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801863F4); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80186468); + + +extern void (*D_801AAA64[])(void); + +void func_80186688(void *a0) { + D_801AAA64[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801866C4); + +void func_80186758(void) { + + extern s16 D_801B1EFC; + s16 *p = &D_801B1EFC; + s32 i = 0xF; + do { + *p = 0; + p = (s16 *)((s32)p + 0xe); + i--; + } while (i >= 0); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8018677C); + + +extern s16 D_801B1EF4; + extern s16 D_801B1EF6; + extern s16 D_801B1EF8; + extern s16 D_801B1EFA; + void func_8018681C(s32 arg0, s32 arg1, s32 arg2) { + D_801B1EF4 = *(u16 *)((s32)arg0 + 0x0); + D_801B1EF6 = *(u16 *)((s32)arg0 + 0x2); + D_801B1EF8 = arg1; + D_801B1EFA = arg2; + } + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8018684C); + +extern s16 D_801B1EFA; + +void func_801868C4(u16 a0) { + s16 *p = &D_801B1EFA; + *(u16 *)((char *)p + 0x0) += a0; +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801868E0); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80186938); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80186A0C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80186A48); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80186A94); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80186B70); + +void func_80186E34(void) { + + extern s16 D_801B1DF4; + s16 *p = &D_801B1DF4; + s32 i = 0xF; + do { + *p = 0; + p = (s16 *)((s32)p + 0x10); + i--; + } while (i >= 0); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80186E58); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80186E80); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80186F08); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80186F74); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80186FE4); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8018705C); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801870A8); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801871C4); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80187200); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80187314); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801875F8); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80187720); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80187754); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80187798); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801878A8); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80187998); + +void func_801879A8(s32 *a0, s8 a1, s8 a2, s8 a3) { + *(s8*)((s32)a0 + 0x4) = a1; + *(s8*)((s32)a0 + 0x5) = a2; + *(s8*)((s32)a0 + 0x6) = a3; + } + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801879B8); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80187AB8); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80187B34); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80187FD4); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80188160); + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80188194); + + + + diff --git a/src/ov_SC06_006/ov_SC06_006_jr_8017A4AC.c b/src/ov_SC06_006/ov_SC06_006_jr_8017A4AC.c index 318bb7f54..528a9ea38 100644 --- a/src/ov_SC06_006/ov_SC06_006_jr_8017A4AC.c +++ b/src/ov_SC06_006/ov_SC06_006_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC06_006/nonmatchings/ov_SC06_006_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801F8044; - extern s16 D_801F8046; - extern s16 D_801F8048; - extern s16 D_801F803C; - extern s16 D_801F803E; - extern s16 D_801F8040; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801F8044, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801F8046, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801F8048, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801F803C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801F803E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801F8040, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801F7FCC; -extern u16 D_801F804C; -extern u16 D_801F804E; -extern u16 D_801F8050; -extern s16 D_801F8AF4; - -void func_8017B1D8(void) { - func_8012A418(); - D_801F8AF4 = 0; - D_801F7FCC = 0; - D_801F804C = D_80126B5E; - D_801F804E = D_80126B62; - D_801F8050 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_801856EC[]; - extern s16 D_801F8044; - extern s16 D_801F803C; - 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_801856EC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801856EC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801F8044; - s16 *p78C = &D_801F803C; - *(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_801F8AF4 = 1; - D_801F7FCC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801F7FEC; - extern SV4_8017B368 D_801F7FF4; - extern s16 D_801F8044; - extern s16 D_801F803C; - extern u16 D_801856EC; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801F7FEC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801F7FF4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_801856EC)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_801856EC)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801F8044) = loc0; - (*(SV4_8017B368 *)&D_801F803C) = loc1; - D_801F8AF4 = 1; - D_801F7FCC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC06_006/nonmatchings/ov_SC06_006_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_801856EC[]; - extern s16 D_801F8044; - extern s16 D_801F8046; - extern s16 D_801F8048; - extern s16 D_801F803C; - extern s16 D_801F803E; - extern s16 D_801F8040; - 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_801856EC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801856EC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801F8044; - s16 *p78C = &D_801F803C; - *(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_801F8046; - v798 = D_801F8048; - v78C = *p78C; - v78E = D_801F803E; - v790 = D_801F8040; - __asm__ __volatile__(""); - D_801F8AF4 = 1; - D_801F7FCC = 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_801F7FCC; -extern s16 D_801F8044; -extern s16 D_801F8046; -extern s16 D_801F8048; -extern s16 D_801F803C; -extern s16 D_801F803E; -extern s16 D_801F8040; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801F7FCC = 0; - D_801F8044 = (s16) D_80114F30; - D_801F8046 = (s16) D_80114F34; - D_801F8048 = (s16) D_80114F38; - D_801F803C = (s16) D_80114F24; - D_801F803E = (s16) D_80114F28; - D_801F8040 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801F805C; -extern s16 D_801F805E; -extern s16 D_801F8060; -extern s16 D_801F8064; -extern s16 D_801F8066; -extern s16 D_801F8068; - -void func_8017B824(void) { - D_801F805C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801F805E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801F8060 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801F8064 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801F8066 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801F8068 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801F805C; -extern s16 D_801F805E; -extern s16 D_801F8060; -extern s16 D_801F8064; -extern s16 D_801F8066; -extern s16 D_801F8068; - -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_801F805C; - D_80114F34 = D_801F805E; - D_80114F38 = D_801F8060; - D_80114F24 = D_801F8064; - D_80114F28 = D_801F8066; - D_80114F2C = D_801F8068; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801F8044), src[8..15] -> (*(S8_8017B8E8 *)&D_801F803C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801F8044) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801F803C) = ((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_801F804C; -extern u16 D_801F804E; -extern u16 D_801F8050; - -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_801F7FCC; -extern short D_801F8054; -extern short D_801F8056; -extern short D_801F8058; -extern s16 D_801F8044; -extern s16 D_801F8046; -extern s16 D_801F8048; -extern s16 D_801F803C; -extern s16 D_801F803E; -extern s16 D_801F8040; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801F804C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801F804E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801F8050); - (*(s16 *)&D_801F8054) = buf[0]; - (*(s16 *)&D_801F8056) = buf[1]; - (*(s16 *)&D_801F8058) = buf[2]; - D_801F8044 = D_80114F30 + buf[0]; - D_801F7FCC = 0; - D_801F8046 = D_80114F34 + buf[1]; - D_801F8048 = D_80114F38 + buf[2]; - D_801F803C = D_80114F24 + buf[0]; - D_801F803E = D_80114F28 + buf[1]; - D_801F8040 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801F7FEC; -extern SV4 D_801F7FF4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801F7FF4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801F7FEC = 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_801F7FF4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801F7FF4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801F7FEC) = 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_801F7FF4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801F8014[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801F8014; - 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_801F7FCC; -extern s16 D_801F8AF4; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801F7FCC = D_801F7FCC + 1; - if (D_801F7FCC >= 0x1F) { - D_801F8AF4 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801F7FCC; -extern s16 D_801F8AF4; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801F7FCC = D_801F7FCC + 1; - if (0x18 < D_801F7FCC) { - func_8012A4BC(); - D_801F8AF4 = 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_801F7FCC; -extern void (*D_801F8010)(void); -extern short D_801F8054; -extern short D_801F8056; -extern short D_801F8058; -extern s16 D_801F8AF4; - -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_801F7FCC = D_801F7FCC + 1; - if (D_801F7FCC >= 0x19) { - if (D_801F8010 != 0) { - (*D_801F8010)(); - } else { - D_80114F30 = D_80114F30 + D_801F8054; - D_80114F34 = D_80114F34 + D_801F8056; - D_80114F38 = D_80114F38 + D_801F8058; - D_80114F24 = D_80114F24 + D_801F8054; - D_80114F28 = D_80114F28 + D_801F8056; - D_80114F2C = D_80114F2C + D_801F8058; - func_8012A4BC(); - } - D_801F8AF4 = 0; - } -} - - - -extern void (*D_8018578C[])(void); - -void func_8017BE60(void *a0) { - D_8018578C[*(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) */ diff --git a/src/ov_SC06_006/ov_SC06_006_jr_8017AE2C.c b/src/ov_SC06_006/ov_SC06_006_jr_8017AE2C.c new file mode 100644 index 000000000..8864b7ff8 --- /dev/null +++ b/src/ov_SC06_006/ov_SC06_006_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801842E4; +extern u8 D_80184254; +extern u8 D_80184230; +extern u8 D_8018420C; +extern u8 D_801842C0; +extern u8 D_8018429C; +extern u8 D_80184278; +extern u8 D_801841E8; +extern void func_80145934(void); +extern u8 D_80184374; +extern u8 D_80184350; +extern u8 D_8018432C; +extern u8 D_80184308; +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_8018376C[]; +extern unsigned char D_8018379C[]; +extern unsigned char D_801837EC[]; +extern unsigned char D_8018381C[]; +extern unsigned char D_8018384C[]; +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(void); +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_8018389C[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80183964[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801839EC[]; +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_801839F4; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801F6EC8; +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_801F6ECC; +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_80183A24; +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 void 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_80183ACC[])(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_80183AF0[])(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_80183AE0; +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_80183B04[])(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_80183B10[]; +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_80183B20[])(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_80183B38[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80183B28; +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_80183B4C[])(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_80183B68[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80183B58; +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_80183B7C[])(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_80183B90[])(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_80183BA4; +extern void (*D_80183BCC[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80183BAC; +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_80183C18[])(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_80183C1C[])(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(void *a0); +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_80184080[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80184090[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801F6F00; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801840B8[])(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_80184098; +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_801840A8; +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_801840F8[])(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_80184100[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801840CC; +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_8018410C[])(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_801840DC; +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_801F6F08; +extern s32 D_801F6F14; +extern s32 D_801F6F18; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80184148[])(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_8018411C[]; +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_801F6F10; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80184398[])(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_801841B8[]; +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_8018443C[])(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_80184590[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801843AC; +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_80184598[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801843BC; +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_801843DC; +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_801845A0[])(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(void); +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_801845C8[])(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_801845D4[])(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_80184448[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80184678; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018375C[]; +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_8018468C[]; +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_801846C8[]; +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_80184710; +extern u16 D_80184712; +extern u16 D_80184714; +extern s32 D_80184718; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80184720; +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_8018442C; +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_801847A4[]; +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_80184854[])(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_80184884[]; +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_801848E8; +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_801F6F20[]; +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_8018490C[])(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_801F6F78[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80184954[])(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_80184944; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801F6698[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_8018495C[])(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_801849B0[])(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_80184978; +extern s16 D_801849AC; +extern s16 D_801849AA; +extern s16 D_801849A8; +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_801849BC[])(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_801F6FD8; +extern u8 D_801F6FD9; +extern u8 D_801F6FDA; +extern u8 D_801F6FDB; +extern u8 D_801F6FDC; +extern u8 D_801F6FDD; +extern u8 D_801F6FDE; +extern u8 D_801F6FDF; +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_801849CC[])(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_801F7018; +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_80184A10[])(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_80184A8C[]; +extern s32 D_80184AAC[]; +extern u8 D_80184B28[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80184B48[]; +extern u8 D_80184B68[]; +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_80184C04[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80184C80[])(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_801F66A8; +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_80184C8C[])(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_80184C94[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80184D5C[])(void); +extern void func_80166618(void *a0); +extern void (*D_80184D6C[])(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_80184D7C[])(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_80184D88[])(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_80184CE8[]; +extern u8 D_80184CFC[]; +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_80184DA0[])(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_80184DA8[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80184DB0[])(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_80184DB8[])(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_80184DC0[])(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_80184DC8[])(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_80184DD0[])(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_80184E84[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80184E8C[])(void); +extern void func_80169F00(void *a0); +extern char D_80184E3C[]; +extern char D_80184DFC[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80184EC4[])(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_80184ED0[])(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_80184F18[])(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_80184F94[])(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_801F7338; +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_80184F88[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80184FCC[]; +extern unsigned short D_80184FD4[]; +extern unsigned short D_80184FDC[]; +extern unsigned char D_801F7340[]; +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_801F7338; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80184FE4[])(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_801F7474; +extern M2C_UNK D_801F7478; +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_801F7400; +extern void (*D_80185014[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801F747C[]; +extern u8 D_801F7484[]; +extern u8 D_801F7434[]; +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_8018501C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80185038[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80185040[])(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_801850A8[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018504C; +extern u8 D_80185058; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801850DC[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801850E4[])(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_80185138[])(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_8018516C[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018515C[]; +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_80185188; +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); +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_80185200[])(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_80185208[])(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_80185210[])(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_80185218[])(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_80185220[])(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_80185228[])(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_80185234[])(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_80185240[])(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_8018524C[])(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_8018525C[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018526C[])(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_80185274[])(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_8018527C[])(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_80185284[])(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_8018528C[])(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_80185294[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018529C[])(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_801852A4[])(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_801852AC[])(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_801852B4[])(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_801852BC[])(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_801852C4[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801852CC[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801852D4[])(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_801852DC[])(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_801852E4[])(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_801852EC[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801852F4[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801852FC[])(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_80185304[])(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_8018530C[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80185314[])(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_8018531C[])(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_80185360[])(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_80185324; +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_80185390[])(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_801853CC[])(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(s32); +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_80185424[])(); +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_80185434[])(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_8018543C[])(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_801855A4[])(); +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_801855B0[])(); +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_801F68F0; +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 int func_801789AC(void); +extern s16 D_801F8AF4; +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_801F7BB8; +extern short D_801F8B64; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801F7FE4; +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_801F800C; +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_801F7FC8; +extern s32 func_8017A3B0(void); +extern short D_801F8004; +extern short D_801F8000; +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_801F8AC0; +extern s16 D_801F8AC2; +extern s16 D_801F8ACC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801F8AC0; + + 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_801F8ACC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801F8AC0+0xC == &D_801F8ACC; 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_801F8AC0 + 0xC)) < 0x101) { + D_801F8AC0 = 0; + D_801F8AC2 = 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_801F8ACC); + 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_801F8AC0 + 0xC)) < 0x101) { + D_801F8AC0 = 0; + D_801F8AC2 = 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_801F8044; + extern s16 D_801F8046; + extern s16 D_801F8048; + extern s16 D_801F803C; + extern s16 D_801F803E; + extern s16 D_801F8040; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801F8044, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801F8046, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801F8048, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801F803C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801F803E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801F8040, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801F7FCC; +extern u16 D_801F804C; +extern u16 D_801F804E; +extern u16 D_801F8050; +extern s16 D_801F8AF4; + +void func_8017B1D8(void) { + func_8012A418(); + D_801F8AF4 = 0; + D_801F7FCC = 0; + D_801F804C = D_80126B5E; + D_801F804E = D_80126B62; + D_801F8050 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_801856EC[]; + extern s16 D_801F8044; + extern s16 D_801F803C; + 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_801856EC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801856EC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801F8044; + s16 *p78C = &D_801F803C; + *(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_801F8AF4 = 1; + D_801F7FCC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801F7FEC; + extern SV4_8017B368 D_801F7FF4; + extern s16 D_801F8044; + extern s16 D_801F803C; + extern u16 D_801856EC; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801F7FEC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801F7FF4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_801856EC)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_801856EC)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801F8044) = loc0; + (*(SV4_8017B368 *)&D_801F803C) = loc1; + D_801F8AF4 = 1; + D_801F7FCC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC06_006/nonmatchings/ov_SC06_006_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_801856EC[]; + extern s16 D_801F8044; + extern s16 D_801F8046; + extern s16 D_801F8048; + extern s16 D_801F803C; + extern s16 D_801F803E; + extern s16 D_801F8040; + 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_801856EC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801856EC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801F8044; + s16 *p78C = &D_801F803C; + *(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_801F8046; + v798 = D_801F8048; + v78C = *p78C; + v78E = D_801F803E; + v790 = D_801F8040; + __asm__ __volatile__(""); + D_801F8AF4 = 1; + D_801F7FCC = 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_801F7FCC; +extern s16 D_801F8044; +extern s16 D_801F8046; +extern s16 D_801F8048; +extern s16 D_801F803C; +extern s16 D_801F803E; +extern s16 D_801F8040; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801F7FCC = 0; + D_801F8044 = (s16) D_80114F30; + D_801F8046 = (s16) D_80114F34; + D_801F8048 = (s16) D_80114F38; + D_801F803C = (s16) D_80114F24; + D_801F803E = (s16) D_80114F28; + D_801F8040 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801F805C; +extern s16 D_801F805E; +extern s16 D_801F8060; +extern s16 D_801F8064; +extern s16 D_801F8066; +extern s16 D_801F8068; + +void func_8017B824(void) { + D_801F805C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801F805E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801F8060 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801F8064 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801F8066 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801F8068 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801F805C; +extern s16 D_801F805E; +extern s16 D_801F8060; +extern s16 D_801F8064; +extern s16 D_801F8066; +extern s16 D_801F8068; + +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_801F805C; + D_80114F34 = D_801F805E; + D_80114F38 = D_801F8060; + D_80114F24 = D_801F8064; + D_80114F28 = D_801F8066; + D_80114F2C = D_801F8068; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801F8044), src[8..15] -> (*(S8_8017B8E8 *)&D_801F803C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801F8044) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801F803C) = ((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_801F804C; +extern u16 D_801F804E; +extern u16 D_801F8050; + +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_801F7FCC; +extern short D_801F8054; +extern short D_801F8056; +extern short D_801F8058; +extern s16 D_801F8044; +extern s16 D_801F8046; +extern s16 D_801F8048; +extern s16 D_801F803C; +extern s16 D_801F803E; +extern s16 D_801F8040; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801F804C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801F804E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801F8050); + (*(s16 *)&D_801F8054) = buf[0]; + (*(s16 *)&D_801F8056) = buf[1]; + (*(s16 *)&D_801F8058) = buf[2]; + D_801F8044 = D_80114F30 + buf[0]; + D_801F7FCC = 0; + D_801F8046 = D_80114F34 + buf[1]; + D_801F8048 = D_80114F38 + buf[2]; + D_801F803C = D_80114F24 + buf[0]; + D_801F803E = D_80114F28 + buf[1]; + D_801F8040 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801F7FEC; +extern SV4 D_801F7FF4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801F7FF4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801F7FEC = 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_801F7FF4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801F7FF4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801F7FEC) = 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_801F7FF4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801F8014[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801F8014; + 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_801F7FCC; +extern s16 D_801F8AF4; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801F7FCC = D_801F7FCC + 1; + if (D_801F7FCC >= 0x1F) { + D_801F8AF4 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801F7FCC; +extern s16 D_801F8AF4; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801F7FCC = D_801F7FCC + 1; + if (0x18 < D_801F7FCC) { + func_8012A4BC(); + D_801F8AF4 = 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_801F7FCC; +extern void (*D_801F8010)(void); +extern short D_801F8054; +extern short D_801F8056; +extern short D_801F8058; +extern s16 D_801F8AF4; + +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_801F7FCC = D_801F7FCC + 1; + if (D_801F7FCC >= 0x19) { + if (D_801F8010 != 0) { + (*D_801F8010)(); + } else { + D_80114F30 = D_80114F30 + D_801F8054; + D_80114F34 = D_80114F34 + D_801F8056; + D_80114F38 = D_80114F38 + D_801F8058; + D_80114F24 = D_80114F24 + D_801F8054; + D_80114F28 = D_80114F28 + D_801F8056; + D_80114F2C = D_80114F2C + D_801F8058; + func_8012A4BC(); + } + D_801F8AF4 = 0; + } +} + + + +extern void (*D_8018578C[])(void); + +void func_8017BE60(void *a0) { + D_8018578C[*(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) */ + diff --git a/src/ov_SC06_008/ov_SC06_008_jr_8017A4AC.c b/src/ov_SC06_008/ov_SC06_008_jr_8017A4AC.c index d39318367..a8f66b077 100644 --- a/src/ov_SC06_008/ov_SC06_008_jr_8017A4AC.c +++ b/src/ov_SC06_008/ov_SC06_008_jr_8017A4AC.c @@ -2946,625 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801A9FC4; - extern s16 D_801A9FC6; - extern s16 D_801A9FC8; - extern s16 D_801A9FBC; - extern s16 D_801A9FBE; - extern s16 D_801A9FC0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A9FC4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A9FC6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A9FC8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A9FBC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A9FBE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A9FC0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801A9F4C; -extern u16 D_801A9FCC; -extern u16 D_801A9FCE; -extern u16 D_801A9FD0; -extern s16 D_801AA7C0; - -void func_8017B1D8(void) { - func_8012A418(); - D_801AA7C0 = 0; - D_801A9F4C = 0; - D_801A9FCC = D_80126B5E; - D_801A9FCE = D_80126B62; - D_801A9FD0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80189154[]; - extern s16 D_801A9FC4; - extern s16 D_801A9FBC; - 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_80189154[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80189154[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A9FC4; - s16 *p78C = &D_801A9FBC; - *(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_801AA7C0 = 1; - D_801A9F4C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A9F6C; - extern SV4_8017B368 D_801A9F74; - extern s16 D_801A9FC4; - extern s16 D_801A9FBC; - extern u16 D_80189154; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801A9F6C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801A9F74; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80189154)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80189154)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801A9FC4) = loc0; - (*(SV4_8017B368 *)&D_801A9FBC) = loc1; - D_801AA7C0 = 1; - D_801A9F4C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80189154[]; - extern s16 D_801A9FC4; - extern s16 D_801A9FC6; - extern s16 D_801A9FC8; - extern s16 D_801A9FBC; - extern s16 D_801A9FBE; - extern s16 D_801A9FC0; - 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_80189154[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80189154[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A9FC4; - s16 *p78C = &D_801A9FBC; - *(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_801A9FC6; - v798 = D_801A9FC8; - v78C = *p78C; - v78E = D_801A9FBE; - v790 = D_801A9FC0; - __asm__ __volatile__(""); - D_801AA7C0 = 1; - D_801A9F4C = 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_801A9F4C; -extern s16 D_801A9FC4; -extern s16 D_801A9FC6; -extern s16 D_801A9FC8; -extern s16 D_801A9FBC; -extern s16 D_801A9FBE; -extern s16 D_801A9FC0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801A9F4C = 0; - D_801A9FC4 = (s16) D_80114F30; - D_801A9FC6 = (s16) D_80114F34; - D_801A9FC8 = (s16) D_80114F38; - D_801A9FBC = (s16) D_80114F24; - D_801A9FBE = (s16) D_80114F28; - D_801A9FC0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801A9FDC; -extern s16 D_801A9FDE; -extern s16 D_801A9FE0; -extern s16 D_801A9FE4; -extern s16 D_801A9FE6; -extern s16 D_801A9FE8; - -void func_8017B824(void) { - D_801A9FDC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801A9FDE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801A9FE0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801A9FE4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801A9FE6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801A9FE8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801A9FDC; -extern s16 D_801A9FDE; -extern s16 D_801A9FE0; -extern s16 D_801A9FE4; -extern s16 D_801A9FE6; -extern s16 D_801A9FE8; - -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_801A9FDC; - D_80114F34 = D_801A9FDE; - D_80114F38 = D_801A9FE0; - D_80114F24 = D_801A9FE4; - D_80114F28 = D_801A9FE6; - D_80114F2C = D_801A9FE8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801A9FC4), src[8..15] -> (*(S8_8017B8E8 *)&D_801A9FBC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801A9FC4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801A9FBC) = ((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_801A9FCC; -extern u16 D_801A9FCE; -extern u16 D_801A9FD0; - -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_801A9F4C; -extern short D_801A9FD4; -extern short D_801A9FD6; -extern short D_801A9FD8; -extern s16 D_801A9FC4; -extern s16 D_801A9FC6; -extern s16 D_801A9FC8; -extern s16 D_801A9FBC; -extern s16 D_801A9FBE; -extern s16 D_801A9FC0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A9FCC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A9FCE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A9FD0); - (*(s16 *)&D_801A9FD4) = buf[0]; - (*(s16 *)&D_801A9FD6) = buf[1]; - (*(s16 *)&D_801A9FD8) = buf[2]; - D_801A9FC4 = D_80114F30 + buf[0]; - D_801A9F4C = 0; - D_801A9FC6 = D_80114F34 + buf[1]; - D_801A9FC8 = D_80114F38 + buf[2]; - D_801A9FBC = D_80114F24 + buf[0]; - D_801A9FBE = D_80114F28 + buf[1]; - D_801A9FC0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801A9F6C; -extern SV4 D_801A9F74; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A9F74) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801A9F6C = 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_801A9F74 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A9F74)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801A9F6C) = 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_801A9F74) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801A9F94[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801A9F94; - 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_801A9F4C; -extern s16 D_801AA7C0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801A9F4C = D_801A9F4C + 1; - if (D_801A9F4C >= 0x1F) { - D_801AA7C0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801A9F4C; -extern s16 D_801AA7C0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801A9F4C = D_801A9F4C + 1; - if (0x18 < D_801A9F4C) { - func_8012A4BC(); - D_801AA7C0 = 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_801A9F4C; -extern void (*D_801A9F90)(void); -extern short D_801A9FD4; -extern short D_801A9FD6; -extern short D_801A9FD8; -extern s16 D_801AA7C0; - -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_801A9F4C = D_801A9F4C + 1; - if (D_801A9F4C >= 0x19) { - if (D_801A9F90 != 0) { - (*D_801A9F90)(); - } else { - D_80114F30 = D_80114F30 + D_801A9FD4; - D_80114F34 = D_80114F34 + D_801A9FD6; - D_80114F38 = D_80114F38 + D_801A9FD8; - D_80114F24 = D_80114F24 + D_801A9FD4; - D_80114F28 = D_80114F28 + D_801A9FD6; - D_80114F2C = D_80114F2C + D_801A9FD8; - func_8012A4BC(); - } - D_801AA7C0 = 0; - } -} - - - -extern void (*D_801891F4[])(void); - -void func_8017BE60(void *a0) { - D_801891F4[*(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 (*D_80189218[])(void); - -void func_8017BEBC(void *a0) { - D_80189218[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_8017A4AC", func_8017BEF8); - -DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ - - -extern void (*D_80189220[])(void); - -void func_8017C150(void *a0) { - D_80189220[*(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_8018920C; - -void func_8017C18C(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_8018920C, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ diff --git a/src/ov_SC06_008/ov_SC06_008_jr_8017AE2C.c b/src/ov_SC06_008/ov_SC06_008_jr_8017AE2C.c new file mode 100644 index 000000000..a4ecdf4cc --- /dev/null +++ b/src/ov_SC06_008/ov_SC06_008_jr_8017AE2C.c @@ -0,0 +1,3502 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80187D4C; +extern u8 D_80187CBC; +extern u8 D_80187C98; +extern u8 D_80187C74; +extern u8 D_80187D28; +extern u8 D_80187D04; +extern u8 D_80187CE0; +extern u8 D_80187C50; +extern void func_80145934(void); +extern u8 D_80187DDC; +extern u8 D_80187DB8; +extern u8 D_80187D94; +extern u8 D_80187D70; +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_801871D4[]; +extern unsigned char D_80187204[]; +extern unsigned char D_80187254[]; +extern unsigned char D_80187284[]; +extern unsigned char D_801872B4[]; +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(void); +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_80187304[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_801873CC[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80187454[]; +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_8018745C; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801A8E48; +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_801A8E4C; +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_8018748C; +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 void 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_80187534[])(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_80187558[])(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_80187548; +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_8018756C[])(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_80187578[]; +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_80187588[])(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_801875A0[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80187590; +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_801875B4[])(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_801875D0[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801875C0; +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_801875E4[])(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_801875F8[])(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_8018760C; +extern void (*D_80187634[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80187614; +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_80187680[])(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_80187684[])(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(void *a0); +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_80187AE8[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80187AF8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801A8E80; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80187B20[])(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_80187B00; +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_80187B10; +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_80187B60[])(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_80187B68[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80187B34; +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_80187B74[])(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_80187B44; +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_801A8E88; +extern s32 D_801A8E94; +extern s32 D_801A8E98; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80187BB0[])(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_80187B84[]; +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_801A8E90; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80187E00[])(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_80187C20[]; +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_80187EA4[])(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_80187FF8[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80187E14; +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_80188000[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80187E24; +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_80187E44; +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_80188008[])(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(void); +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_80188030[])(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_8018803C[])(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_80187EB0[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801880E0; +extern void func_8015D380(s32 a0); +extern unsigned char D_801871C4[]; +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_801880F4[]; +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_80188130[]; +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_80188178; +extern u16 D_8018817A; +extern u16 D_8018817C; +extern s32 D_80188180; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80188188; +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_80187E94; +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_8018820C[]; +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_801882BC[])(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_801882EC[]; +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_80188350; +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_801A8EA0[]; +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_80188374[])(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_801A8EF8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_801883BC[])(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_801883AC; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801A8770[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_801883C4[])(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_80188418[])(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_801883E0; +extern s16 D_80188414; +extern s16 D_80188412; +extern s16 D_80188410; +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_80188424[])(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_801A8F58; +extern u8 D_801A8F59; +extern u8 D_801A8F5A; +extern u8 D_801A8F5B; +extern u8 D_801A8F5C; +extern u8 D_801A8F5D; +extern u8 D_801A8F5E; +extern u8 D_801A8F5F; +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_80188434[])(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_801A8F98; +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_80188478[])(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_801884F4[]; +extern s32 D_80188514[]; +extern u8 D_80188590[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801885B0[]; +extern u8 D_801885D0[]; +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_8018866C[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801886E8[])(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_801A8780; +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_801886F4[])(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_801886FC[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801887C4[])(void); +extern void func_80166618(void *a0); +extern void (*D_801887D4[])(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_801887E4[])(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_801887F0[])(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_80188750[]; +extern u8 D_80188764[]; +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_80188808[])(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_80188810[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80188818[])(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_80188820[])(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_80188828[])(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_80188830[])(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_80188838[])(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_801888EC[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801888F4[])(void); +extern void func_80169F00(void *a0); +extern char D_801888A4[]; +extern char D_80188864[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018892C[])(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_80188938[])(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_80188980[])(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_801889FC[])(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_801A92B8; +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_801889F0[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80188A34[]; +extern unsigned short D_80188A3C[]; +extern unsigned short D_80188A44[]; +extern unsigned char D_801A92C0[]; +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_801A92B8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80188A4C[])(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_801A93F4; +extern M2C_UNK D_801A93F8; +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_801A9380; +extern void (*D_80188A7C[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801A93FC[]; +extern u8 D_801A9404[]; +extern u8 D_801A93B4[]; +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_80188A84[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80188AA0[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80188AA8[])(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_80188B10[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80188AB4; +extern u8 D_80188AC0; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80188B44[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80188B4C[])(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_80188BA0[])(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_80188BD4[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80188BC4[]; +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_80188BF0; +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); +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_80188C68[])(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_80188C70[])(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_80188C78[])(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_80188C80[])(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_80188C88[])(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_80188C90[])(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_80188C9C[])(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_80188CA8[])(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_80188CB4[])(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_80188CC4[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80188CD4[])(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_80188CDC[])(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_80188CE4[])(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_80188CEC[])(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_80188CF4[])(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_80188CFC[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80188D04[])(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_80188D0C[])(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_80188D14[])(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_80188D1C[])(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_80188D24[])(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_80188D2C[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80188D34[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80188D3C[])(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_80188D44[])(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_80188D4C[])(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_80188D54[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80188D5C[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80188D64[])(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_80188D6C[])(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_80188D74[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80188D7C[])(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_80188D84[])(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_80188DC8[])(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_80188D8C; +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_80188DF8[])(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_80188E34[])(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(s32); +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_80188E8C[])(); +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_80188E9C[])(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_80188EA4[])(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_8018900C[])(); +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_80189018[])(); +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_801A89C8; +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 int func_801789AC(void); +extern s16 D_801AA7C0; +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_801A9B38; +extern short D_801AA834; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801A9F64; +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_801A9F8C; +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_801A9F48; +extern s32 func_8017A3B0(void); +extern short D_801A9F84; +extern short D_801A9F80; +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_801AA790; +extern s16 D_801AA792; +extern s16 D_801AA79C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801AA790; + + 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_801AA79C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801AA790+0xC == &D_801AA79C; 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_801AA790 + 0xC)) < 0x101) { + D_801AA790 = 0; + D_801AA792 = 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_801AA79C); + 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_801AA790 + 0xC)) < 0x101) { + D_801AA790 = 0; + D_801AA792 = 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_801A9FC4; + extern s16 D_801A9FC6; + extern s16 D_801A9FC8; + extern s16 D_801A9FBC; + extern s16 D_801A9FBE; + extern s16 D_801A9FC0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A9FC4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A9FC6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A9FC8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A9FBC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A9FBE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A9FC0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801A9F4C; +extern u16 D_801A9FCC; +extern u16 D_801A9FCE; +extern u16 D_801A9FD0; +extern s16 D_801AA7C0; + +void func_8017B1D8(void) { + func_8012A418(); + D_801AA7C0 = 0; + D_801A9F4C = 0; + D_801A9FCC = D_80126B5E; + D_801A9FCE = D_80126B62; + D_801A9FD0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80189154[]; + extern s16 D_801A9FC4; + extern s16 D_801A9FBC; + 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_80189154[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80189154[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A9FC4; + s16 *p78C = &D_801A9FBC; + *(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_801AA7C0 = 1; + D_801A9F4C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A9F6C; + extern SV4_8017B368 D_801A9F74; + extern s16 D_801A9FC4; + extern s16 D_801A9FBC; + extern u16 D_80189154; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801A9F6C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801A9F74; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80189154)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80189154)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801A9FC4) = loc0; + (*(SV4_8017B368 *)&D_801A9FBC) = loc1; + D_801AA7C0 = 1; + D_801A9F4C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80189154[]; + extern s16 D_801A9FC4; + extern s16 D_801A9FC6; + extern s16 D_801A9FC8; + extern s16 D_801A9FBC; + extern s16 D_801A9FBE; + extern s16 D_801A9FC0; + 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_80189154[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80189154[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A9FC4; + s16 *p78C = &D_801A9FBC; + *(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_801A9FC6; + v798 = D_801A9FC8; + v78C = *p78C; + v78E = D_801A9FBE; + v790 = D_801A9FC0; + __asm__ __volatile__(""); + D_801AA7C0 = 1; + D_801A9F4C = 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_801A9F4C; +extern s16 D_801A9FC4; +extern s16 D_801A9FC6; +extern s16 D_801A9FC8; +extern s16 D_801A9FBC; +extern s16 D_801A9FBE; +extern s16 D_801A9FC0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801A9F4C = 0; + D_801A9FC4 = (s16) D_80114F30; + D_801A9FC6 = (s16) D_80114F34; + D_801A9FC8 = (s16) D_80114F38; + D_801A9FBC = (s16) D_80114F24; + D_801A9FBE = (s16) D_80114F28; + D_801A9FC0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801A9FDC; +extern s16 D_801A9FDE; +extern s16 D_801A9FE0; +extern s16 D_801A9FE4; +extern s16 D_801A9FE6; +extern s16 D_801A9FE8; + +void func_8017B824(void) { + D_801A9FDC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801A9FDE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801A9FE0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801A9FE4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801A9FE6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801A9FE8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801A9FDC; +extern s16 D_801A9FDE; +extern s16 D_801A9FE0; +extern s16 D_801A9FE4; +extern s16 D_801A9FE6; +extern s16 D_801A9FE8; + +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_801A9FDC; + D_80114F34 = D_801A9FDE; + D_80114F38 = D_801A9FE0; + D_80114F24 = D_801A9FE4; + D_80114F28 = D_801A9FE6; + D_80114F2C = D_801A9FE8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801A9FC4), src[8..15] -> (*(S8_8017B8E8 *)&D_801A9FBC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801A9FC4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801A9FBC) = ((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_801A9FCC; +extern u16 D_801A9FCE; +extern u16 D_801A9FD0; + +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_801A9F4C; +extern short D_801A9FD4; +extern short D_801A9FD6; +extern short D_801A9FD8; +extern s16 D_801A9FC4; +extern s16 D_801A9FC6; +extern s16 D_801A9FC8; +extern s16 D_801A9FBC; +extern s16 D_801A9FBE; +extern s16 D_801A9FC0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A9FCC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A9FCE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A9FD0); + (*(s16 *)&D_801A9FD4) = buf[0]; + (*(s16 *)&D_801A9FD6) = buf[1]; + (*(s16 *)&D_801A9FD8) = buf[2]; + D_801A9FC4 = D_80114F30 + buf[0]; + D_801A9F4C = 0; + D_801A9FC6 = D_80114F34 + buf[1]; + D_801A9FC8 = D_80114F38 + buf[2]; + D_801A9FBC = D_80114F24 + buf[0]; + D_801A9FBE = D_80114F28 + buf[1]; + D_801A9FC0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801A9F6C; +extern SV4 D_801A9F74; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A9F74) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801A9F6C = 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_801A9F74 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A9F74)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801A9F6C) = 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_801A9F74) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801A9F94[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801A9F94; + 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_801A9F4C; +extern s16 D_801AA7C0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801A9F4C = D_801A9F4C + 1; + if (D_801A9F4C >= 0x1F) { + D_801AA7C0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801A9F4C; +extern s16 D_801AA7C0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801A9F4C = D_801A9F4C + 1; + if (0x18 < D_801A9F4C) { + func_8012A4BC(); + D_801AA7C0 = 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_801A9F4C; +extern void (*D_801A9F90)(void); +extern short D_801A9FD4; +extern short D_801A9FD6; +extern short D_801A9FD8; +extern s16 D_801AA7C0; + +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_801A9F4C = D_801A9F4C + 1; + if (D_801A9F4C >= 0x19) { + if (D_801A9F90 != 0) { + (*D_801A9F90)(); + } else { + D_80114F30 = D_80114F30 + D_801A9FD4; + D_80114F34 = D_80114F34 + D_801A9FD6; + D_80114F38 = D_80114F38 + D_801A9FD8; + D_80114F24 = D_80114F24 + D_801A9FD4; + D_80114F28 = D_80114F28 + D_801A9FD6; + D_80114F2C = D_80114F2C + D_801A9FD8; + func_8012A4BC(); + } + D_801AA7C0 = 0; + } +} + + + +extern void (*D_801891F4[])(void); + +void func_8017BE60(void *a0) { + D_801891F4[*(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 (*D_80189218[])(void); + +void func_8017BEBC(void *a0) { + D_80189218[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_8017AE2C", func_8017BEF8); + +DEFINE_func_8017C0BC() /* dedup: shared engine-core @0x8017C0BC (src/shared) */ + + +extern void (*D_80189220[])(void); + +void func_8017C150(void *a0) { + D_80189220[*(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_8018920C; + +void func_8017C18C(s32 a0) { + s32 r; + s32 buf[12]; + + (void)&buf; + r = func_800D222C(a0, &D_8018920C, 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_8017C230() /* dedup: shared engine-core @0x8017C230 (src/shared) */ + diff --git a/src/ov_SC06_011/ov_SC06_011_jr_8017A4AC.c b/src/ov_SC06_011/ov_SC06_011_jr_8017A4AC.c index a9e0364b2..59b605145 100644 --- a/src/ov_SC06_011/ov_SC06_011_jr_8017A4AC.c +++ b/src/ov_SC06_011/ov_SC06_011_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC06_011/nonmatchings/ov_SC06_011_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801ABBAC; - extern s16 D_801ABBAE; - extern s16 D_801ABBB0; - extern s16 D_801ABBA4; - extern s16 D_801ABBA6; - extern s16 D_801ABBA8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801ABBAC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801ABBAE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801ABBB0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801ABBA4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801ABBA6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801ABBA8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801ABB34; -extern u16 D_801ABBB4; -extern u16 D_801ABBB6; -extern u16 D_801ABBB8; -extern s16 D_801ABCE0; - -void func_8017B1D8(void) { - func_8012A418(); - D_801ABCE0 = 0; - D_801ABB34 = 0; - D_801ABBB4 = D_80126B5E; - D_801ABBB6 = D_80126B62; - D_801ABBB8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80183D90[]; - extern s16 D_801ABBAC; - extern s16 D_801ABBA4; - 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_80183D90[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80183D90[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801ABBAC; - s16 *p78C = &D_801ABBA4; - *(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_801ABCE0 = 1; - D_801ABB34 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801ABB54; - extern SV4_8017B368 D_801ABB5C; - extern s16 D_801ABBAC; - extern s16 D_801ABBA4; - extern u16 D_80183D90; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801ABB54; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801ABB5C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80183D90)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80183D90)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801ABBAC) = loc0; - (*(SV4_8017B368 *)&D_801ABBA4) = loc1; - D_801ABCE0 = 1; - D_801ABB34 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC06_011/nonmatchings/ov_SC06_011_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80183D90[]; - extern s16 D_801ABBAC; - extern s16 D_801ABBAE; - extern s16 D_801ABBB0; - extern s16 D_801ABBA4; - extern s16 D_801ABBA6; - extern s16 D_801ABBA8; - 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_80183D90[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80183D90[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801ABBAC; - s16 *p78C = &D_801ABBA4; - *(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_801ABBAE; - v798 = D_801ABBB0; - v78C = *p78C; - v78E = D_801ABBA6; - v790 = D_801ABBA8; - __asm__ __volatile__(""); - D_801ABCE0 = 1; - D_801ABB34 = 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_801ABB34; -extern s16 D_801ABBAC; -extern s16 D_801ABBAE; -extern s16 D_801ABBB0; -extern s16 D_801ABBA4; -extern s16 D_801ABBA6; -extern s16 D_801ABBA8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801ABB34 = 0; - D_801ABBAC = (s16) D_80114F30; - D_801ABBAE = (s16) D_80114F34; - D_801ABBB0 = (s16) D_80114F38; - D_801ABBA4 = (s16) D_80114F24; - D_801ABBA6 = (s16) D_80114F28; - D_801ABBA8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801ABBC4; -extern s16 D_801ABBC6; -extern s16 D_801ABBC8; -extern s16 D_801ABBCC; -extern s16 D_801ABBCE; -extern s16 D_801ABBD0; - -void func_8017B824(void) { - D_801ABBC4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801ABBC6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801ABBC8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801ABBCC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801ABBCE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801ABBD0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801ABBC4; -extern s16 D_801ABBC6; -extern s16 D_801ABBC8; -extern s16 D_801ABBCC; -extern s16 D_801ABBCE; -extern s16 D_801ABBD0; - -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_801ABBC4; - D_80114F34 = D_801ABBC6; - D_80114F38 = D_801ABBC8; - D_80114F24 = D_801ABBCC; - D_80114F28 = D_801ABBCE; - D_80114F2C = D_801ABBD0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801ABBAC), src[8..15] -> (*(S8_8017B8E8 *)&D_801ABBA4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801ABBAC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801ABBA4) = ((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_801ABBB4; -extern u16 D_801ABBB6; -extern u16 D_801ABBB8; - -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_801ABB34; -extern short D_801ABBBC; -extern short D_801ABBBE; -extern short D_801ABBC0; -extern s16 D_801ABBAC; -extern s16 D_801ABBAE; -extern s16 D_801ABBB0; -extern s16 D_801ABBA4; -extern s16 D_801ABBA6; -extern s16 D_801ABBA8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801ABBB4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801ABBB6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801ABBB8); - (*(s16 *)&D_801ABBBC) = buf[0]; - (*(s16 *)&D_801ABBBE) = buf[1]; - (*(s16 *)&D_801ABBC0) = buf[2]; - D_801ABBAC = D_80114F30 + buf[0]; - D_801ABB34 = 0; - D_801ABBAE = D_80114F34 + buf[1]; - D_801ABBB0 = D_80114F38 + buf[2]; - D_801ABBA4 = D_80114F24 + buf[0]; - D_801ABBA6 = D_80114F28 + buf[1]; - D_801ABBA8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801ABB54; -extern SV4 D_801ABB5C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801ABB5C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801ABB54 = 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_801ABB5C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801ABB5C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801ABB54) = 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_801ABB5C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801ABB7C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801ABB7C; - 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_801ABB34; -extern s16 D_801ABCE0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801ABB34 = D_801ABB34 + 1; - if (D_801ABB34 >= 0x1F) { - D_801ABCE0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801ABB34; -extern s16 D_801ABCE0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801ABB34 = D_801ABB34 + 1; - if (0x18 < D_801ABB34) { - func_8012A4BC(); - D_801ABCE0 = 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_801ABB34; -extern void (*D_801ABB78)(void); -extern short D_801ABBBC; -extern short D_801ABBBE; -extern short D_801ABBC0; -extern s16 D_801ABCE0; - -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_801ABB34 = D_801ABB34 + 1; - if (D_801ABB34 >= 0x19) { - if (D_801ABB78 != 0) { - (*D_801ABB78)(); - } else { - D_80114F30 = D_80114F30 + D_801ABBBC; - D_80114F34 = D_80114F34 + D_801ABBBE; - D_80114F38 = D_80114F38 + D_801ABBC0; - D_80114F24 = D_80114F24 + D_801ABBBC; - D_80114F28 = D_80114F28 + D_801ABBBE; - D_80114F2C = D_80114F2C + D_801ABBC0; - func_8012A4BC(); - } - D_801ABCE0 = 0; - } -} - - - -extern void (*D_80183E30[])(void); - -void func_8017BE60(void *a0) { - D_80183E30[*(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) */ diff --git a/src/ov_SC06_011/ov_SC06_011_jr_8017AE2C.c b/src/ov_SC06_011/ov_SC06_011_jr_8017AE2C.c new file mode 100644 index 000000000..0754609e7 --- /dev/null +++ b/src/ov_SC06_011/ov_SC06_011_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80182988; +extern u8 D_801828F8; +extern u8 D_801828D4; +extern u8 D_801828B0; +extern u8 D_80182964; +extern u8 D_80182940; +extern u8 D_8018291C; +extern u8 D_8018288C; +extern void func_80145934(void); +extern u8 D_80182A18; +extern u8 D_801829F4; +extern u8 D_801829D0; +extern u8 D_801829AC; +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_80181E10[]; +extern unsigned char D_80181E40[]; +extern unsigned char D_80181E90[]; +extern unsigned char D_80181EC0[]; +extern unsigned char D_80181EF0[]; +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(void); +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_80181F40[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80182008[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80182090[]; +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_80182098; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801AAA30; +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_801AAA34; +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_801820C8; +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 void 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_80182170[])(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_80182194[])(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_80182184; +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_801821A8[])(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_801821B4[]; +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_801821C4[])(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_801821DC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801821CC; +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_801821F0[])(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_8018220C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801821FC; +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_80182220[])(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_80182234[])(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_80182248; +extern void (*D_80182270[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80182250; +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_801822BC[])(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_801822C0[])(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(void *a0); +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_80182724[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80182734[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801AAA68; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018275C[])(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_8018273C; +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_8018274C; +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_8018279C[])(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_801827A4[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80182770; +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_801827B0[])(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_80182780; +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_801AAA70; +extern s32 D_801AAA7C; +extern s32 D_801AAA80; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801827EC[])(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_801827C0[]; +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_801AAA78; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80182A3C[])(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_8018285C[]; +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_80182AE0[])(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_80182C34[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80182A50; +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_80182C3C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80182A60; +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_80182A80; +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_80182C44[])(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(void); +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_80182C6C[])(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_80182C78[])(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_80182AEC[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80182D1C; +extern void func_8015D380(s32 a0); +extern unsigned char D_80181E00[]; +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_80182D30[]; +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_80182D6C[]; +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_80182DB4; +extern u16 D_80182DB6; +extern u16 D_80182DB8; +extern s32 D_80182DBC; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80182DC4; +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_80182AD0; +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_80182E48[]; +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_80182EF8[])(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_80182F28[]; +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_80182F8C; +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_801AAA88[]; +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_80182FB0[])(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_801AAAE0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80182FF8[])(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_80182FE8; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801AA324[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_80183000[])(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_80183054[])(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_8018301C; +extern s16 D_80183050; +extern s16 D_8018304E; +extern s16 D_8018304C; +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_80183060[])(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_801AAB40; +extern u8 D_801AAB41; +extern u8 D_801AAB42; +extern u8 D_801AAB43; +extern u8 D_801AAB44; +extern u8 D_801AAB45; +extern u8 D_801AAB46; +extern u8 D_801AAB47; +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_80183070[])(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_801AAB80; +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_801830B4[])(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_80183130[]; +extern s32 D_80183150[]; +extern u8 D_801831CC[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801831EC[]; +extern u8 D_8018320C[]; +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_801832A8[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80183324[])(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_801AA334; +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_80183330[])(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_80183338[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80183400[])(void); +extern void func_80166618(void *a0); +extern void (*D_80183410[])(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_80183420[])(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_8018342C[])(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_8018338C[]; +extern u8 D_801833A0[]; +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_80183444[])(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_8018344C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80183454[])(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_8018345C[])(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_80183464[])(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_8018346C[])(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_80183474[])(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_80183528[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80183530[])(void); +extern void func_80169F00(void *a0); +extern char D_801834E0[]; +extern char D_801834A0[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80183568[])(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_80183574[])(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_801835BC[])(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_80183638[])(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_801AAEA0; +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_8018362C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80183670[]; +extern unsigned short D_80183678[]; +extern unsigned short D_80183680[]; +extern unsigned char D_801AAEA8[]; +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_801AAEA0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80183688[])(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_801AAFDC; +extern M2C_UNK D_801AAFE0; +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_801AAF68; +extern void (*D_801836B8[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801AAFE4[]; +extern u8 D_801AAFEC[]; +extern u8 D_801AAF9C[]; +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_801836C0[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801836DC[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801836E4[])(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_8018374C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801836F0; +extern u8 D_801836FC; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80183780[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80183788[])(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_801837DC[])(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_80183810[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80183800[]; +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_8018382C; +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); +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_801838A4[])(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_801838AC[])(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_801838B4[])(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_801838BC[])(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_801838C4[])(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_801838CC[])(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_801838D8[])(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_801838E4[])(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_801838F0[])(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_80183900[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80183910[])(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_80183918[])(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_80183920[])(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_80183928[])(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_80183930[])(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_80183938[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80183940[])(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_80183948[])(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_80183950[])(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_80183958[])(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_80183960[])(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_80183968[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80183970[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80183978[])(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_80183980[])(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_80183988[])(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_80183990[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80183998[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801839A0[])(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_801839A8[])(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_801839B0[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801839B8[])(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_801839C0[])(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_80183A04[])(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_801839C8; +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_80183A34[])(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_80183A70[])(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(s32); +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_80183AC8[])(); +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_80183AD8[])(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_80183AE0[])(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_80183C48[])(); +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_80183C54[])(); +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_801AA57C; +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 int func_801789AC(void); +extern s16 D_801ABCE0; +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_801AB720; +extern short D_801ABD54; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801ABB4C; +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_801ABB74; +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_801ABB30; +extern s32 func_8017A3B0(void); +extern short D_801ABB6C; +extern short D_801ABB68; +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_801ABCB0; +extern s16 D_801ABCB2; +extern s16 D_801ABCBC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801ABCB0; + + 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_801ABCBC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801ABCB0+0xC == &D_801ABCBC; 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_801ABCB0 + 0xC)) < 0x101) { + D_801ABCB0 = 0; + D_801ABCB2 = 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_801ABCBC); + 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_801ABCB0 + 0xC)) < 0x101) { + D_801ABCB0 = 0; + D_801ABCB2 = 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_801ABBAC; + extern s16 D_801ABBAE; + extern s16 D_801ABBB0; + extern s16 D_801ABBA4; + extern s16 D_801ABBA6; + extern s16 D_801ABBA8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801ABBAC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801ABBAE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801ABBB0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801ABBA4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801ABBA6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801ABBA8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801ABB34; +extern u16 D_801ABBB4; +extern u16 D_801ABBB6; +extern u16 D_801ABBB8; +extern s16 D_801ABCE0; + +void func_8017B1D8(void) { + func_8012A418(); + D_801ABCE0 = 0; + D_801ABB34 = 0; + D_801ABBB4 = D_80126B5E; + D_801ABBB6 = D_80126B62; + D_801ABBB8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80183D90[]; + extern s16 D_801ABBAC; + extern s16 D_801ABBA4; + 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_80183D90[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80183D90[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801ABBAC; + s16 *p78C = &D_801ABBA4; + *(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_801ABCE0 = 1; + D_801ABB34 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801ABB54; + extern SV4_8017B368 D_801ABB5C; + extern s16 D_801ABBAC; + extern s16 D_801ABBA4; + extern u16 D_80183D90; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801ABB54; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801ABB5C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80183D90)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80183D90)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801ABBAC) = loc0; + (*(SV4_8017B368 *)&D_801ABBA4) = loc1; + D_801ABCE0 = 1; + D_801ABB34 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC06_011/nonmatchings/ov_SC06_011_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80183D90[]; + extern s16 D_801ABBAC; + extern s16 D_801ABBAE; + extern s16 D_801ABBB0; + extern s16 D_801ABBA4; + extern s16 D_801ABBA6; + extern s16 D_801ABBA8; + 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_80183D90[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80183D90[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801ABBAC; + s16 *p78C = &D_801ABBA4; + *(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_801ABBAE; + v798 = D_801ABBB0; + v78C = *p78C; + v78E = D_801ABBA6; + v790 = D_801ABBA8; + __asm__ __volatile__(""); + D_801ABCE0 = 1; + D_801ABB34 = 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_801ABB34; +extern s16 D_801ABBAC; +extern s16 D_801ABBAE; +extern s16 D_801ABBB0; +extern s16 D_801ABBA4; +extern s16 D_801ABBA6; +extern s16 D_801ABBA8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801ABB34 = 0; + D_801ABBAC = (s16) D_80114F30; + D_801ABBAE = (s16) D_80114F34; + D_801ABBB0 = (s16) D_80114F38; + D_801ABBA4 = (s16) D_80114F24; + D_801ABBA6 = (s16) D_80114F28; + D_801ABBA8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801ABBC4; +extern s16 D_801ABBC6; +extern s16 D_801ABBC8; +extern s16 D_801ABBCC; +extern s16 D_801ABBCE; +extern s16 D_801ABBD0; + +void func_8017B824(void) { + D_801ABBC4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801ABBC6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801ABBC8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801ABBCC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801ABBCE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801ABBD0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801ABBC4; +extern s16 D_801ABBC6; +extern s16 D_801ABBC8; +extern s16 D_801ABBCC; +extern s16 D_801ABBCE; +extern s16 D_801ABBD0; + +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_801ABBC4; + D_80114F34 = D_801ABBC6; + D_80114F38 = D_801ABBC8; + D_80114F24 = D_801ABBCC; + D_80114F28 = D_801ABBCE; + D_80114F2C = D_801ABBD0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801ABBAC), src[8..15] -> (*(S8_8017B8E8 *)&D_801ABBA4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801ABBAC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801ABBA4) = ((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_801ABBB4; +extern u16 D_801ABBB6; +extern u16 D_801ABBB8; + +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_801ABB34; +extern short D_801ABBBC; +extern short D_801ABBBE; +extern short D_801ABBC0; +extern s16 D_801ABBAC; +extern s16 D_801ABBAE; +extern s16 D_801ABBB0; +extern s16 D_801ABBA4; +extern s16 D_801ABBA6; +extern s16 D_801ABBA8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801ABBB4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801ABBB6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801ABBB8); + (*(s16 *)&D_801ABBBC) = buf[0]; + (*(s16 *)&D_801ABBBE) = buf[1]; + (*(s16 *)&D_801ABBC0) = buf[2]; + D_801ABBAC = D_80114F30 + buf[0]; + D_801ABB34 = 0; + D_801ABBAE = D_80114F34 + buf[1]; + D_801ABBB0 = D_80114F38 + buf[2]; + D_801ABBA4 = D_80114F24 + buf[0]; + D_801ABBA6 = D_80114F28 + buf[1]; + D_801ABBA8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801ABB54; +extern SV4 D_801ABB5C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801ABB5C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801ABB54 = 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_801ABB5C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801ABB5C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801ABB54) = 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_801ABB5C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801ABB7C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801ABB7C; + 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_801ABB34; +extern s16 D_801ABCE0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801ABB34 = D_801ABB34 + 1; + if (D_801ABB34 >= 0x1F) { + D_801ABCE0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801ABB34; +extern s16 D_801ABCE0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801ABB34 = D_801ABB34 + 1; + if (0x18 < D_801ABB34) { + func_8012A4BC(); + D_801ABCE0 = 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_801ABB34; +extern void (*D_801ABB78)(void); +extern short D_801ABBBC; +extern short D_801ABBBE; +extern short D_801ABBC0; +extern s16 D_801ABCE0; + +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_801ABB34 = D_801ABB34 + 1; + if (D_801ABB34 >= 0x19) { + if (D_801ABB78 != 0) { + (*D_801ABB78)(); + } else { + D_80114F30 = D_80114F30 + D_801ABBBC; + D_80114F34 = D_80114F34 + D_801ABBBE; + D_80114F38 = D_80114F38 + D_801ABBC0; + D_80114F24 = D_80114F24 + D_801ABBBC; + D_80114F28 = D_80114F28 + D_801ABBBE; + D_80114F2C = D_80114F2C + D_801ABBC0; + func_8012A4BC(); + } + D_801ABCE0 = 0; + } +} + + + +extern void (*D_80183E30[])(void); + +void func_8017BE60(void *a0) { + D_80183E30[*(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) */ + diff --git a/src/ov_SC06_013/ov_SC06_013_jr_8017A4AC.c b/src/ov_SC06_013/ov_SC06_013_jr_8017A4AC.c index 19d8d29d8..601411c0b 100644 --- a/src/ov_SC06_013/ov_SC06_013_jr_8017A4AC.c +++ b/src/ov_SC06_013/ov_SC06_013_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8019AA64; - extern s16 D_8019AA66; - extern s16 D_8019AA68; - extern s16 D_8019AA5C; - extern s16 D_8019AA5E; - extern s16 D_8019AA60; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019AA64, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019AA66, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019AA68, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019AA5C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019AA5E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019AA60, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8019A9EC; -extern u16 D_8019AA6C; -extern u16 D_8019AA6E; -extern u16 D_8019AA70; -extern s16 D_8019AB90; - -void func_8017B1D8(void) { - func_8012A418(); - D_8019AB90 = 0; - D_8019A9EC = 0; - D_8019AA6C = D_80126B5E; - D_8019AA6E = D_80126B62; - D_8019AA70 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018250C[]; - extern s16 D_8019AA64; - extern s16 D_8019AA5C; - 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_8018250C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018250C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019AA64; - s16 *p78C = &D_8019AA5C; - *(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_8019AB90 = 1; - D_8019A9EC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019AA0C; - extern SV4_8017B368 D_8019AA14; - extern s16 D_8019AA64; - extern s16 D_8019AA5C; - extern u16 D_8018250C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8019AA0C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8019AA14; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018250C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018250C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8019AA64) = loc0; - (*(SV4_8017B368 *)&D_8019AA5C) = loc1; - D_8019AB90 = 1; - D_8019A9EC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018250C[]; - extern s16 D_8019AA64; - extern s16 D_8019AA66; - extern s16 D_8019AA68; - extern s16 D_8019AA5C; - extern s16 D_8019AA5E; - extern s16 D_8019AA60; - 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_8018250C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018250C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019AA64; - s16 *p78C = &D_8019AA5C; - *(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_8019AA66; - v798 = D_8019AA68; - v78C = *p78C; - v78E = D_8019AA5E; - v790 = D_8019AA60; - __asm__ __volatile__(""); - D_8019AB90 = 1; - D_8019A9EC = 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_8019A9EC; -extern s16 D_8019AA64; -extern s16 D_8019AA66; -extern s16 D_8019AA68; -extern s16 D_8019AA5C; -extern s16 D_8019AA5E; -extern s16 D_8019AA60; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8019A9EC = 0; - D_8019AA64 = (s16) D_80114F30; - D_8019AA66 = (s16) D_80114F34; - D_8019AA68 = (s16) D_80114F38; - D_8019AA5C = (s16) D_80114F24; - D_8019AA5E = (s16) D_80114F28; - D_8019AA60 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8019AA7C; -extern s16 D_8019AA7E; -extern s16 D_8019AA80; -extern s16 D_8019AA84; -extern s16 D_8019AA86; -extern s16 D_8019AA88; - -void func_8017B824(void) { - D_8019AA7C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8019AA7E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8019AA80 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8019AA84 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8019AA86 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8019AA88 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8019AA7C; -extern s16 D_8019AA7E; -extern s16 D_8019AA80; -extern s16 D_8019AA84; -extern s16 D_8019AA86; -extern s16 D_8019AA88; - -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_8019AA7C; - D_80114F34 = D_8019AA7E; - D_80114F38 = D_8019AA80; - D_80114F24 = D_8019AA84; - D_80114F28 = D_8019AA86; - D_80114F2C = D_8019AA88; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8019AA64), src[8..15] -> (*(S8_8017B8E8 *)&D_8019AA5C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8019AA64) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8019AA5C) = ((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_8019AA6C; -extern u16 D_8019AA6E; -extern u16 D_8019AA70; - -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_8019A9EC; -extern short D_8019AA74; -extern short D_8019AA76; -extern short D_8019AA78; -extern s16 D_8019AA64; -extern s16 D_8019AA66; -extern s16 D_8019AA68; -extern s16 D_8019AA5C; -extern s16 D_8019AA5E; -extern s16 D_8019AA60; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019AA6C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019AA6E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019AA70); - (*(s16 *)&D_8019AA74) = buf[0]; - (*(s16 *)&D_8019AA76) = buf[1]; - (*(s16 *)&D_8019AA78) = buf[2]; - D_8019AA64 = D_80114F30 + buf[0]; - D_8019A9EC = 0; - D_8019AA66 = D_80114F34 + buf[1]; - D_8019AA68 = D_80114F38 + buf[2]; - D_8019AA5C = D_80114F24 + buf[0]; - D_8019AA5E = D_80114F28 + buf[1]; - D_8019AA60 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8019AA0C; -extern SV4 D_8019AA14; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019AA14) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8019AA0C = 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_8019AA14 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019AA14)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8019AA0C) = 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_8019AA14) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8019AA34[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8019AA34; - 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_8019A9EC; -extern s16 D_8019AB90; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8019A9EC = D_8019A9EC + 1; - if (D_8019A9EC >= 0x1F) { - D_8019AB90 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8019A9EC; -extern s16 D_8019AB90; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8019A9EC = D_8019A9EC + 1; - if (0x18 < D_8019A9EC) { - func_8012A4BC(); - D_8019AB90 = 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_8019A9EC; -extern void (*D_8019AA30)(void); -extern short D_8019AA74; -extern short D_8019AA76; -extern short D_8019AA78; -extern s16 D_8019AB90; - -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_8019A9EC = D_8019A9EC + 1; - if (D_8019A9EC >= 0x19) { - if (D_8019AA30 != 0) { - (*D_8019AA30)(); - } else { - D_80114F30 = D_80114F30 + D_8019AA74; - D_80114F34 = D_80114F34 + D_8019AA76; - D_80114F38 = D_80114F38 + D_8019AA78; - D_80114F24 = D_80114F24 + D_8019AA74; - D_80114F28 = D_80114F28 + D_8019AA76; - D_80114F2C = D_80114F2C + D_8019AA78; - func_8012A4BC(); - } - D_8019AB90 = 0; - } -} - - - -extern void (*D_801825AC[])(void); - -void func_8017BE60(void *a0) { - D_801825AC[*(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) */ diff --git a/src/ov_SC06_013/ov_SC06_013_jr_8017AE2C.c b/src/ov_SC06_013/ov_SC06_013_jr_8017AE2C.c new file mode 100644 index 000000000..c46855ca1 --- /dev/null +++ b/src/ov_SC06_013/ov_SC06_013_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80181104; +extern u8 D_80181074; +extern u8 D_80181050; +extern u8 D_8018102C; +extern u8 D_801810E0; +extern u8 D_801810BC; +extern u8 D_80181098; +extern u8 D_80181008; +extern void func_80145934(void); +extern u8 D_80181194; +extern u8 D_80181170; +extern u8 D_8018114C; +extern u8 D_80181128; +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_8018058C[]; +extern unsigned char D_801805BC[]; +extern unsigned char D_8018060C[]; +extern unsigned char D_8018063C[]; +extern unsigned char D_8018066C[]; +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(void); +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_801806BC[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80180784[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018080C[]; +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_80180814; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801998E8; +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_801998EC; +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_80180844; +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 void 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_801808EC[])(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_80180910[])(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_80180900; +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_80180924[])(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_80180930[]; +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_80180940[])(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_80180958[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180948; +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_8018096C[])(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_80180988[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80180978; +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_8018099C[])(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_801809B0[])(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_801809C4; +extern void (*D_801809EC[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801809CC; +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_80180A38[])(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_80180A3C[])(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(void *a0); +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_80180EA0[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80180EB0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_80199920; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180ED8[])(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_80180EB8; +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_80180EC8; +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_80180F18[])(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_80180F20[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180EEC; +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_80180F2C[])(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_80180EFC; +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_80199928; +extern s32 D_80199934; +extern s32 D_80199938; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180F68[])(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_80180F3C[]; +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_80199930; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801811B8[])(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_80180FD8[]; +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_8018125C[])(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_801813B0[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801811CC; +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_801813B8[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801811DC; +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_801811FC; +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_801813C0[])(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(void); +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_801813E8[])(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_801813F4[])(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_80181268[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80181498; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018057C[]; +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_801814AC[]; +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_801814E8[]; +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_80181530; +extern u16 D_80181532; +extern u16 D_80181534; +extern s32 D_80181538; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80181540; +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_8018124C; +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_801815C4[]; +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_80181674[])(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_801816A4[]; +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_80181708; +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_80199940[]; +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_8018172C[])(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_80199998[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80181774[])(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_80181764; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801991F8[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_8018177C[])(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_801817D0[])(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_80181798; +extern s16 D_801817CC; +extern s16 D_801817CA; +extern s16 D_801817C8; +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_801817DC[])(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_801999F8; +extern u8 D_801999F9; +extern u8 D_801999FA; +extern u8 D_801999FB; +extern u8 D_801999FC; +extern u8 D_801999FD; +extern u8 D_801999FE; +extern u8 D_801999FF; +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_801817EC[])(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_80199A38; +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_80181830[])(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_801818AC[]; +extern s32 D_801818CC[]; +extern u8 D_80181948[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80181968[]; +extern u8 D_80181988[]; +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_80181A24[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80181AA0[])(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_80199208; +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_80181AAC[])(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_80181AB4[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80181B7C[])(void); +extern void func_80166618(void *a0); +extern void (*D_80181B8C[])(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_80181B9C[])(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_80181BA8[])(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_80181B08[]; +extern u8 D_80181B1C[]; +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_80181BC0[])(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_80181BC8[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80181BD0[])(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_80181BD8[])(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_80181BE0[])(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_80181BE8[])(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_80181BF0[])(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_80181CA4[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80181CAC[])(void); +extern void func_80169F00(void *a0); +extern char D_80181C5C[]; +extern char D_80181C1C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80181CE4[])(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_80181CF0[])(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_80181D38[])(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_80181DB4[])(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_80199D58; +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_80181DA8[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80181DEC[]; +extern unsigned short D_80181DF4[]; +extern unsigned short D_80181DFC[]; +extern unsigned char D_80199D60[]; +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_80199D58; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80181E04[])(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_80199E94; +extern M2C_UNK D_80199E98; +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_80199E20; +extern void (*D_80181E34[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80199E9C[]; +extern u8 D_80199EA4[]; +extern u8 D_80199E54[]; +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_80181E3C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80181E58[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80181E60[])(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_80181EC8[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80181E6C; +extern u8 D_80181E78; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80181EFC[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80181F04[])(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_80181F58[])(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_80181F8C[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80181F7C[]; +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_80181FA8; +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); +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_80182020[])(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_80182028[])(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_80182030[])(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_80182038[])(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_80182040[])(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_80182048[])(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_80182054[])(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_80182060[])(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_8018206C[])(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_8018207C[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018208C[])(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_80182094[])(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_8018209C[])(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_801820A4[])(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_801820AC[])(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_801820B4[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801820BC[])(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_801820C4[])(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_801820CC[])(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_801820D4[])(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_801820DC[])(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_801820E4[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801820EC[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801820F4[])(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_801820FC[])(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_80182104[])(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_8018210C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80182114[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018211C[])(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_80182124[])(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_8018212C[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80182134[])(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_8018213C[])(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_80182180[])(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_80182144; +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_801821B0[])(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_801821EC[])(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(s32); +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_80182244[])(); +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_80182254[])(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_8018225C[])(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_801823C4[])(); +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_801823D0[])(); +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_80199450; +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 int func_801789AC(void); +extern s16 D_8019AB90; +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_8019A5D8; +extern short D_8019AC04; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8019AA04; +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_8019AA2C; +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_8019A9E8; +extern s32 func_8017A3B0(void); +extern short D_8019AA24; +extern short D_8019AA20; +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_8019AB60; +extern s16 D_8019AB62; +extern s16 D_8019AB6C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_8019AB60; + + 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_8019AB6C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_8019AB60+0xC == &D_8019AB6C; 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_8019AB60 + 0xC)) < 0x101) { + D_8019AB60 = 0; + D_8019AB62 = 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_8019AB6C); + 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_8019AB60 + 0xC)) < 0x101) { + D_8019AB60 = 0; + D_8019AB62 = 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_8019AA64; + extern s16 D_8019AA66; + extern s16 D_8019AA68; + extern s16 D_8019AA5C; + extern s16 D_8019AA5E; + extern s16 D_8019AA60; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019AA64, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019AA66, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019AA68, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019AA5C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019AA5E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019AA60, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8019A9EC; +extern u16 D_8019AA6C; +extern u16 D_8019AA6E; +extern u16 D_8019AA70; +extern s16 D_8019AB90; + +void func_8017B1D8(void) { + func_8012A418(); + D_8019AB90 = 0; + D_8019A9EC = 0; + D_8019AA6C = D_80126B5E; + D_8019AA6E = D_80126B62; + D_8019AA70 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018250C[]; + extern s16 D_8019AA64; + extern s16 D_8019AA5C; + 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_8018250C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018250C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019AA64; + s16 *p78C = &D_8019AA5C; + *(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_8019AB90 = 1; + D_8019A9EC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019AA0C; + extern SV4_8017B368 D_8019AA14; + extern s16 D_8019AA64; + extern s16 D_8019AA5C; + extern u16 D_8018250C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8019AA0C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8019AA14; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018250C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018250C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8019AA64) = loc0; + (*(SV4_8017B368 *)&D_8019AA5C) = loc1; + D_8019AB90 = 1; + D_8019A9EC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018250C[]; + extern s16 D_8019AA64; + extern s16 D_8019AA66; + extern s16 D_8019AA68; + extern s16 D_8019AA5C; + extern s16 D_8019AA5E; + extern s16 D_8019AA60; + 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_8018250C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018250C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019AA64; + s16 *p78C = &D_8019AA5C; + *(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_8019AA66; + v798 = D_8019AA68; + v78C = *p78C; + v78E = D_8019AA5E; + v790 = D_8019AA60; + __asm__ __volatile__(""); + D_8019AB90 = 1; + D_8019A9EC = 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_8019A9EC; +extern s16 D_8019AA64; +extern s16 D_8019AA66; +extern s16 D_8019AA68; +extern s16 D_8019AA5C; +extern s16 D_8019AA5E; +extern s16 D_8019AA60; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8019A9EC = 0; + D_8019AA64 = (s16) D_80114F30; + D_8019AA66 = (s16) D_80114F34; + D_8019AA68 = (s16) D_80114F38; + D_8019AA5C = (s16) D_80114F24; + D_8019AA5E = (s16) D_80114F28; + D_8019AA60 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8019AA7C; +extern s16 D_8019AA7E; +extern s16 D_8019AA80; +extern s16 D_8019AA84; +extern s16 D_8019AA86; +extern s16 D_8019AA88; + +void func_8017B824(void) { + D_8019AA7C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8019AA7E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8019AA80 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8019AA84 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8019AA86 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8019AA88 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8019AA7C; +extern s16 D_8019AA7E; +extern s16 D_8019AA80; +extern s16 D_8019AA84; +extern s16 D_8019AA86; +extern s16 D_8019AA88; + +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_8019AA7C; + D_80114F34 = D_8019AA7E; + D_80114F38 = D_8019AA80; + D_80114F24 = D_8019AA84; + D_80114F28 = D_8019AA86; + D_80114F2C = D_8019AA88; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8019AA64), src[8..15] -> (*(S8_8017B8E8 *)&D_8019AA5C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8019AA64) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8019AA5C) = ((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_8019AA6C; +extern u16 D_8019AA6E; +extern u16 D_8019AA70; + +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_8019A9EC; +extern short D_8019AA74; +extern short D_8019AA76; +extern short D_8019AA78; +extern s16 D_8019AA64; +extern s16 D_8019AA66; +extern s16 D_8019AA68; +extern s16 D_8019AA5C; +extern s16 D_8019AA5E; +extern s16 D_8019AA60; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019AA6C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019AA6E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019AA70); + (*(s16 *)&D_8019AA74) = buf[0]; + (*(s16 *)&D_8019AA76) = buf[1]; + (*(s16 *)&D_8019AA78) = buf[2]; + D_8019AA64 = D_80114F30 + buf[0]; + D_8019A9EC = 0; + D_8019AA66 = D_80114F34 + buf[1]; + D_8019AA68 = D_80114F38 + buf[2]; + D_8019AA5C = D_80114F24 + buf[0]; + D_8019AA5E = D_80114F28 + buf[1]; + D_8019AA60 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8019AA0C; +extern SV4 D_8019AA14; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019AA14) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8019AA0C = 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_8019AA14 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019AA14)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8019AA0C) = 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_8019AA14) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8019AA34[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8019AA34; + 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_8019A9EC; +extern s16 D_8019AB90; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8019A9EC = D_8019A9EC + 1; + if (D_8019A9EC >= 0x1F) { + D_8019AB90 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8019A9EC; +extern s16 D_8019AB90; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8019A9EC = D_8019A9EC + 1; + if (0x18 < D_8019A9EC) { + func_8012A4BC(); + D_8019AB90 = 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_8019A9EC; +extern void (*D_8019AA30)(void); +extern short D_8019AA74; +extern short D_8019AA76; +extern short D_8019AA78; +extern s16 D_8019AB90; + +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_8019A9EC = D_8019A9EC + 1; + if (D_8019A9EC >= 0x19) { + if (D_8019AA30 != 0) { + (*D_8019AA30)(); + } else { + D_80114F30 = D_80114F30 + D_8019AA74; + D_80114F34 = D_80114F34 + D_8019AA76; + D_80114F38 = D_80114F38 + D_8019AA78; + D_80114F24 = D_80114F24 + D_8019AA74; + D_80114F28 = D_80114F28 + D_8019AA76; + D_80114F2C = D_80114F2C + D_8019AA78; + func_8012A4BC(); + } + D_8019AB90 = 0; + } +} + + + +extern void (*D_801825AC[])(void); + +void func_8017BE60(void *a0) { + D_801825AC[*(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) */ + diff --git a/src/ov_SC06_014/ov_SC06_014_jr_8017A4AC.c b/src/ov_SC06_014/ov_SC06_014_jr_8017A4AC.c index 0ff229613..d7b45a52c 100644 --- a/src/ov_SC06_014/ov_SC06_014_jr_8017A4AC.c +++ b/src/ov_SC06_014/ov_SC06_014_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801A1454; - extern s16 D_801A1456; - extern s16 D_801A1458; - extern s16 D_801A144C; - extern s16 D_801A144E; - extern s16 D_801A1450; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A1454, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A1456, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A1458, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A144C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A144E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A1450, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801A13DC; -extern u16 D_801A145C; -extern u16 D_801A145E; -extern u16 D_801A1460; -extern s16 D_801A15A8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801A15A8 = 0; - D_801A13DC = 0; - D_801A145C = D_80126B5E; - D_801A145E = D_80126B62; - D_801A1460 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80183870[]; - extern s16 D_801A1454; - extern s16 D_801A144C; - 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_80183870[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80183870[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A1454; - s16 *p78C = &D_801A144C; - *(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_801A15A8 = 1; - D_801A13DC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A13FC; - extern SV4_8017B368 D_801A1404; - extern s16 D_801A1454; - extern s16 D_801A144C; - extern u16 D_80183870; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801A13FC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801A1404; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80183870)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80183870)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801A1454) = loc0; - (*(SV4_8017B368 *)&D_801A144C) = loc1; - D_801A15A8 = 1; - D_801A13DC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80183870[]; - extern s16 D_801A1454; - extern s16 D_801A1456; - extern s16 D_801A1458; - extern s16 D_801A144C; - extern s16 D_801A144E; - extern s16 D_801A1450; - 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_80183870[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80183870[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A1454; - s16 *p78C = &D_801A144C; - *(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_801A1456; - v798 = D_801A1458; - v78C = *p78C; - v78E = D_801A144E; - v790 = D_801A1450; - __asm__ __volatile__(""); - D_801A15A8 = 1; - D_801A13DC = 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_801A13DC; -extern s16 D_801A1454; -extern s16 D_801A1456; -extern s16 D_801A1458; -extern s16 D_801A144C; -extern s16 D_801A144E; -extern s16 D_801A1450; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801A13DC = 0; - D_801A1454 = (s16) D_80114F30; - D_801A1456 = (s16) D_80114F34; - D_801A1458 = (s16) D_80114F38; - D_801A144C = (s16) D_80114F24; - D_801A144E = (s16) D_80114F28; - D_801A1450 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801A146C; -extern s16 D_801A146E; -extern s16 D_801A1470; -extern s16 D_801A1474; -extern s16 D_801A1476; -extern s16 D_801A1478; - -void func_8017B824(void) { - D_801A146C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801A146E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801A1470 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801A1474 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801A1476 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801A1478 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801A146C; -extern s16 D_801A146E; -extern s16 D_801A1470; -extern s16 D_801A1474; -extern s16 D_801A1476; -extern s16 D_801A1478; - -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_801A146C; - D_80114F34 = D_801A146E; - D_80114F38 = D_801A1470; - D_80114F24 = D_801A1474; - D_80114F28 = D_801A1476; - D_80114F2C = D_801A1478; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801A1454), src[8..15] -> (*(S8_8017B8E8 *)&D_801A144C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801A1454) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801A144C) = ((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_801A145C; -extern u16 D_801A145E; -extern u16 D_801A1460; - -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_801A13DC; -extern short D_801A1464; -extern short D_801A1466; -extern short D_801A1468; -extern s16 D_801A1454; -extern s16 D_801A1456; -extern s16 D_801A1458; -extern s16 D_801A144C; -extern s16 D_801A144E; -extern s16 D_801A1450; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A145C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A145E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A1460); - (*(s16 *)&D_801A1464) = buf[0]; - (*(s16 *)&D_801A1466) = buf[1]; - (*(s16 *)&D_801A1468) = buf[2]; - D_801A1454 = D_80114F30 + buf[0]; - D_801A13DC = 0; - D_801A1456 = D_80114F34 + buf[1]; - D_801A1458 = D_80114F38 + buf[2]; - D_801A144C = D_80114F24 + buf[0]; - D_801A144E = D_80114F28 + buf[1]; - D_801A1450 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801A13FC; -extern SV4 D_801A1404; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A1404) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801A13FC = 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_801A1404 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A1404)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801A13FC) = 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_801A1404) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801A1424[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801A1424; - 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_801A13DC; -extern s16 D_801A15A8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801A13DC = D_801A13DC + 1; - if (D_801A13DC >= 0x1F) { - D_801A15A8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801A13DC; -extern s16 D_801A15A8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801A13DC = D_801A13DC + 1; - if (0x18 < D_801A13DC) { - func_8012A4BC(); - D_801A15A8 = 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_801A13DC; -extern void (*D_801A1420)(void); -extern short D_801A1464; -extern short D_801A1466; -extern short D_801A1468; -extern s16 D_801A15A8; - -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_801A13DC = D_801A13DC + 1; - if (D_801A13DC >= 0x19) { - if (D_801A1420 != 0) { - (*D_801A1420)(); - } else { - D_80114F30 = D_80114F30 + D_801A1464; - D_80114F34 = D_80114F34 + D_801A1466; - D_80114F38 = D_80114F38 + D_801A1468; - D_80114F24 = D_80114F24 + D_801A1464; - D_80114F28 = D_80114F28 + D_801A1466; - D_80114F2C = D_80114F2C + D_801A1468; - func_8012A4BC(); - } - D_801A15A8 = 0; - } -} - - - -extern void (*D_80183910[])(void); - -void func_8017BE60(void *a0) { - D_80183910[*(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) */ diff --git a/src/ov_SC06_014/ov_SC06_014_jr_8017AE2C.c b/src/ov_SC06_014/ov_SC06_014_jr_8017AE2C.c new file mode 100644 index 000000000..34eaf39d8 --- /dev/null +++ b/src/ov_SC06_014/ov_SC06_014_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80182468; +extern u8 D_801823D8; +extern u8 D_801823B4; +extern u8 D_80182390; +extern u8 D_80182444; +extern u8 D_80182420; +extern u8 D_801823FC; +extern u8 D_8018236C; +extern void func_80145934(void); +extern u8 D_801824F8; +extern u8 D_801824D4; +extern u8 D_801824B0; +extern u8 D_8018248C; +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_801818F0[]; +extern unsigned char D_80181920[]; +extern unsigned char D_80181970[]; +extern unsigned char D_801819A0[]; +extern unsigned char D_801819D0[]; +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(void); +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_80181A20[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80181AE8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80181B70[]; +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_80181B78; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801A02D8; +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_801A02DC; +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_80181BA8; +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 void 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_80181C50[])(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_80181C74[])(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_80181C64; +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_80181C88[])(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_80181C94[]; +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_80181CA4[])(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_80181CBC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80181CAC; +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_80181CD0[])(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_80181CEC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181CDC; +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_80181D00[])(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_80181D14[])(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_80181D28; +extern void (*D_80181D50[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80181D30; +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_80181D9C[])(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_80181DA0[])(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(void *a0); +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_80182204[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80182214[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801A0310; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018223C[])(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_8018221C; +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_8018222C; +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_8018227C[])(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_80182284[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80182250; +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_80182290[])(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_80182260; +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_801A0318; +extern s32 D_801A0324; +extern s32 D_801A0328; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801822CC[])(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_801822A0[]; +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_801A0320; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018251C[])(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_8018233C[]; +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_801825C0[])(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_80182714[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80182530; +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_8018271C[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80182540; +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_80182560; +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_80182724[])(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(void); +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_8018274C[])(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_80182758[])(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_801825CC[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801827FC; +extern void func_8015D380(s32 a0); +extern unsigned char D_801818E0[]; +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_80182810[]; +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_8018284C[]; +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_80182894; +extern u16 D_80182896; +extern u16 D_80182898; +extern s32 D_8018289C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_801828A4; +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_801825B0; +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_80182928[]; +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_801829D8[])(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_80182A08[]; +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_80182A6C; +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_801A0330[]; +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_80182A90[])(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_801A0388[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80182AD8[])(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_80182AC8; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8019FBE8[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_80182AE0[])(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_80182B34[])(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_80182AFC; +extern s16 D_80182B30; +extern s16 D_80182B2E; +extern s16 D_80182B2C; +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_80182B40[])(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_801A03E8; +extern u8 D_801A03E9; +extern u8 D_801A03EA; +extern u8 D_801A03EB; +extern u8 D_801A03EC; +extern u8 D_801A03ED; +extern u8 D_801A03EE; +extern u8 D_801A03EF; +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_80182B50[])(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_801A0428; +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_80182B94[])(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_80182C10[]; +extern s32 D_80182C30[]; +extern u8 D_80182CAC[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80182CCC[]; +extern u8 D_80182CEC[]; +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_80182D88[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80182E04[])(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_8019FBF8; +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_80182E10[])(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_80182E18[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80182EE0[])(void); +extern void func_80166618(void *a0); +extern void (*D_80182EF0[])(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_80182F00[])(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_80182F0C[])(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_80182E6C[]; +extern u8 D_80182E80[]; +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_80182F24[])(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_80182F2C[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80182F34[])(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_80182F3C[])(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_80182F44[])(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_80182F4C[])(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_80182F54[])(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_80183008[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80183010[])(void); +extern void func_80169F00(void *a0); +extern char D_80182FC0[]; +extern char D_80182F80[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80183048[])(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_80183054[])(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_8018309C[])(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_80183118[])(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_801A0748; +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_8018310C[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80183150[]; +extern unsigned short D_80183158[]; +extern unsigned short D_80183160[]; +extern unsigned char D_801A0750[]; +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_801A0748; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80183168[])(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_801A0884; +extern M2C_UNK D_801A0888; +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_801A0810; +extern void (*D_80183198[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801A088C[]; +extern u8 D_801A0894[]; +extern u8 D_801A0844[]; +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_801831A0[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801831BC[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801831C4[])(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_8018322C[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801831D0; +extern u8 D_801831DC; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80183260[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80183268[])(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_801832BC[])(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_801832F0[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801832E0[]; +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_8018330C; +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); +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_80183384[])(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_8018338C[])(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_80183394[])(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_8018339C[])(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_801833A4[])(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_801833AC[])(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_801833B8[])(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_801833C4[])(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_801833D0[])(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_801833E0[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801833F0[])(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_801833F8[])(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_80183400[])(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_80183408[])(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_80183410[])(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_80183418[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80183420[])(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_80183428[])(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_80183430[])(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_80183438[])(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_80183440[])(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_80183448[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80183450[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80183458[])(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_80183460[])(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_80183468[])(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_80183470[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80183478[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80183480[])(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_80183488[])(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_80183490[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80183498[])(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_801834A0[])(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_801834E4[])(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_801834A8; +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_80183514[])(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_80183550[])(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(s32); +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_801835A8[])(); +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_801835B8[])(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_801835C0[])(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_80183728[])(); +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_80183734[])(); +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_8019FE40; +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 int func_801789AC(void); +extern s16 D_801A15A8; +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_801A0FC8; +extern short D_801A161C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801A13F4; +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_801A141C; +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_801A13D8; +extern s32 func_8017A3B0(void); +extern short D_801A1414; +extern short D_801A1410; +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_801A1578; +extern s16 D_801A157A; +extern s16 D_801A1584; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801A1578; + + 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_801A1584); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801A1578+0xC == &D_801A1584; 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_801A1578 + 0xC)) < 0x101) { + D_801A1578 = 0; + D_801A157A = 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_801A1584); + 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_801A1578 + 0xC)) < 0x101) { + D_801A1578 = 0; + D_801A157A = 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_801A1454; + extern s16 D_801A1456; + extern s16 D_801A1458; + extern s16 D_801A144C; + extern s16 D_801A144E; + extern s16 D_801A1450; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A1454, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A1456, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A1458, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A144C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A144E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A1450, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801A13DC; +extern u16 D_801A145C; +extern u16 D_801A145E; +extern u16 D_801A1460; +extern s16 D_801A15A8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801A15A8 = 0; + D_801A13DC = 0; + D_801A145C = D_80126B5E; + D_801A145E = D_80126B62; + D_801A1460 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80183870[]; + extern s16 D_801A1454; + extern s16 D_801A144C; + 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_80183870[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80183870[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A1454; + s16 *p78C = &D_801A144C; + *(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_801A15A8 = 1; + D_801A13DC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A13FC; + extern SV4_8017B368 D_801A1404; + extern s16 D_801A1454; + extern s16 D_801A144C; + extern u16 D_80183870; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801A13FC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801A1404; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80183870)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80183870)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801A1454) = loc0; + (*(SV4_8017B368 *)&D_801A144C) = loc1; + D_801A15A8 = 1; + D_801A13DC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80183870[]; + extern s16 D_801A1454; + extern s16 D_801A1456; + extern s16 D_801A1458; + extern s16 D_801A144C; + extern s16 D_801A144E; + extern s16 D_801A1450; + 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_80183870[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80183870[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A1454; + s16 *p78C = &D_801A144C; + *(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_801A1456; + v798 = D_801A1458; + v78C = *p78C; + v78E = D_801A144E; + v790 = D_801A1450; + __asm__ __volatile__(""); + D_801A15A8 = 1; + D_801A13DC = 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_801A13DC; +extern s16 D_801A1454; +extern s16 D_801A1456; +extern s16 D_801A1458; +extern s16 D_801A144C; +extern s16 D_801A144E; +extern s16 D_801A1450; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801A13DC = 0; + D_801A1454 = (s16) D_80114F30; + D_801A1456 = (s16) D_80114F34; + D_801A1458 = (s16) D_80114F38; + D_801A144C = (s16) D_80114F24; + D_801A144E = (s16) D_80114F28; + D_801A1450 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801A146C; +extern s16 D_801A146E; +extern s16 D_801A1470; +extern s16 D_801A1474; +extern s16 D_801A1476; +extern s16 D_801A1478; + +void func_8017B824(void) { + D_801A146C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801A146E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801A1470 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801A1474 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801A1476 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801A1478 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801A146C; +extern s16 D_801A146E; +extern s16 D_801A1470; +extern s16 D_801A1474; +extern s16 D_801A1476; +extern s16 D_801A1478; + +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_801A146C; + D_80114F34 = D_801A146E; + D_80114F38 = D_801A1470; + D_80114F24 = D_801A1474; + D_80114F28 = D_801A1476; + D_80114F2C = D_801A1478; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801A1454), src[8..15] -> (*(S8_8017B8E8 *)&D_801A144C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801A1454) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801A144C) = ((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_801A145C; +extern u16 D_801A145E; +extern u16 D_801A1460; + +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_801A13DC; +extern short D_801A1464; +extern short D_801A1466; +extern short D_801A1468; +extern s16 D_801A1454; +extern s16 D_801A1456; +extern s16 D_801A1458; +extern s16 D_801A144C; +extern s16 D_801A144E; +extern s16 D_801A1450; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A145C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A145E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A1460); + (*(s16 *)&D_801A1464) = buf[0]; + (*(s16 *)&D_801A1466) = buf[1]; + (*(s16 *)&D_801A1468) = buf[2]; + D_801A1454 = D_80114F30 + buf[0]; + D_801A13DC = 0; + D_801A1456 = D_80114F34 + buf[1]; + D_801A1458 = D_80114F38 + buf[2]; + D_801A144C = D_80114F24 + buf[0]; + D_801A144E = D_80114F28 + buf[1]; + D_801A1450 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801A13FC; +extern SV4 D_801A1404; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A1404) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801A13FC = 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_801A1404 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A1404)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801A13FC) = 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_801A1404) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801A1424[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801A1424; + 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_801A13DC; +extern s16 D_801A15A8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801A13DC = D_801A13DC + 1; + if (D_801A13DC >= 0x1F) { + D_801A15A8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801A13DC; +extern s16 D_801A15A8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801A13DC = D_801A13DC + 1; + if (0x18 < D_801A13DC) { + func_8012A4BC(); + D_801A15A8 = 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_801A13DC; +extern void (*D_801A1420)(void); +extern short D_801A1464; +extern short D_801A1466; +extern short D_801A1468; +extern s16 D_801A15A8; + +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_801A13DC = D_801A13DC + 1; + if (D_801A13DC >= 0x19) { + if (D_801A1420 != 0) { + (*D_801A1420)(); + } else { + D_80114F30 = D_80114F30 + D_801A1464; + D_80114F34 = D_80114F34 + D_801A1466; + D_80114F38 = D_80114F38 + D_801A1468; + D_80114F24 = D_80114F24 + D_801A1464; + D_80114F28 = D_80114F28 + D_801A1466; + D_80114F2C = D_80114F2C + D_801A1468; + func_8012A4BC(); + } + D_801A15A8 = 0; + } +} + + + +extern void (*D_80183910[])(void); + +void func_8017BE60(void *a0) { + D_80183910[*(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) */ + diff --git a/src/ov_SC06_015/ov_SC06_015_jr_8017A4AC.c b/src/ov_SC06_015/ov_SC06_015_jr_8017A4AC.c index febe7ae8e..512d30aed 100644 --- a/src/ov_SC06_015/ov_SC06_015_jr_8017A4AC.c +++ b/src/ov_SC06_015/ov_SC06_015_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_80194834; - extern s16 D_80194836; - extern s16 D_80194838; - extern s16 D_8019482C; - extern s16 D_8019482E; - extern s16 D_80194830; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80194834, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80194836, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80194838, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019482C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019482E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80194830, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801947BC; -extern u16 D_8019483C; -extern u16 D_8019483E; -extern u16 D_80194840; -extern s16 D_80194988; - -void func_8017B1D8(void) { - func_8012A418(); - D_80194988 = 0; - D_801947BC = 0; - D_8019483C = D_80126B5E; - D_8019483E = D_80126B62; - D_80194840 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_801823C8[]; - extern s16 D_80194834; - extern s16 D_8019482C; - 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_801823C8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801823C8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80194834; - s16 *p78C = &D_8019482C; - *(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_80194988 = 1; - D_801947BC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801947DC; - extern SV4_8017B368 D_801947E4; - extern s16 D_80194834; - extern s16 D_8019482C; - extern u16 D_801823C8; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801947DC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801947E4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_801823C8)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_801823C8)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_80194834) = loc0; - (*(SV4_8017B368 *)&D_8019482C) = loc1; - D_80194988 = 1; - D_801947BC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_801823C8[]; - extern s16 D_80194834; - extern s16 D_80194836; - extern s16 D_80194838; - extern s16 D_8019482C; - extern s16 D_8019482E; - extern s16 D_80194830; - 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_801823C8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801823C8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80194834; - s16 *p78C = &D_8019482C; - *(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_80194836; - v798 = D_80194838; - v78C = *p78C; - v78E = D_8019482E; - v790 = D_80194830; - __asm__ __volatile__(""); - D_80194988 = 1; - D_801947BC = 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_801947BC; -extern s16 D_80194834; -extern s16 D_80194836; -extern s16 D_80194838; -extern s16 D_8019482C; -extern s16 D_8019482E; -extern s16 D_80194830; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801947BC = 0; - D_80194834 = (s16) D_80114F30; - D_80194836 = (s16) D_80114F34; - D_80194838 = (s16) D_80114F38; - D_8019482C = (s16) D_80114F24; - D_8019482E = (s16) D_80114F28; - D_80194830 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8019484C; -extern s16 D_8019484E; -extern s16 D_80194850; -extern s16 D_80194854; -extern s16 D_80194856; -extern s16 D_80194858; - -void func_8017B824(void) { - D_8019484C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8019484E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_80194850 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_80194854 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_80194856 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_80194858 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8019484C; -extern s16 D_8019484E; -extern s16 D_80194850; -extern s16 D_80194854; -extern s16 D_80194856; -extern s16 D_80194858; - -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_8019484C; - D_80114F34 = D_8019484E; - D_80114F38 = D_80194850; - D_80114F24 = D_80194854; - D_80114F28 = D_80194856; - D_80114F2C = D_80194858; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_80194834), src[8..15] -> (*(S8_8017B8E8 *)&D_8019482C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_80194834) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8019482C) = ((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_8019483C; -extern u16 D_8019483E; -extern u16 D_80194840; - -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_801947BC; -extern short D_80194844; -extern short D_80194846; -extern short D_80194848; -extern s16 D_80194834; -extern s16 D_80194836; -extern s16 D_80194838; -extern s16 D_8019482C; -extern s16 D_8019482E; -extern s16 D_80194830; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019483C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019483E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80194840); - (*(s16 *)&D_80194844) = buf[0]; - (*(s16 *)&D_80194846) = buf[1]; - (*(s16 *)&D_80194848) = buf[2]; - D_80194834 = D_80114F30 + buf[0]; - D_801947BC = 0; - D_80194836 = D_80114F34 + buf[1]; - D_80194838 = D_80114F38 + buf[2]; - D_8019482C = D_80114F24 + buf[0]; - D_8019482E = D_80114F28 + buf[1]; - D_80194830 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801947DC; -extern SV4 D_801947E4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801947E4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801947DC = 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_801947E4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801947E4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801947DC) = 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_801947E4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_80194804[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_80194804; - 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_801947BC; -extern s16 D_80194988; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801947BC = D_801947BC + 1; - if (D_801947BC >= 0x1F) { - D_80194988 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801947BC; -extern s16 D_80194988; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801947BC = D_801947BC + 1; - if (0x18 < D_801947BC) { - func_8012A4BC(); - D_80194988 = 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_801947BC; -extern void (*D_80194800)(void); -extern short D_80194844; -extern short D_80194846; -extern short D_80194848; -extern s16 D_80194988; - -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_801947BC = D_801947BC + 1; - if (D_801947BC >= 0x19) { - if (D_80194800 != 0) { - (*D_80194800)(); - } else { - D_80114F30 = D_80114F30 + D_80194844; - D_80114F34 = D_80114F34 + D_80194846; - D_80114F38 = D_80114F38 + D_80194848; - D_80114F24 = D_80114F24 + D_80194844; - D_80114F28 = D_80114F28 + D_80194846; - D_80114F2C = D_80114F2C + D_80194848; - func_8012A4BC(); - } - D_80194988 = 0; - } -} - - - -extern void (*D_80182468[])(void); - -void func_8017BE60(void *a0) { - D_80182468[*(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) */ diff --git a/src/ov_SC06_015/ov_SC06_015_jr_8017AE2C.c b/src/ov_SC06_015/ov_SC06_015_jr_8017AE2C.c new file mode 100644 index 000000000..e2f16382e --- /dev/null +++ b/src/ov_SC06_015/ov_SC06_015_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80180FC0; +extern u8 D_80180F30; +extern u8 D_80180F0C; +extern u8 D_80180EE8; +extern u8 D_80180F9C; +extern u8 D_80180F78; +extern u8 D_80180F54; +extern u8 D_80180EC4; +extern void func_80145934(void); +extern u8 D_80181050; +extern u8 D_8018102C; +extern u8 D_80181008; +extern u8 D_80180FE4; +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_80180448[]; +extern unsigned char D_80180478[]; +extern unsigned char D_801804C8[]; +extern unsigned char D_801804F8[]; +extern unsigned char D_80180528[]; +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(void); +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_80180578[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80180640[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801806C8[]; +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_801806D0; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801936B8; +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_801936BC; +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_80180700; +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 void 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_801807A8[])(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_801807CC[])(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_801807BC; +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_801807E0[])(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_801807EC[]; +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_801807FC[])(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_80180814[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180804; +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_80180828[])(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_80180844[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80180834; +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_80180858[])(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_8018086C[])(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_80180880; +extern void (*D_801808A8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80180888; +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_801808F4[])(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_801808F8[])(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(void *a0); +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_80180D5C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80180D6C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801936F0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180D94[])(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_80180D74; +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_80180D84; +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_80180DD4[])(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_80180DDC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180DA8; +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_80180DE8[])(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_80180DB8; +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_801936F8; +extern s32 D_80193704; +extern s32 D_80193708; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180E24[])(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_80180DF8[]; +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_80193700; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80181074[])(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_80180E94[]; +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_80181118[])(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_8018126C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80181088; +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_80181274[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80181098; +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_801810B8; +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_8018127C[])(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(void); +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_801812A4[])(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_801812B0[])(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_80181124[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80181354; +extern void func_8015D380(s32 a0); +extern unsigned char D_80180438[]; +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_80181368[]; +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_801813A4[]; +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_801813EC; +extern u16 D_801813EE; +extern u16 D_801813F0; +extern s32 D_801813F4; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_801813FC; +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_80181108; +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_80181480[]; +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_80181530[])(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_80181560[]; +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_801815C4; +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_80193710[]; +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_801815E8[])(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_80193768[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80181630[])(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_80181620; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_80192FC8[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_80181638[])(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_8018168C[])(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_80181654; +extern s16 D_80181688; +extern s16 D_80181686; +extern s16 D_80181684; +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_80181698[])(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_801937C8; +extern u8 D_801937C9; +extern u8 D_801937CA; +extern u8 D_801937CB; +extern u8 D_801937CC; +extern u8 D_801937CD; +extern u8 D_801937CE; +extern u8 D_801937CF; +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_801816A8[])(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_80193808; +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_801816EC[])(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_80181768[]; +extern s32 D_80181788[]; +extern u8 D_80181804[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80181824[]; +extern u8 D_80181844[]; +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_801818E0[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018195C[])(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_80192FD8; +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_80181968[])(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_80181970[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80181A38[])(void); +extern void func_80166618(void *a0); +extern void (*D_80181A48[])(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_80181A58[])(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_80181A64[])(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_801819C4[]; +extern u8 D_801819D8[]; +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_80181A7C[])(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_80181A84[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80181A8C[])(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_80181A94[])(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_80181A9C[])(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_80181AA4[])(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_80181AAC[])(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_80181B60[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80181B68[])(void); +extern void func_80169F00(void *a0); +extern char D_80181B18[]; +extern char D_80181AD8[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80181BA0[])(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_80181BAC[])(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_80181BF4[])(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_80181C70[])(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_80193B28; +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_80181C64[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80181CA8[]; +extern unsigned short D_80181CB0[]; +extern unsigned short D_80181CB8[]; +extern unsigned char D_80193B30[]; +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_80193B28; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80181CC0[])(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_80193C64; +extern M2C_UNK D_80193C68; +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_80193BF0; +extern void (*D_80181CF0[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80193C6C[]; +extern u8 D_80193C74[]; +extern u8 D_80193C24[]; +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_80181CF8[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80181D14[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80181D1C[])(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_80181D84[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80181D28; +extern u8 D_80181D34; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80181DB8[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80181DC0[])(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_80181E14[])(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_80181E48[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80181E38[]; +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_80181E64; +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); +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_80181EDC[])(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_80181EE4[])(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_80181EEC[])(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_80181EF4[])(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_80181EFC[])(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_80181F04[])(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_80181F10[])(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_80181F1C[])(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_80181F28[])(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_80181F38[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80181F48[])(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_80181F50[])(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_80181F58[])(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_80181F60[])(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_80181F68[])(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_80181F70[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80181F78[])(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_80181F80[])(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_80181F88[])(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_80181F90[])(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_80181F98[])(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_80181FA0[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80181FA8[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80181FB0[])(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_80181FB8[])(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_80181FC0[])(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_80181FC8[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80181FD0[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80181FD8[])(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_80181FE0[])(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_80181FE8[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80181FF0[])(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_80181FF8[])(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_8018203C[])(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_80182000; +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_8018206C[])(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_801820A8[])(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(s32); +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_80182100[])(); +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_80182110[])(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_80182118[])(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_80182280[])(); +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_8018228C[])(); +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_80193220; +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 int func_801789AC(void); +extern s16 D_80194988; +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_801943A8; +extern short D_801949FC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801947D4; +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_801947FC; +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_801947B8; +extern s32 func_8017A3B0(void); +extern short D_801947F4; +extern short D_801947F0; +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_80194958; +extern s16 D_8019495A; +extern s16 D_80194964; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_80194958; + + 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_80194964); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_80194958+0xC == &D_80194964; 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_80194958 + 0xC)) < 0x101) { + D_80194958 = 0; + D_8019495A = 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_80194964); + 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_80194958 + 0xC)) < 0x101) { + D_80194958 = 0; + D_8019495A = 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_80194834; + extern s16 D_80194836; + extern s16 D_80194838; + extern s16 D_8019482C; + extern s16 D_8019482E; + extern s16 D_80194830; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80194834, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80194836, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80194838, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019482C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019482E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80194830, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801947BC; +extern u16 D_8019483C; +extern u16 D_8019483E; +extern u16 D_80194840; +extern s16 D_80194988; + +void func_8017B1D8(void) { + func_8012A418(); + D_80194988 = 0; + D_801947BC = 0; + D_8019483C = D_80126B5E; + D_8019483E = D_80126B62; + D_80194840 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_801823C8[]; + extern s16 D_80194834; + extern s16 D_8019482C; + 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_801823C8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801823C8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80194834; + s16 *p78C = &D_8019482C; + *(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_80194988 = 1; + D_801947BC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801947DC; + extern SV4_8017B368 D_801947E4; + extern s16 D_80194834; + extern s16 D_8019482C; + extern u16 D_801823C8; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801947DC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801947E4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_801823C8)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_801823C8)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_80194834) = loc0; + (*(SV4_8017B368 *)&D_8019482C) = loc1; + D_80194988 = 1; + D_801947BC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_801823C8[]; + extern s16 D_80194834; + extern s16 D_80194836; + extern s16 D_80194838; + extern s16 D_8019482C; + extern s16 D_8019482E; + extern s16 D_80194830; + 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_801823C8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801823C8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80194834; + s16 *p78C = &D_8019482C; + *(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_80194836; + v798 = D_80194838; + v78C = *p78C; + v78E = D_8019482E; + v790 = D_80194830; + __asm__ __volatile__(""); + D_80194988 = 1; + D_801947BC = 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_801947BC; +extern s16 D_80194834; +extern s16 D_80194836; +extern s16 D_80194838; +extern s16 D_8019482C; +extern s16 D_8019482E; +extern s16 D_80194830; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801947BC = 0; + D_80194834 = (s16) D_80114F30; + D_80194836 = (s16) D_80114F34; + D_80194838 = (s16) D_80114F38; + D_8019482C = (s16) D_80114F24; + D_8019482E = (s16) D_80114F28; + D_80194830 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8019484C; +extern s16 D_8019484E; +extern s16 D_80194850; +extern s16 D_80194854; +extern s16 D_80194856; +extern s16 D_80194858; + +void func_8017B824(void) { + D_8019484C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8019484E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_80194850 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_80194854 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_80194856 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_80194858 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8019484C; +extern s16 D_8019484E; +extern s16 D_80194850; +extern s16 D_80194854; +extern s16 D_80194856; +extern s16 D_80194858; + +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_8019484C; + D_80114F34 = D_8019484E; + D_80114F38 = D_80194850; + D_80114F24 = D_80194854; + D_80114F28 = D_80194856; + D_80114F2C = D_80194858; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_80194834), src[8..15] -> (*(S8_8017B8E8 *)&D_8019482C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_80194834) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8019482C) = ((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_8019483C; +extern u16 D_8019483E; +extern u16 D_80194840; + +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_801947BC; +extern short D_80194844; +extern short D_80194846; +extern short D_80194848; +extern s16 D_80194834; +extern s16 D_80194836; +extern s16 D_80194838; +extern s16 D_8019482C; +extern s16 D_8019482E; +extern s16 D_80194830; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019483C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019483E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80194840); + (*(s16 *)&D_80194844) = buf[0]; + (*(s16 *)&D_80194846) = buf[1]; + (*(s16 *)&D_80194848) = buf[2]; + D_80194834 = D_80114F30 + buf[0]; + D_801947BC = 0; + D_80194836 = D_80114F34 + buf[1]; + D_80194838 = D_80114F38 + buf[2]; + D_8019482C = D_80114F24 + buf[0]; + D_8019482E = D_80114F28 + buf[1]; + D_80194830 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801947DC; +extern SV4 D_801947E4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801947E4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801947DC = 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_801947E4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801947E4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801947DC) = 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_801947E4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_80194804[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_80194804; + 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_801947BC; +extern s16 D_80194988; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801947BC = D_801947BC + 1; + if (D_801947BC >= 0x1F) { + D_80194988 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801947BC; +extern s16 D_80194988; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801947BC = D_801947BC + 1; + if (0x18 < D_801947BC) { + func_8012A4BC(); + D_80194988 = 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_801947BC; +extern void (*D_80194800)(void); +extern short D_80194844; +extern short D_80194846; +extern short D_80194848; +extern s16 D_80194988; + +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_801947BC = D_801947BC + 1; + if (D_801947BC >= 0x19) { + if (D_80194800 != 0) { + (*D_80194800)(); + } else { + D_80114F30 = D_80114F30 + D_80194844; + D_80114F34 = D_80114F34 + D_80194846; + D_80114F38 = D_80114F38 + D_80194848; + D_80114F24 = D_80114F24 + D_80194844; + D_80114F28 = D_80114F28 + D_80194846; + D_80114F2C = D_80114F2C + D_80194848; + func_8012A4BC(); + } + D_80194988 = 0; + } +} + + + +extern void (*D_80182468[])(void); + +void func_8017BE60(void *a0) { + D_80182468[*(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) */ + diff --git a/src/ov_SC06_016/ov_SC06_016_jr_8017A4AC.c b/src/ov_SC06_016/ov_SC06_016_jr_8017A4AC.c index b724befa8..3f8b2c24b 100644 --- a/src/ov_SC06_016/ov_SC06_016_jr_8017A4AC.c +++ b/src/ov_SC06_016/ov_SC06_016_jr_8017A4AC.c @@ -2946,604 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8019F604; - extern s16 D_8019F606; - extern s16 D_8019F608; - extern s16 D_8019F5FC; - extern s16 D_8019F5FE; - extern s16 D_8019F600; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019F604, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019F606, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019F608, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019F5FC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019F5FE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019F600, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8019F58C; -extern u16 D_8019F60C; -extern u16 D_8019F60E; -extern u16 D_8019F610; -extern s16 D_801A01F8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801A01F8 = 0; - D_8019F58C = 0; - D_8019F60C = D_80126B5E; - D_8019F60E = D_80126B62; - D_8019F610 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_801887D8[]; - extern s16 D_8019F604; - extern s16 D_8019F5FC; - 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_801887D8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801887D8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019F604; - s16 *p78C = &D_8019F5FC; - *(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_801A01F8 = 1; - D_8019F58C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019F5AC; - extern SV4_8017B368 D_8019F5B4; - extern s16 D_8019F604; - extern s16 D_8019F5FC; - extern u16 D_801887D8; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8019F5AC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8019F5B4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_801887D8)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_801887D8)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8019F604) = loc0; - (*(SV4_8017B368 *)&D_8019F5FC) = loc1; - D_801A01F8 = 1; - D_8019F58C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_801887D8[]; - extern s16 D_8019F604; - extern s16 D_8019F606; - extern s16 D_8019F608; - extern s16 D_8019F5FC; - extern s16 D_8019F5FE; - extern s16 D_8019F600; - 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_801887D8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801887D8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019F604; - s16 *p78C = &D_8019F5FC; - *(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_8019F606; - v798 = D_8019F608; - v78C = *p78C; - v78E = D_8019F5FE; - v790 = D_8019F600; - __asm__ __volatile__(""); - D_801A01F8 = 1; - D_8019F58C = 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_8019F58C; -extern s16 D_8019F604; -extern s16 D_8019F606; -extern s16 D_8019F608; -extern s16 D_8019F5FC; -extern s16 D_8019F5FE; -extern s16 D_8019F600; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8019F58C = 0; - D_8019F604 = (s16) D_80114F30; - D_8019F606 = (s16) D_80114F34; - D_8019F608 = (s16) D_80114F38; - D_8019F5FC = (s16) D_80114F24; - D_8019F5FE = (s16) D_80114F28; - D_8019F600 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8019F61C; -extern s16 D_8019F61E; -extern s16 D_8019F620; -extern s16 D_8019F624; -extern s16 D_8019F626; -extern s16 D_8019F628; - -void func_8017B824(void) { - D_8019F61C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8019F61E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8019F620 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8019F624 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8019F626 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8019F628 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8019F61C; -extern s16 D_8019F61E; -extern s16 D_8019F620; -extern s16 D_8019F624; -extern s16 D_8019F626; -extern s16 D_8019F628; - -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_8019F61C; - D_80114F34 = D_8019F61E; - D_80114F38 = D_8019F620; - D_80114F24 = D_8019F624; - D_80114F28 = D_8019F626; - D_80114F2C = D_8019F628; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8019F604), src[8..15] -> (*(S8_8017B8E8 *)&D_8019F5FC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8019F604) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8019F5FC) = ((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_8019F60C; -extern u16 D_8019F60E; -extern u16 D_8019F610; - -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_8019F58C; -extern short D_8019F614; -extern short D_8019F616; -extern short D_8019F618; -extern s16 D_8019F604; -extern s16 D_8019F606; -extern s16 D_8019F608; -extern s16 D_8019F5FC; -extern s16 D_8019F5FE; -extern s16 D_8019F600; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019F60C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019F60E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019F610); - (*(s16 *)&D_8019F614) = buf[0]; - (*(s16 *)&D_8019F616) = buf[1]; - (*(s16 *)&D_8019F618) = buf[2]; - D_8019F604 = D_80114F30 + buf[0]; - D_8019F58C = 0; - D_8019F606 = D_80114F34 + buf[1]; - D_8019F608 = D_80114F38 + buf[2]; - D_8019F5FC = D_80114F24 + buf[0]; - D_8019F5FE = D_80114F28 + buf[1]; - D_8019F600 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8019F5AC; -extern SV4 D_8019F5B4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019F5B4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8019F5AC = 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_8019F5B4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019F5B4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8019F5AC) = 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_8019F5B4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8019F5D4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8019F5D4; - 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_8019F58C; -extern s16 D_801A01F8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8019F58C = D_8019F58C + 1; - if (D_8019F58C >= 0x1F) { - D_801A01F8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8019F58C; -extern s16 D_801A01F8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8019F58C = D_8019F58C + 1; - if (0x18 < D_8019F58C) { - func_8012A4BC(); - D_801A01F8 = 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_8019F58C; -extern void (*D_8019F5D0)(void); -extern short D_8019F614; -extern short D_8019F616; -extern short D_8019F618; -extern s16 D_801A01F8; - -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_8019F58C = D_8019F58C + 1; - if (D_8019F58C >= 0x19) { - if (D_8019F5D0 != 0) { - (*D_8019F5D0)(); - } else { - D_80114F30 = D_80114F30 + D_8019F614; - D_80114F34 = D_80114F34 + D_8019F616; - D_80114F38 = D_80114F38 + D_8019F618; - D_80114F24 = D_80114F24 + D_8019F614; - D_80114F28 = D_80114F28 + D_8019F616; - D_80114F2C = D_80114F2C + D_8019F618; - func_8012A4BC(); - } - D_801A01F8 = 0; - } -} - - - -extern void (*D_80188878[])(void); - -void func_8017BE60(void *a0) { - D_80188878[*(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) */ - -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017A4AC", func_8017BEE0); - - - -extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); - void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3) { - ((void (*)(void *, void *, s32, s32))func_8017BF34)(a0, a1, (s16)a2, (s16)a3); - } - - -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017A4AC", func_8017BF34); - -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017A4AC", func_8017BFBC); - -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017A4AC", func_8017C010); - -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017A4AC", func_8017C068); - - -extern void (*D_801888D8[])(void); - -void func_8017C114(void *a0) { - D_801888D8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017A4AC", func_8017C150); - -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017A4AC", func_8017C43C); diff --git a/src/ov_SC06_016/ov_SC06_016_jr_8017AE2C.c b/src/ov_SC06_016/ov_SC06_016_jr_8017AE2C.c new file mode 100644 index 000000000..983bcbfba --- /dev/null +++ b/src/ov_SC06_016/ov_SC06_016_jr_8017AE2C.c @@ -0,0 +1,3481 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801873D0; +extern u8 D_80187340; +extern u8 D_8018731C; +extern u8 D_801872F8; +extern u8 D_801873AC; +extern u8 D_80187388; +extern u8 D_80187364; +extern u8 D_801872D4; +extern void func_80145934(void); +extern u8 D_80187460; +extern u8 D_8018743C; +extern u8 D_80187418; +extern u8 D_801873F4; +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_80186858[]; +extern unsigned char D_80186888[]; +extern unsigned char D_801868D8[]; +extern unsigned char D_80186908[]; +extern unsigned char D_80186938[]; +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(void); +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_80186988[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80186A50[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80186AD8[]; +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_80186AE0; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8019E488; +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_8019E48C; +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_80186B10; +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 void 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_80186BB8[])(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_80186BDC[])(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_80186BCC; +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_80186BF0[])(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_80186BFC[]; +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_80186C0C[])(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_80186C24[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80186C14; +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_80186C38[])(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_80186C54[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80186C44; +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_80186C68[])(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_80186C7C[])(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_80186C90; +extern void (*D_80186CB8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80186C98; +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_80186D04[])(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_80186D08[])(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(void *a0); +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_8018716C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018717C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8019E4C0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801871A4[])(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_80187184; +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_80187194; +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_801871E4[])(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_801871EC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801871B8; +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_801871F8[])(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_801871C8; +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_8019E4C8; +extern s32 D_8019E4D4; +extern s32 D_8019E4D8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80187234[])(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_80187208[]; +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_8019E4D0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80187484[])(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_801872A4[]; +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_80187528[])(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_8018767C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80187498; +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_80187684[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801874A8; +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_801874C8; +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_8018768C[])(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(void); +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_801876B4[])(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_801876C0[])(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_80187534[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80187764; +extern void func_8015D380(s32 a0); +extern unsigned char D_80186848[]; +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_80187778[]; +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_801877B4[]; +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_801877FC; +extern u16 D_801877FE; +extern u16 D_80187800; +extern s32 D_80187804; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018780C; +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_80187518; +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_80187890[]; +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_80187940[])(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_80187970[]; +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_801879D4; +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_8019E4E0[]; +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_801879F8[])(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_8019E538[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80187A40[])(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_80187A30; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8019DC10[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_80187A48[])(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_80187A9C[])(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_80187A64; +extern s16 D_80187A98; +extern s16 D_80187A96; +extern s16 D_80187A94; +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_80187AA8[])(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_8019E598; +extern u8 D_8019E599; +extern u8 D_8019E59A; +extern u8 D_8019E59B; +extern u8 D_8019E59C; +extern u8 D_8019E59D; +extern u8 D_8019E59E; +extern u8 D_8019E59F; +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_80187AB8[])(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_8019E5D8; +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_80187AFC[])(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_80187B78[]; +extern s32 D_80187B98[]; +extern u8 D_80187C14[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80187C34[]; +extern u8 D_80187C54[]; +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_80187CF0[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80187D6C[])(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_8019DC20; +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_80187D78[])(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_80187D80[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80187E48[])(void); +extern void func_80166618(void *a0); +extern void (*D_80187E58[])(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_80187E68[])(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_80187E74[])(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_80187DD4[]; +extern u8 D_80187DE8[]; +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_80187E8C[])(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_80187E94[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80187E9C[])(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_80187EA4[])(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_80187EAC[])(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_80187EB4[])(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_80187EBC[])(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_80187F70[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80187F78[])(void); +extern void func_80169F00(void *a0); +extern char D_80187F28[]; +extern char D_80187EE8[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80187FB0[])(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_80187FBC[])(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_80188004[])(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_80188080[])(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_8019E8F8; +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_80188074[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_801880B8[]; +extern unsigned short D_801880C0[]; +extern unsigned short D_801880C8[]; +extern unsigned char D_8019E900[]; +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_8019E8F8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801880D0[])(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_8019EA34; +extern M2C_UNK D_8019EA38; +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_8019E9C0; +extern void (*D_80188100[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8019EA3C[]; +extern u8 D_8019EA44[]; +extern u8 D_8019E9F4[]; +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_80188108[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80188124[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018812C[])(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_80188194[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80188138; +extern u8 D_80188144; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801881C8[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801881D0[])(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_80188224[])(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_80188258[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80188248[]; +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_80188274; +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); +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_801882EC[])(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_801882F4[])(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_801882FC[])(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_80188304[])(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_8018830C[])(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_80188314[])(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_80188320[])(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_8018832C[])(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_80188338[])(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_80188348[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80188358[])(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_80188360[])(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_80188368[])(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_80188370[])(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_80188378[])(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_80188380[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80188388[])(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_80188390[])(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_80188398[])(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_801883A0[])(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_801883A8[])(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_801883B0[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801883B8[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801883C0[])(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_801883C8[])(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_801883D0[])(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_801883D8[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801883E0[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801883E8[])(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_801883F0[])(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_801883F8[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80188400[])(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_80188408[])(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_8018844C[])(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_80188410; +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_8018847C[])(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_801884B8[])(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(s32); +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_80188510[])(); +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_80188520[])(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_80188528[])(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_80188690[])(); +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_8018869C[])(); +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_8019DE68; +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 int func_801789AC(void); +extern s16 D_801A01F8; +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_8019F178; +extern short D_801A026C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8019F5A4; +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_8019F5CC; +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_8019F588; +extern s32 func_8017A3B0(void); +extern short D_8019F5C4; +extern short D_8019F5C0; +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_801A01C8; +extern s16 D_801A01CA; +extern s16 D_801A01D4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801A01C8; + + 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_801A01D4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801A01C8+0xC == &D_801A01D4; 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_801A01C8 + 0xC)) < 0x101) { + D_801A01C8 = 0; + D_801A01CA = 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_801A01D4); + 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_801A01C8 + 0xC)) < 0x101) { + D_801A01C8 = 0; + D_801A01CA = 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_8019F604; + extern s16 D_8019F606; + extern s16 D_8019F608; + extern s16 D_8019F5FC; + extern s16 D_8019F5FE; + extern s16 D_8019F600; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019F604, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019F606, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019F608, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019F5FC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019F5FE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019F600, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8019F58C; +extern u16 D_8019F60C; +extern u16 D_8019F60E; +extern u16 D_8019F610; +extern s16 D_801A01F8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801A01F8 = 0; + D_8019F58C = 0; + D_8019F60C = D_80126B5E; + D_8019F60E = D_80126B62; + D_8019F610 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_801887D8[]; + extern s16 D_8019F604; + extern s16 D_8019F5FC; + 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_801887D8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801887D8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019F604; + s16 *p78C = &D_8019F5FC; + *(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_801A01F8 = 1; + D_8019F58C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019F5AC; + extern SV4_8017B368 D_8019F5B4; + extern s16 D_8019F604; + extern s16 D_8019F5FC; + extern u16 D_801887D8; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8019F5AC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8019F5B4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_801887D8)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_801887D8)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8019F604) = loc0; + (*(SV4_8017B368 *)&D_8019F5FC) = loc1; + D_801A01F8 = 1; + D_8019F58C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_801887D8[]; + extern s16 D_8019F604; + extern s16 D_8019F606; + extern s16 D_8019F608; + extern s16 D_8019F5FC; + extern s16 D_8019F5FE; + extern s16 D_8019F600; + 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_801887D8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801887D8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019F604; + s16 *p78C = &D_8019F5FC; + *(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_8019F606; + v798 = D_8019F608; + v78C = *p78C; + v78E = D_8019F5FE; + v790 = D_8019F600; + __asm__ __volatile__(""); + D_801A01F8 = 1; + D_8019F58C = 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_8019F58C; +extern s16 D_8019F604; +extern s16 D_8019F606; +extern s16 D_8019F608; +extern s16 D_8019F5FC; +extern s16 D_8019F5FE; +extern s16 D_8019F600; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8019F58C = 0; + D_8019F604 = (s16) D_80114F30; + D_8019F606 = (s16) D_80114F34; + D_8019F608 = (s16) D_80114F38; + D_8019F5FC = (s16) D_80114F24; + D_8019F5FE = (s16) D_80114F28; + D_8019F600 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8019F61C; +extern s16 D_8019F61E; +extern s16 D_8019F620; +extern s16 D_8019F624; +extern s16 D_8019F626; +extern s16 D_8019F628; + +void func_8017B824(void) { + D_8019F61C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8019F61E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8019F620 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8019F624 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8019F626 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8019F628 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8019F61C; +extern s16 D_8019F61E; +extern s16 D_8019F620; +extern s16 D_8019F624; +extern s16 D_8019F626; +extern s16 D_8019F628; + +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_8019F61C; + D_80114F34 = D_8019F61E; + D_80114F38 = D_8019F620; + D_80114F24 = D_8019F624; + D_80114F28 = D_8019F626; + D_80114F2C = D_8019F628; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8019F604), src[8..15] -> (*(S8_8017B8E8 *)&D_8019F5FC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8019F604) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8019F5FC) = ((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_8019F60C; +extern u16 D_8019F60E; +extern u16 D_8019F610; + +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_8019F58C; +extern short D_8019F614; +extern short D_8019F616; +extern short D_8019F618; +extern s16 D_8019F604; +extern s16 D_8019F606; +extern s16 D_8019F608; +extern s16 D_8019F5FC; +extern s16 D_8019F5FE; +extern s16 D_8019F600; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019F60C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019F60E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019F610); + (*(s16 *)&D_8019F614) = buf[0]; + (*(s16 *)&D_8019F616) = buf[1]; + (*(s16 *)&D_8019F618) = buf[2]; + D_8019F604 = D_80114F30 + buf[0]; + D_8019F58C = 0; + D_8019F606 = D_80114F34 + buf[1]; + D_8019F608 = D_80114F38 + buf[2]; + D_8019F5FC = D_80114F24 + buf[0]; + D_8019F5FE = D_80114F28 + buf[1]; + D_8019F600 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8019F5AC; +extern SV4 D_8019F5B4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019F5B4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8019F5AC = 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_8019F5B4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019F5B4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8019F5AC) = 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_8019F5B4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8019F5D4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8019F5D4; + 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_8019F58C; +extern s16 D_801A01F8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8019F58C = D_8019F58C + 1; + if (D_8019F58C >= 0x1F) { + D_801A01F8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8019F58C; +extern s16 D_801A01F8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8019F58C = D_8019F58C + 1; + if (0x18 < D_8019F58C) { + func_8012A4BC(); + D_801A01F8 = 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_8019F58C; +extern void (*D_8019F5D0)(void); +extern short D_8019F614; +extern short D_8019F616; +extern short D_8019F618; +extern s16 D_801A01F8; + +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_8019F58C = D_8019F58C + 1; + if (D_8019F58C >= 0x19) { + if (D_8019F5D0 != 0) { + (*D_8019F5D0)(); + } else { + D_80114F30 = D_80114F30 + D_8019F614; + D_80114F34 = D_80114F34 + D_8019F616; + D_80114F38 = D_80114F38 + D_8019F618; + D_80114F24 = D_80114F24 + D_8019F614; + D_80114F28 = D_80114F28 + D_8019F616; + D_80114F2C = D_80114F2C + D_8019F618; + func_8012A4BC(); + } + D_801A01F8 = 0; + } +} + + + +extern void (*D_80188878[])(void); + +void func_8017BE60(void *a0) { + D_80188878[*(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) */ + +INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017AE2C", func_8017BEE0); + + + +extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); + void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3) { + ((void (*)(void *, void *, s32, s32))func_8017BF34)(a0, a1, (s16)a2, (s16)a3); + } + + +INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017AE2C", func_8017BF34); + +INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017AE2C", func_8017BFBC); + +INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017AE2C", func_8017C010); + +INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017AE2C", func_8017C068); + + +extern void (*D_801888D8[])(void); + +void func_8017C114(void *a0) { + D_801888D8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017AE2C", func_8017C150); + +INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017AE2C", func_8017C43C); + diff --git a/src/ov_SC06_018/ov_SC06_018_jr_8017A4AC.c b/src/ov_SC06_018/ov_SC06_018_jr_8017A4AC.c index 242c60f3b..6741c2fd9 100644 --- a/src/ov_SC06_018/ov_SC06_018_jr_8017A4AC.c +++ b/src/ov_SC06_018/ov_SC06_018_jr_8017A4AC.c @@ -2946,590 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801D4EEC; - extern s16 D_801D4EEE; - extern s16 D_801D4EF0; - extern s16 D_801D4EE4; - extern s16 D_801D4EE6; - extern s16 D_801D4EE8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D4EEC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D4EEE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D4EF0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D4EE4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D4EE6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D4EE8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801D4E74; -extern u16 D_801D4EF4; -extern u16 D_801D4EF6; -extern u16 D_801D4EF8; -extern s16 D_801D5B28; - -void func_8017B1D8(void) { - func_8012A418(); - D_801D5B28 = 0; - D_801D4E74 = 0; - D_801D4EF4 = D_80126B5E; - D_801D4EF6 = D_80126B62; - D_801D4EF8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80196F14[]; - extern s16 D_801D4EEC; - extern s16 D_801D4EE4; - 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_80196F14[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80196F14[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D4EEC; - s16 *p78C = &D_801D4EE4; - *(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_801D5B28 = 1; - D_801D4E74 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D4E94; - extern SV4_8017B368 D_801D4E9C; - extern s16 D_801D4EEC; - extern s16 D_801D4EE4; - extern u16 D_80196F14; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801D4E94; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801D4E9C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80196F14)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80196F14)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801D4EEC) = loc0; - (*(SV4_8017B368 *)&D_801D4EE4) = loc1; - D_801D5B28 = 1; - D_801D4E74 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80196F14[]; - extern s16 D_801D4EEC; - extern s16 D_801D4EEE; - extern s16 D_801D4EF0; - extern s16 D_801D4EE4; - extern s16 D_801D4EE6; - extern s16 D_801D4EE8; - 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_80196F14[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80196F14[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D4EEC; - s16 *p78C = &D_801D4EE4; - *(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_801D4EEE; - v798 = D_801D4EF0; - v78C = *p78C; - v78E = D_801D4EE6; - v790 = D_801D4EE8; - __asm__ __volatile__(""); - D_801D5B28 = 1; - D_801D4E74 = 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_801D4E74; -extern s16 D_801D4EEC; -extern s16 D_801D4EEE; -extern s16 D_801D4EF0; -extern s16 D_801D4EE4; -extern s16 D_801D4EE6; -extern s16 D_801D4EE8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801D4E74 = 0; - D_801D4EEC = (s16) D_80114F30; - D_801D4EEE = (s16) D_80114F34; - D_801D4EF0 = (s16) D_80114F38; - D_801D4EE4 = (s16) D_80114F24; - D_801D4EE6 = (s16) D_80114F28; - D_801D4EE8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801D4F04; -extern s16 D_801D4F06; -extern s16 D_801D4F08; -extern s16 D_801D4F0C; -extern s16 D_801D4F0E; -extern s16 D_801D4F10; - -void func_8017B824(void) { - D_801D4F04 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801D4F06 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801D4F08 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801D4F0C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801D4F0E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801D4F10 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801D4F04; -extern s16 D_801D4F06; -extern s16 D_801D4F08; -extern s16 D_801D4F0C; -extern s16 D_801D4F0E; -extern s16 D_801D4F10; - -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_801D4F04; - D_80114F34 = D_801D4F06; - D_80114F38 = D_801D4F08; - D_80114F24 = D_801D4F0C; - D_80114F28 = D_801D4F0E; - D_80114F2C = D_801D4F10; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801D4EEC), src[8..15] -> (*(S8_8017B8E8 *)&D_801D4EE4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801D4EEC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801D4EE4) = ((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_801D4EF4; -extern u16 D_801D4EF6; -extern u16 D_801D4EF8; - -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_801D4E74; -extern short D_801D4EFC; -extern short D_801D4EFE; -extern short D_801D4F00; -extern s16 D_801D4EEC; -extern s16 D_801D4EEE; -extern s16 D_801D4EF0; -extern s16 D_801D4EE4; -extern s16 D_801D4EE6; -extern s16 D_801D4EE8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D4EF4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D4EF6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D4EF8); - (*(s16 *)&D_801D4EFC) = buf[0]; - (*(s16 *)&D_801D4EFE) = buf[1]; - (*(s16 *)&D_801D4F00) = buf[2]; - D_801D4EEC = D_80114F30 + buf[0]; - D_801D4E74 = 0; - D_801D4EEE = D_80114F34 + buf[1]; - D_801D4EF0 = D_80114F38 + buf[2]; - D_801D4EE4 = D_80114F24 + buf[0]; - D_801D4EE6 = D_80114F28 + buf[1]; - D_801D4EE8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801D4E94; -extern SV4 D_801D4E9C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D4E9C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801D4E94 = 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_801D4E9C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D4E9C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801D4E94) = 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_801D4E9C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801D4EBC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801D4EBC; - 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_801D4E74; -extern s16 D_801D5B28; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801D4E74 = D_801D4E74 + 1; - if (D_801D4E74 >= 0x1F) { - D_801D5B28 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801D4E74; -extern s16 D_801D5B28; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801D4E74 = D_801D4E74 + 1; - if (0x18 < D_801D4E74) { - func_8012A4BC(); - D_801D5B28 = 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_801D4E74; -extern void (*D_801D4EB8)(void); -extern short D_801D4EFC; -extern short D_801D4EFE; -extern short D_801D4F00; -extern s16 D_801D5B28; - -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_801D4E74 = D_801D4E74 + 1; - if (D_801D4E74 >= 0x19) { - if (D_801D4EB8 != 0) { - (*D_801D4EB8)(); - } else { - D_80114F30 = D_80114F30 + D_801D4EFC; - D_80114F34 = D_80114F34 + D_801D4EFE; - D_80114F38 = D_80114F38 + D_801D4F00; - D_80114F24 = D_80114F24 + D_801D4EFC; - D_80114F28 = D_80114F28 + D_801D4EFE; - D_80114F2C = D_80114F2C + D_801D4F00; - func_8012A4BC(); - } - D_801D5B28 = 0; - } -} - - - -extern void (*D_80196FB4[])(void); - -void func_8017BE60(void *a0) { - D_80196FB4[*(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 (*D_80196FCC[])(void); - -void func_8017BEBC(void *a0) { - D_80196FCC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017A4AC", func_8017BEF8); - -DEFINE_func_8017C090() /* dedup: shared engine-core @0x8017C090 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017A4AC", func_8017C0A4); - -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017A4AC", func_8017C120); - -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017A4AC", func_8017C1DC); diff --git a/src/ov_SC06_018/ov_SC06_018_jr_8017AE2C.c b/src/ov_SC06_018/ov_SC06_018_jr_8017AE2C.c new file mode 100644 index 000000000..c97f5bdc6 --- /dev/null +++ b/src/ov_SC06_018/ov_SC06_018_jr_8017AE2C.c @@ -0,0 +1,3467 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80195B0C; +extern u8 D_80195A7C; +extern u8 D_80195A58; +extern u8 D_80195A34; +extern u8 D_80195AE8; +extern u8 D_80195AC4; +extern u8 D_80195AA0; +extern u8 D_80195A10; +extern void func_80145934(void); +extern u8 D_80195B9C; +extern u8 D_80195B78; +extern u8 D_80195B54; +extern u8 D_80195B30; +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_80194F94[]; +extern unsigned char D_80194FC4[]; +extern unsigned char D_80195014[]; +extern unsigned char D_80195044[]; +extern unsigned char D_80195074[]; +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(void); +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_801950C4[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8019518C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80195214[]; +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_8019521C; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801D3D70; +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_801D3D74; +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_8019524C; +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 void 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_801952F4[])(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_80195318[])(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_80195308; +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_8019532C[])(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_80195338[]; +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_80195348[])(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_80195360[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80195350; +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_80195374[])(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_80195390[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80195380; +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_801953A4[])(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_801953B8[])(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_801953CC; +extern void (*D_801953F4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801953D4; +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_80195440[])(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_80195444[])(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(void *a0); +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_801958A8[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_801958B8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801D3DA8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801958E0[])(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_801958C0; +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_801958D0; +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_80195920[])(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_80195928[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801958F4; +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_80195934[])(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_80195904; +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_801D3DB0; +extern s32 D_801D3DBC; +extern s32 D_801D3DC0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80195970[])(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_80195944[]; +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_801D3DB8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80195BC0[])(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_801959E0[]; +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_80195C64[])(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_80195DB8[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80195BD4; +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_80195DC0[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80195BE4; +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_80195C04; +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_80195DC8[])(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(void); +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_80195DF0[])(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_80195DFC[])(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_80195C70[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80195EA0; +extern void func_8015D380(s32 a0); +extern unsigned char D_80194F84[]; +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_80195EB4[]; +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_80195EF0[]; +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_80195F38; +extern u16 D_80195F3A; +extern u16 D_80195F3C; +extern s32 D_80195F40; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80195F48; +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_80195C54; +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_80195FCC[]; +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_8019607C[])(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_801960AC[]; +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_80196110; +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_801D3DC8[]; +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_80196134[])(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_801D3E20[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8019617C[])(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_8019616C; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801D34A0[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_80196184[])(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_801961D8[])(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_801961A0; +extern s16 D_801961D4; +extern s16 D_801961D2; +extern s16 D_801961D0; +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_801961E4[])(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_801D3E80; +extern u8 D_801D3E81; +extern u8 D_801D3E82; +extern u8 D_801D3E83; +extern u8 D_801D3E84; +extern u8 D_801D3E85; +extern u8 D_801D3E86; +extern u8 D_801D3E87; +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_801961F4[])(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_801D3EC0; +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_80196238[])(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_801962B4[]; +extern s32 D_801962D4[]; +extern u8 D_80196350[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80196370[]; +extern u8 D_80196390[]; +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_8019642C[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801964A8[])(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_801D34B0; +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_801964B4[])(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_801964BC[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80196584[])(void); +extern void func_80166618(void *a0); +extern void (*D_80196594[])(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_801965A4[])(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_801965B0[])(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_80196510[]; +extern u8 D_80196524[]; +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_801965C8[])(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_801965D0[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_801965D8[])(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_801965E0[])(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_801965E8[])(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_801965F0[])(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_801965F8[])(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_801966AC[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801966B4[])(void); +extern void func_80169F00(void *a0); +extern char D_80196664[]; +extern char D_80196624[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_801966EC[])(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_801966F8[])(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_80196740[])(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_801967BC[])(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_801D41E0; +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_801967B0[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_801967F4[]; +extern unsigned short D_801967FC[]; +extern unsigned short D_80196804[]; +extern unsigned char D_801D41E8[]; +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_801D41E0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8019680C[])(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_801D431C; +extern M2C_UNK D_801D4320; +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_801D42A8; +extern void (*D_8019683C[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801D4324[]; +extern u8 D_801D432C[]; +extern u8 D_801D42DC[]; +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_80196844[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80196860[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80196868[])(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_801968D0[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80196874; +extern u8 D_80196880; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80196904[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8019690C[])(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_80196960[])(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_80196994[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80196984[]; +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_801969B0; +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); +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_80196A28[])(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_80196A30[])(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_80196A38[])(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_80196A40[])(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_80196A48[])(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_80196A50[])(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_80196A5C[])(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_80196A68[])(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_80196A74[])(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_80196A84[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80196A94[])(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_80196A9C[])(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_80196AA4[])(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_80196AAC[])(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_80196AB4[])(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_80196ABC[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80196AC4[])(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_80196ACC[])(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_80196AD4[])(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_80196ADC[])(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_80196AE4[])(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_80196AEC[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80196AF4[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80196AFC[])(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_80196B04[])(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_80196B0C[])(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_80196B14[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80196B1C[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80196B24[])(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_80196B2C[])(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_80196B34[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80196B3C[])(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_80196B44[])(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_80196B88[])(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_80196B4C; +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_80196BB8[])(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_80196BF4[])(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(s32); +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_80196C4C[])(); +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_80196C5C[])(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_80196C64[])(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_80196DCC[])(); +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_80196DD8[])(); +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_801D36F8; +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 int func_801789AC(void); +extern s16 D_801D5B28; +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_801D4A60; +extern short D_801D5B9C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801D4E8C; +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_801D4EB4; +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_801D4E70; +extern s32 func_8017A3B0(void); +extern short D_801D4EAC; +extern short D_801D4EA8; +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_801D5AF8; +extern s16 D_801D5AFA; +extern s16 D_801D5B04; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801D5AF8; + + 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_801D5B04); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801D5AF8+0xC == &D_801D5B04; 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_801D5AF8 + 0xC)) < 0x101) { + D_801D5AF8 = 0; + D_801D5AFA = 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_801D5B04); + 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_801D5AF8 + 0xC)) < 0x101) { + D_801D5AF8 = 0; + D_801D5AFA = 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_801D4EEC; + extern s16 D_801D4EEE; + extern s16 D_801D4EF0; + extern s16 D_801D4EE4; + extern s16 D_801D4EE6; + extern s16 D_801D4EE8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D4EEC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D4EEE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D4EF0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D4EE4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D4EE6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D4EE8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801D4E74; +extern u16 D_801D4EF4; +extern u16 D_801D4EF6; +extern u16 D_801D4EF8; +extern s16 D_801D5B28; + +void func_8017B1D8(void) { + func_8012A418(); + D_801D5B28 = 0; + D_801D4E74 = 0; + D_801D4EF4 = D_80126B5E; + D_801D4EF6 = D_80126B62; + D_801D4EF8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80196F14[]; + extern s16 D_801D4EEC; + extern s16 D_801D4EE4; + 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_80196F14[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80196F14[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D4EEC; + s16 *p78C = &D_801D4EE4; + *(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_801D5B28 = 1; + D_801D4E74 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D4E94; + extern SV4_8017B368 D_801D4E9C; + extern s16 D_801D4EEC; + extern s16 D_801D4EE4; + extern u16 D_80196F14; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801D4E94; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801D4E9C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80196F14)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80196F14)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801D4EEC) = loc0; + (*(SV4_8017B368 *)&D_801D4EE4) = loc1; + D_801D5B28 = 1; + D_801D4E74 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80196F14[]; + extern s16 D_801D4EEC; + extern s16 D_801D4EEE; + extern s16 D_801D4EF0; + extern s16 D_801D4EE4; + extern s16 D_801D4EE6; + extern s16 D_801D4EE8; + 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_80196F14[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80196F14[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D4EEC; + s16 *p78C = &D_801D4EE4; + *(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_801D4EEE; + v798 = D_801D4EF0; + v78C = *p78C; + v78E = D_801D4EE6; + v790 = D_801D4EE8; + __asm__ __volatile__(""); + D_801D5B28 = 1; + D_801D4E74 = 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_801D4E74; +extern s16 D_801D4EEC; +extern s16 D_801D4EEE; +extern s16 D_801D4EF0; +extern s16 D_801D4EE4; +extern s16 D_801D4EE6; +extern s16 D_801D4EE8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801D4E74 = 0; + D_801D4EEC = (s16) D_80114F30; + D_801D4EEE = (s16) D_80114F34; + D_801D4EF0 = (s16) D_80114F38; + D_801D4EE4 = (s16) D_80114F24; + D_801D4EE6 = (s16) D_80114F28; + D_801D4EE8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801D4F04; +extern s16 D_801D4F06; +extern s16 D_801D4F08; +extern s16 D_801D4F0C; +extern s16 D_801D4F0E; +extern s16 D_801D4F10; + +void func_8017B824(void) { + D_801D4F04 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801D4F06 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801D4F08 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801D4F0C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801D4F0E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801D4F10 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801D4F04; +extern s16 D_801D4F06; +extern s16 D_801D4F08; +extern s16 D_801D4F0C; +extern s16 D_801D4F0E; +extern s16 D_801D4F10; + +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_801D4F04; + D_80114F34 = D_801D4F06; + D_80114F38 = D_801D4F08; + D_80114F24 = D_801D4F0C; + D_80114F28 = D_801D4F0E; + D_80114F2C = D_801D4F10; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801D4EEC), src[8..15] -> (*(S8_8017B8E8 *)&D_801D4EE4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801D4EEC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801D4EE4) = ((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_801D4EF4; +extern u16 D_801D4EF6; +extern u16 D_801D4EF8; + +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_801D4E74; +extern short D_801D4EFC; +extern short D_801D4EFE; +extern short D_801D4F00; +extern s16 D_801D4EEC; +extern s16 D_801D4EEE; +extern s16 D_801D4EF0; +extern s16 D_801D4EE4; +extern s16 D_801D4EE6; +extern s16 D_801D4EE8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D4EF4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D4EF6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D4EF8); + (*(s16 *)&D_801D4EFC) = buf[0]; + (*(s16 *)&D_801D4EFE) = buf[1]; + (*(s16 *)&D_801D4F00) = buf[2]; + D_801D4EEC = D_80114F30 + buf[0]; + D_801D4E74 = 0; + D_801D4EEE = D_80114F34 + buf[1]; + D_801D4EF0 = D_80114F38 + buf[2]; + D_801D4EE4 = D_80114F24 + buf[0]; + D_801D4EE6 = D_80114F28 + buf[1]; + D_801D4EE8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801D4E94; +extern SV4 D_801D4E9C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D4E9C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801D4E94 = 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_801D4E9C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D4E9C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801D4E94) = 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_801D4E9C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801D4EBC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801D4EBC; + 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_801D4E74; +extern s16 D_801D5B28; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801D4E74 = D_801D4E74 + 1; + if (D_801D4E74 >= 0x1F) { + D_801D5B28 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801D4E74; +extern s16 D_801D5B28; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801D4E74 = D_801D4E74 + 1; + if (0x18 < D_801D4E74) { + func_8012A4BC(); + D_801D5B28 = 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_801D4E74; +extern void (*D_801D4EB8)(void); +extern short D_801D4EFC; +extern short D_801D4EFE; +extern short D_801D4F00; +extern s16 D_801D5B28; + +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_801D4E74 = D_801D4E74 + 1; + if (D_801D4E74 >= 0x19) { + if (D_801D4EB8 != 0) { + (*D_801D4EB8)(); + } else { + D_80114F30 = D_80114F30 + D_801D4EFC; + D_80114F34 = D_80114F34 + D_801D4EFE; + D_80114F38 = D_80114F38 + D_801D4F00; + D_80114F24 = D_80114F24 + D_801D4EFC; + D_80114F28 = D_80114F28 + D_801D4EFE; + D_80114F2C = D_80114F2C + D_801D4F00; + func_8012A4BC(); + } + D_801D5B28 = 0; + } +} + + + +extern void (*D_80196FB4[])(void); + +void func_8017BE60(void *a0) { + D_80196FB4[*(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 (*D_80196FCC[])(void); + +void func_8017BEBC(void *a0) { + D_80196FCC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017AE2C", func_8017BEF8); + +DEFINE_func_8017C090() /* dedup: shared engine-core @0x8017C090 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017AE2C", func_8017C0A4); + +INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017AE2C", func_8017C120); + +INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017AE2C", func_8017C1DC); + diff --git a/src/ov_SC06_020/ov_SC06_020_jr_8017A4AC.c b/src/ov_SC06_020/ov_SC06_020_jr_8017A4AC.c index 24ab33e4f..bdc033964 100644 --- a/src/ov_SC06_020/ov_SC06_020_jr_8017A4AC.c +++ b/src/ov_SC06_020/ov_SC06_020_jr_8017A4AC.c @@ -2946,590 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801BA704; - extern s16 D_801BA706; - extern s16 D_801BA708; - extern s16 D_801BA6FC; - extern s16 D_801BA6FE; - extern s16 D_801BA700; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801BA704, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801BA706, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801BA708, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801BA6FC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801BA6FE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801BA700, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801BA68C; -extern u16 D_801BA70C; -extern u16 D_801BA70E; -extern u16 D_801BA710; -extern s16 D_801BA978; - -void func_8017B1D8(void) { - func_8012A418(); - D_801BA978 = 0; - D_801BA68C = 0; - D_801BA70C = D_80126B5E; - D_801BA70E = D_80126B62; - D_801BA710 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018899C[]; - extern s16 D_801BA704; - extern s16 D_801BA6FC; - 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_8018899C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018899C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801BA704; - s16 *p78C = &D_801BA6FC; - *(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_801BA978 = 1; - D_801BA68C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801BA6AC; - extern SV4_8017B368 D_801BA6B4; - extern s16 D_801BA704; - extern s16 D_801BA6FC; - extern u16 D_8018899C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801BA6AC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801BA6B4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018899C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018899C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801BA704) = loc0; - (*(SV4_8017B368 *)&D_801BA6FC) = loc1; - D_801BA978 = 1; - D_801BA68C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018899C[]; - extern s16 D_801BA704; - extern s16 D_801BA706; - extern s16 D_801BA708; - extern s16 D_801BA6FC; - extern s16 D_801BA6FE; - extern s16 D_801BA700; - 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_8018899C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018899C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801BA704; - s16 *p78C = &D_801BA6FC; - *(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_801BA706; - v798 = D_801BA708; - v78C = *p78C; - v78E = D_801BA6FE; - v790 = D_801BA700; - __asm__ __volatile__(""); - D_801BA978 = 1; - D_801BA68C = 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_801BA68C; -extern s16 D_801BA704; -extern s16 D_801BA706; -extern s16 D_801BA708; -extern s16 D_801BA6FC; -extern s16 D_801BA6FE; -extern s16 D_801BA700; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801BA68C = 0; - D_801BA704 = (s16) D_80114F30; - D_801BA706 = (s16) D_80114F34; - D_801BA708 = (s16) D_80114F38; - D_801BA6FC = (s16) D_80114F24; - D_801BA6FE = (s16) D_80114F28; - D_801BA700 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801BA71C; -extern s16 D_801BA71E; -extern s16 D_801BA720; -extern s16 D_801BA724; -extern s16 D_801BA726; -extern s16 D_801BA728; - -void func_8017B824(void) { - D_801BA71C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801BA71E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801BA720 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801BA724 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801BA726 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801BA728 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801BA71C; -extern s16 D_801BA71E; -extern s16 D_801BA720; -extern s16 D_801BA724; -extern s16 D_801BA726; -extern s16 D_801BA728; - -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_801BA71C; - D_80114F34 = D_801BA71E; - D_80114F38 = D_801BA720; - D_80114F24 = D_801BA724; - D_80114F28 = D_801BA726; - D_80114F2C = D_801BA728; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801BA704), src[8..15] -> (*(S8_8017B8E8 *)&D_801BA6FC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801BA704) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801BA6FC) = ((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_801BA70C; -extern u16 D_801BA70E; -extern u16 D_801BA710; - -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_801BA68C; -extern short D_801BA714; -extern short D_801BA716; -extern short D_801BA718; -extern s16 D_801BA704; -extern s16 D_801BA706; -extern s16 D_801BA708; -extern s16 D_801BA6FC; -extern s16 D_801BA6FE; -extern s16 D_801BA700; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801BA70C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801BA70E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801BA710); - (*(s16 *)&D_801BA714) = buf[0]; - (*(s16 *)&D_801BA716) = buf[1]; - (*(s16 *)&D_801BA718) = buf[2]; - D_801BA704 = D_80114F30 + buf[0]; - D_801BA68C = 0; - D_801BA706 = D_80114F34 + buf[1]; - D_801BA708 = D_80114F38 + buf[2]; - D_801BA6FC = D_80114F24 + buf[0]; - D_801BA6FE = D_80114F28 + buf[1]; - D_801BA700 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801BA6AC; -extern SV4 D_801BA6B4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801BA6B4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801BA6AC = 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_801BA6B4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801BA6B4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801BA6AC) = 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_801BA6B4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801BA6D4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801BA6D4; - 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_801BA68C; -extern s16 D_801BA978; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801BA68C = D_801BA68C + 1; - if (D_801BA68C >= 0x1F) { - D_801BA978 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801BA68C; -extern s16 D_801BA978; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801BA68C = D_801BA68C + 1; - if (0x18 < D_801BA68C) { - func_8012A4BC(); - D_801BA978 = 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_801BA68C; -extern void (*D_801BA6D0)(void); -extern short D_801BA714; -extern short D_801BA716; -extern short D_801BA718; -extern s16 D_801BA978; - -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_801BA68C = D_801BA68C + 1; - if (D_801BA68C >= 0x19) { - if (D_801BA6D0 != 0) { - (*D_801BA6D0)(); - } else { - D_80114F30 = D_80114F30 + D_801BA714; - D_80114F34 = D_80114F34 + D_801BA716; - D_80114F38 = D_80114F38 + D_801BA718; - D_80114F24 = D_80114F24 + D_801BA714; - D_80114F28 = D_80114F28 + D_801BA716; - D_80114F2C = D_80114F2C + D_801BA718; - func_8012A4BC(); - } - D_801BA978 = 0; - } -} - - - -extern void (*D_80188A3C[])(void); - -void func_8017BE60(void *a0) { - D_80188A3C[*(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 (*D_80188A54[])(void); - -void func_8017BEBC(void *a0) { - D_80188A54[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017A4AC", func_8017BEF8); - -DEFINE_func_8017C090() /* dedup: shared engine-core @0x8017C090 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017A4AC", func_8017C0A4); - -INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017A4AC", func_8017C120); - -INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017A4AC", func_8017C1DC); diff --git a/src/ov_SC06_020/ov_SC06_020_jr_8017AE2C.c b/src/ov_SC06_020/ov_SC06_020_jr_8017AE2C.c new file mode 100644 index 000000000..c61ad0b1d --- /dev/null +++ b/src/ov_SC06_020/ov_SC06_020_jr_8017AE2C.c @@ -0,0 +1,3467 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80187594; +extern u8 D_80187504; +extern u8 D_801874E0; +extern u8 D_801874BC; +extern u8 D_80187570; +extern u8 D_8018754C; +extern u8 D_80187528; +extern u8 D_80187498; +extern void func_80145934(void); +extern u8 D_80187624; +extern u8 D_80187600; +extern u8 D_801875DC; +extern u8 D_801875B8; +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_80186A1C[]; +extern unsigned char D_80186A4C[]; +extern unsigned char D_80186A9C[]; +extern unsigned char D_80186ACC[]; +extern unsigned char D_80186AFC[]; +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(void); +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_80186B4C[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80186C14[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80186C9C[]; +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_80186CA4; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801B9588; +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_801B958C; +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_80186CD4; +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 void 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_80186D7C[])(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_80186DA0[])(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_80186D90; +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_80186DB4[])(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_80186DC0[]; +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_80186DD0[])(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_80186DE8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80186DD8; +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_80186DFC[])(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_80186E18[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80186E08; +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_80186E2C[])(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_80186E40[])(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_80186E54; +extern void (*D_80186E7C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80186E5C; +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_80186EC8[])(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_80186ECC[])(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(void *a0); +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_80187330[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80187340[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801B95C0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80187368[])(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_80187348; +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_80187358; +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_801873A8[])(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_801873B0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018737C; +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_801873BC[])(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_8018738C; +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_801B95C8; +extern s32 D_801B95D4; +extern s32 D_801B95D8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801873F8[])(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_801873CC[]; +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_801B95D0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80187648[])(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_80187468[]; +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_801876EC[])(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_80187840[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018765C; +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_80187848[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018766C; +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_8018768C; +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_80187850[])(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(void); +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_80187878[])(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_80187884[])(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_801876F8[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80187928; +extern void func_8015D380(s32 a0); +extern unsigned char D_80186A0C[]; +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_8018793C[]; +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_80187978[]; +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_801879C0; +extern u16 D_801879C2; +extern u16 D_801879C4; +extern s32 D_801879C8; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_801879D0; +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_801876DC; +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_80187A54[]; +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_80187B04[])(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_80187B34[]; +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_80187B98; +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_801B95E0[]; +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_80187BBC[])(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_801B9638[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80187C04[])(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_80187BF4; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801B8D88[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_80187C0C[])(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_80187C60[])(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_80187C28; +extern s16 D_80187C5C; +extern s16 D_80187C5A; +extern s16 D_80187C58; +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_80187C6C[])(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_801B9698; +extern u8 D_801B9699; +extern u8 D_801B969A; +extern u8 D_801B969B; +extern u8 D_801B969C; +extern u8 D_801B969D; +extern u8 D_801B969E; +extern u8 D_801B969F; +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_80187C7C[])(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_801B96D8; +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_80187CC0[])(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_80187D3C[]; +extern s32 D_80187D5C[]; +extern u8 D_80187DD8[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80187DF8[]; +extern u8 D_80187E18[]; +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_80187EB4[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80187F30[])(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_801B8D98; +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_80187F3C[])(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_80187F44[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018800C[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018801C[])(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_8018802C[])(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_80188038[])(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_80187F98[]; +extern u8 D_80187FAC[]; +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_80188050[])(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_80188058[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80188060[])(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_80188068[])(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_80188070[])(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_80188078[])(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_80188080[])(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_80188134[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018813C[])(void); +extern void func_80169F00(void *a0); +extern char D_801880EC[]; +extern char D_801880AC[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80188174[])(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_80188180[])(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_801881C8[])(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_80188244[])(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_801B99F8; +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_80188238[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018827C[]; +extern unsigned short D_80188284[]; +extern unsigned short D_8018828C[]; +extern unsigned char D_801B9A00[]; +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_801B99F8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80188294[])(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_801B9B34; +extern M2C_UNK D_801B9B38; +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_801B9AC0; +extern void (*D_801882C4[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801B9B3C[]; +extern u8 D_801B9B44[]; +extern u8 D_801B9AF4[]; +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_801882CC[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801882E8[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801882F0[])(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_80188358[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801882FC; +extern u8 D_80188308; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018838C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80188394[])(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_801883E8[])(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_8018841C[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018840C[]; +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_80188438; +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); +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_801884B0[])(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_801884B8[])(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_801884C0[])(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_801884C8[])(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_801884D0[])(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_801884D8[])(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_801884E4[])(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_801884F0[])(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_801884FC[])(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_8018850C[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018851C[])(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_80188524[])(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_8018852C[])(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_80188534[])(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_8018853C[])(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_80188544[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018854C[])(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_80188554[])(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_8018855C[])(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_80188564[])(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_8018856C[])(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_80188574[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018857C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80188584[])(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_8018858C[])(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_80188594[])(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_8018859C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801885A4[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801885AC[])(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_801885B4[])(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_801885BC[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801885C4[])(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_801885CC[])(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_80188610[])(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_801885D4; +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_80188640[])(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_8018867C[])(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(s32); +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_801886D4[])(); +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_801886E4[])(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_801886EC[])(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_80188854[])(); +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_80188860[])(); +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_801B8FE0; +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 int func_801789AC(void); +extern s16 D_801BA978; +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_801BA278; +extern short D_801BA9EC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801BA6A4; +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_801BA6CC; +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_801BA688; +extern s32 func_8017A3B0(void); +extern short D_801BA6C4; +extern short D_801BA6C0; +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_801BA948; +extern s16 D_801BA94A; +extern s16 D_801BA954; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801BA948; + + 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_801BA954); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801BA948+0xC == &D_801BA954; 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_801BA948 + 0xC)) < 0x101) { + D_801BA948 = 0; + D_801BA94A = 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_801BA954); + 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_801BA948 + 0xC)) < 0x101) { + D_801BA948 = 0; + D_801BA94A = 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_801BA704; + extern s16 D_801BA706; + extern s16 D_801BA708; + extern s16 D_801BA6FC; + extern s16 D_801BA6FE; + extern s16 D_801BA700; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801BA704, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801BA706, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801BA708, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801BA6FC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801BA6FE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801BA700, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801BA68C; +extern u16 D_801BA70C; +extern u16 D_801BA70E; +extern u16 D_801BA710; +extern s16 D_801BA978; + +void func_8017B1D8(void) { + func_8012A418(); + D_801BA978 = 0; + D_801BA68C = 0; + D_801BA70C = D_80126B5E; + D_801BA70E = D_80126B62; + D_801BA710 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018899C[]; + extern s16 D_801BA704; + extern s16 D_801BA6FC; + 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_8018899C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018899C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801BA704; + s16 *p78C = &D_801BA6FC; + *(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_801BA978 = 1; + D_801BA68C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801BA6AC; + extern SV4_8017B368 D_801BA6B4; + extern s16 D_801BA704; + extern s16 D_801BA6FC; + extern u16 D_8018899C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801BA6AC; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801BA6B4; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018899C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018899C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801BA704) = loc0; + (*(SV4_8017B368 *)&D_801BA6FC) = loc1; + D_801BA978 = 1; + D_801BA68C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018899C[]; + extern s16 D_801BA704; + extern s16 D_801BA706; + extern s16 D_801BA708; + extern s16 D_801BA6FC; + extern s16 D_801BA6FE; + extern s16 D_801BA700; + 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_8018899C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018899C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801BA704; + s16 *p78C = &D_801BA6FC; + *(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_801BA706; + v798 = D_801BA708; + v78C = *p78C; + v78E = D_801BA6FE; + v790 = D_801BA700; + __asm__ __volatile__(""); + D_801BA978 = 1; + D_801BA68C = 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_801BA68C; +extern s16 D_801BA704; +extern s16 D_801BA706; +extern s16 D_801BA708; +extern s16 D_801BA6FC; +extern s16 D_801BA6FE; +extern s16 D_801BA700; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801BA68C = 0; + D_801BA704 = (s16) D_80114F30; + D_801BA706 = (s16) D_80114F34; + D_801BA708 = (s16) D_80114F38; + D_801BA6FC = (s16) D_80114F24; + D_801BA6FE = (s16) D_80114F28; + D_801BA700 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801BA71C; +extern s16 D_801BA71E; +extern s16 D_801BA720; +extern s16 D_801BA724; +extern s16 D_801BA726; +extern s16 D_801BA728; + +void func_8017B824(void) { + D_801BA71C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801BA71E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801BA720 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801BA724 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801BA726 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801BA728 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801BA71C; +extern s16 D_801BA71E; +extern s16 D_801BA720; +extern s16 D_801BA724; +extern s16 D_801BA726; +extern s16 D_801BA728; + +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_801BA71C; + D_80114F34 = D_801BA71E; + D_80114F38 = D_801BA720; + D_80114F24 = D_801BA724; + D_80114F28 = D_801BA726; + D_80114F2C = D_801BA728; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801BA704), src[8..15] -> (*(S8_8017B8E8 *)&D_801BA6FC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801BA704) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801BA6FC) = ((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_801BA70C; +extern u16 D_801BA70E; +extern u16 D_801BA710; + +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_801BA68C; +extern short D_801BA714; +extern short D_801BA716; +extern short D_801BA718; +extern s16 D_801BA704; +extern s16 D_801BA706; +extern s16 D_801BA708; +extern s16 D_801BA6FC; +extern s16 D_801BA6FE; +extern s16 D_801BA700; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801BA70C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801BA70E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801BA710); + (*(s16 *)&D_801BA714) = buf[0]; + (*(s16 *)&D_801BA716) = buf[1]; + (*(s16 *)&D_801BA718) = buf[2]; + D_801BA704 = D_80114F30 + buf[0]; + D_801BA68C = 0; + D_801BA706 = D_80114F34 + buf[1]; + D_801BA708 = D_80114F38 + buf[2]; + D_801BA6FC = D_80114F24 + buf[0]; + D_801BA6FE = D_80114F28 + buf[1]; + D_801BA700 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801BA6AC; +extern SV4 D_801BA6B4; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801BA6B4) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801BA6AC = 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_801BA6B4 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801BA6B4)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801BA6AC) = 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_801BA6B4) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801BA6D4[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801BA6D4; + 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_801BA68C; +extern s16 D_801BA978; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801BA68C = D_801BA68C + 1; + if (D_801BA68C >= 0x1F) { + D_801BA978 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801BA68C; +extern s16 D_801BA978; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801BA68C = D_801BA68C + 1; + if (0x18 < D_801BA68C) { + func_8012A4BC(); + D_801BA978 = 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_801BA68C; +extern void (*D_801BA6D0)(void); +extern short D_801BA714; +extern short D_801BA716; +extern short D_801BA718; +extern s16 D_801BA978; + +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_801BA68C = D_801BA68C + 1; + if (D_801BA68C >= 0x19) { + if (D_801BA6D0 != 0) { + (*D_801BA6D0)(); + } else { + D_80114F30 = D_80114F30 + D_801BA714; + D_80114F34 = D_80114F34 + D_801BA716; + D_80114F38 = D_80114F38 + D_801BA718; + D_80114F24 = D_80114F24 + D_801BA714; + D_80114F28 = D_80114F28 + D_801BA716; + D_80114F2C = D_80114F2C + D_801BA718; + func_8012A4BC(); + } + D_801BA978 = 0; + } +} + + + +extern void (*D_80188A3C[])(void); + +void func_8017BE60(void *a0) { + D_80188A3C[*(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 (*D_80188A54[])(void); + +void func_8017BEBC(void *a0) { + D_80188A54[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017AE2C", func_8017BEF8); + +DEFINE_func_8017C090() /* dedup: shared engine-core @0x8017C090 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017AE2C", func_8017C0A4); + +INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017AE2C", func_8017C120); + +INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017AE2C", func_8017C1DC); + diff --git a/src/ov_SC06_022/ov_SC06_022_jr_8017A4AC.c b/src/ov_SC06_022/ov_SC06_022_jr_8017A4AC.c index 753d9f84d..2d3d7655f 100644 --- a/src/ov_SC06_022/ov_SC06_022_jr_8017A4AC.c +++ b/src/ov_SC06_022/ov_SC06_022_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801E1F6C; - extern s16 D_801E1F6E; - extern s16 D_801E1F70; - extern s16 D_801E1F64; - extern s16 D_801E1F66; - extern s16 D_801E1F68; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801E1F6C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801E1F6E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801E1F70, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801E1F64, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801E1F66, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801E1F68, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801E1EF4; -extern u16 D_801E1F74; -extern u16 D_801E1F76; -extern u16 D_801E1F78; -extern s16 D_801E21F8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801E21F8 = 0; - D_801E1EF4 = 0; - D_801E1F74 = D_80126B5E; - D_801E1F76 = D_80126B62; - D_801E1F78 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80190C58[]; - extern s16 D_801E1F6C; - extern s16 D_801E1F64; - 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_80190C58[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80190C58[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E1F6C; - s16 *p78C = &D_801E1F64; - *(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_801E21F8 = 1; - D_801E1EF4 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801E1F14; - extern SV4_8017B368 D_801E1F1C; - extern s16 D_801E1F6C; - extern s16 D_801E1F64; - extern u16 D_80190C58; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801E1F14; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801E1F1C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80190C58)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80190C58)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801E1F6C) = loc0; - (*(SV4_8017B368 *)&D_801E1F64) = loc1; - D_801E21F8 = 1; - D_801E1EF4 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80190C58[]; - extern s16 D_801E1F6C; - extern s16 D_801E1F6E; - extern s16 D_801E1F70; - extern s16 D_801E1F64; - extern s16 D_801E1F66; - extern s16 D_801E1F68; - 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_80190C58[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80190C58[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E1F6C; - s16 *p78C = &D_801E1F64; - *(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_801E1F6E; - v798 = D_801E1F70; - v78C = *p78C; - v78E = D_801E1F66; - v790 = D_801E1F68; - __asm__ __volatile__(""); - D_801E21F8 = 1; - D_801E1EF4 = 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_801E1EF4; -extern s16 D_801E1F6C; -extern s16 D_801E1F6E; -extern s16 D_801E1F70; -extern s16 D_801E1F64; -extern s16 D_801E1F66; -extern s16 D_801E1F68; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801E1EF4 = 0; - D_801E1F6C = (s16) D_80114F30; - D_801E1F6E = (s16) D_80114F34; - D_801E1F70 = (s16) D_80114F38; - D_801E1F64 = (s16) D_80114F24; - D_801E1F66 = (s16) D_80114F28; - D_801E1F68 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801E1F84; -extern s16 D_801E1F86; -extern s16 D_801E1F88; -extern s16 D_801E1F8C; -extern s16 D_801E1F8E; -extern s16 D_801E1F90; - -void func_8017B824(void) { - D_801E1F84 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801E1F86 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801E1F88 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801E1F8C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801E1F8E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801E1F90 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801E1F84; -extern s16 D_801E1F86; -extern s16 D_801E1F88; -extern s16 D_801E1F8C; -extern s16 D_801E1F8E; -extern s16 D_801E1F90; - -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_801E1F84; - D_80114F34 = D_801E1F86; - D_80114F38 = D_801E1F88; - D_80114F24 = D_801E1F8C; - D_80114F28 = D_801E1F8E; - D_80114F2C = D_801E1F90; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801E1F6C), src[8..15] -> (*(S8_8017B8E8 *)&D_801E1F64) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801E1F6C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801E1F64) = ((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_801E1F74; -extern u16 D_801E1F76; -extern u16 D_801E1F78; - -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_801E1EF4; -extern short D_801E1F7C; -extern short D_801E1F7E; -extern short D_801E1F80; -extern s16 D_801E1F6C; -extern s16 D_801E1F6E; -extern s16 D_801E1F70; -extern s16 D_801E1F64; -extern s16 D_801E1F66; -extern s16 D_801E1F68; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801E1F74); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801E1F76); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801E1F78); - (*(s16 *)&D_801E1F7C) = buf[0]; - (*(s16 *)&D_801E1F7E) = buf[1]; - (*(s16 *)&D_801E1F80) = buf[2]; - D_801E1F6C = D_80114F30 + buf[0]; - D_801E1EF4 = 0; - D_801E1F6E = D_80114F34 + buf[1]; - D_801E1F70 = D_80114F38 + buf[2]; - D_801E1F64 = D_80114F24 + buf[0]; - D_801E1F66 = D_80114F28 + buf[1]; - D_801E1F68 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801E1F14; -extern SV4 D_801E1F1C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801E1F1C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801E1F14 = 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_801E1F1C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801E1F1C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801E1F14) = 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_801E1F1C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801E1F3C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801E1F3C; - 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_801E1EF4; -extern s16 D_801E21F8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801E1EF4 = D_801E1EF4 + 1; - if (D_801E1EF4 >= 0x1F) { - D_801E21F8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801E1EF4; -extern s16 D_801E21F8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801E1EF4 = D_801E1EF4 + 1; - if (0x18 < D_801E1EF4) { - func_8012A4BC(); - D_801E21F8 = 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_801E1EF4; -extern void (*D_801E1F38)(void); -extern short D_801E1F7C; -extern short D_801E1F7E; -extern short D_801E1F80; -extern s16 D_801E21F8; - -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_801E1EF4 = D_801E1EF4 + 1; - if (D_801E1EF4 >= 0x19) { - if (D_801E1F38 != 0) { - (*D_801E1F38)(); - } else { - D_80114F30 = D_80114F30 + D_801E1F7C; - D_80114F34 = D_80114F34 + D_801E1F7E; - D_80114F38 = D_80114F38 + D_801E1F80; - D_80114F24 = D_80114F24 + D_801E1F7C; - D_80114F28 = D_80114F28 + D_801E1F7E; - D_80114F2C = D_80114F2C + D_801E1F80; - func_8012A4BC(); - } - D_801E21F8 = 0; - } -} - - - -extern void (*D_80190CF8[])(void); - -void func_8017BE60(void *a0) { - D_80190CF8[*(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) */ diff --git a/src/ov_SC06_022/ov_SC06_022_jr_8017AE2C.c b/src/ov_SC06_022/ov_SC06_022_jr_8017AE2C.c new file mode 100644 index 000000000..f493bf5ba --- /dev/null +++ b/src/ov_SC06_022/ov_SC06_022_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018F850; +extern u8 D_8018F7C0; +extern u8 D_8018F79C; +extern u8 D_8018F778; +extern u8 D_8018F82C; +extern u8 D_8018F808; +extern u8 D_8018F7E4; +extern u8 D_8018F754; +extern void func_80145934(void); +extern u8 D_8018F8E0; +extern u8 D_8018F8BC; +extern u8 D_8018F898; +extern u8 D_8018F874; +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_8018ECD8[]; +extern unsigned char D_8018ED08[]; +extern unsigned char D_8018ED58[]; +extern unsigned char D_8018ED88[]; +extern unsigned char D_8018EDB8[]; +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(void); +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_8018EE08[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018EED0[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018EF58[]; +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_8018EF60; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801E0DF0; +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_801E0DF4; +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_8018EF90; +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 void 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_8018F038[])(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_8018F05C[])(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_8018F04C; +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_8018F070[])(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_8018F07C[]; +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_8018F08C[])(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_8018F0A4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018F094; +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_8018F0B8[])(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_8018F0D4[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018F0C4; +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_8018F0E8[])(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_8018F0FC[])(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_8018F110; +extern void (*D_8018F138[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018F118; +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_8018F184[])(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_8018F188[])(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(void *a0); +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_8018F5EC[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018F5FC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801E0E28; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018F624[])(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_8018F604; +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_8018F614; +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_8018F664[])(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_8018F66C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018F638; +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_8018F678[])(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_8018F648; +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_801E0E30; +extern s32 D_801E0E3C; +extern s32 D_801E0E40; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018F6B4[])(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_8018F688[]; +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_801E0E38; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018F904[])(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_8018F724[]; +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_8018F9A8[])(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_8018FAFC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018F918; +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_8018FB04[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018F928; +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_8018F948; +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_8018FB0C[])(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(void); +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_8018FB34[])(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_8018FB40[])(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_8018F9B4[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018FBE4; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018ECC8[]; +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_8018FBF8[]; +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_8018FC34[]; +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_8018FC7C; +extern u16 D_8018FC7E; +extern u16 D_8018FC80; +extern s32 D_8018FC84; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018FC8C; +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_8018F998; +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_8018FD10[]; +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_8018FDC0[])(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_8018FDF0[]; +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_8018FE54; +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_801E0E48[]; +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_8018FE78[])(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_801E0EA0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018FEC0[])(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_8018FEB0; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801E0598[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_8018FEC8[])(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_8018FF1C[])(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_8018FEE4; +extern s16 D_8018FF18; +extern s16 D_8018FF16; +extern s16 D_8018FF14; +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_8018FF28[])(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_801E0F00; +extern u8 D_801E0F01; +extern u8 D_801E0F02; +extern u8 D_801E0F03; +extern u8 D_801E0F04; +extern u8 D_801E0F05; +extern u8 D_801E0F06; +extern u8 D_801E0F07; +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_8018FF38[])(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_801E0F40; +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_8018FF7C[])(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_8018FFF8[]; +extern s32 D_80190018[]; +extern u8 D_80190094[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801900B4[]; +extern u8 D_801900D4[]; +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_80190170[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801901EC[])(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_801E05A8; +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_801901F8[])(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_80190200[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801902C8[])(void); +extern void func_80166618(void *a0); +extern void (*D_801902D8[])(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_801902E8[])(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_801902F4[])(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_80190254[]; +extern u8 D_80190268[]; +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_8019030C[])(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_80190314[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8019031C[])(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_80190324[])(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_8019032C[])(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_80190334[])(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_8019033C[])(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_801903F0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801903F8[])(void); +extern void func_80169F00(void *a0); +extern char D_801903A8[]; +extern char D_80190368[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80190430[])(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_8019043C[])(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_80190484[])(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_80190500[])(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_801E1260; +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_801904F4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80190538[]; +extern unsigned short D_80190540[]; +extern unsigned short D_80190548[]; +extern unsigned char D_801E1268[]; +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_801E1260; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80190550[])(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_801E139C; +extern M2C_UNK D_801E13A0; +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_801E1328; +extern void (*D_80190580[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801E13A4[]; +extern u8 D_801E13AC[]; +extern u8 D_801E135C[]; +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_80190588[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801905A4[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801905AC[])(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_80190614[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801905B8; +extern u8 D_801905C4; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80190648[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80190650[])(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_801906A4[])(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_801906D8[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801906C8[]; +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_801906F4; +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); +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_8019076C[])(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_80190774[])(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_8019077C[])(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_80190784[])(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_8019078C[])(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_80190794[])(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_801907A0[])(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_801907AC[])(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_801907B8[])(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_801907C8[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801907D8[])(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_801907E0[])(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_801907E8[])(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_801907F0[])(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_801907F8[])(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_80190800[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80190808[])(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_80190810[])(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_80190818[])(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_80190820[])(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_80190828[])(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_80190830[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80190838[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80190840[])(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_80190848[])(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_80190850[])(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_80190858[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80190860[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80190868[])(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_80190870[])(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_80190878[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80190880[])(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_80190888[])(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_801908CC[])(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_80190890; +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_801908FC[])(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_80190938[])(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(s32); +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_80190990[])(); +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_801909A0[])(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_801909A8[])(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_80190B10[])(); +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_80190B1C[])(); +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_801E07F0; +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 int func_801789AC(void); +extern s16 D_801E21F8; +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_801E1AE0; +extern short D_801E226C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801E1F0C; +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_801E1F34; +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_801E1EF0; +extern s32 func_8017A3B0(void); +extern short D_801E1F2C; +extern short D_801E1F28; +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_801E21C8; +extern s16 D_801E21CA; +extern s16 D_801E21D4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801E21C8; + + 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_801E21D4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801E21C8+0xC == &D_801E21D4; 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_801E21C8 + 0xC)) < 0x101) { + D_801E21C8 = 0; + D_801E21CA = 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_801E21D4); + 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_801E21C8 + 0xC)) < 0x101) { + D_801E21C8 = 0; + D_801E21CA = 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_801E1F6C; + extern s16 D_801E1F6E; + extern s16 D_801E1F70; + extern s16 D_801E1F64; + extern s16 D_801E1F66; + extern s16 D_801E1F68; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801E1F6C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801E1F6E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801E1F70, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801E1F64, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801E1F66, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801E1F68, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801E1EF4; +extern u16 D_801E1F74; +extern u16 D_801E1F76; +extern u16 D_801E1F78; +extern s16 D_801E21F8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801E21F8 = 0; + D_801E1EF4 = 0; + D_801E1F74 = D_80126B5E; + D_801E1F76 = D_80126B62; + D_801E1F78 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80190C58[]; + extern s16 D_801E1F6C; + extern s16 D_801E1F64; + 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_80190C58[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80190C58[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801E1F6C; + s16 *p78C = &D_801E1F64; + *(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_801E21F8 = 1; + D_801E1EF4 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801E1F14; + extern SV4_8017B368 D_801E1F1C; + extern s16 D_801E1F6C; + extern s16 D_801E1F64; + extern u16 D_80190C58; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801E1F14; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801E1F1C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80190C58)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80190C58)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801E1F6C) = loc0; + (*(SV4_8017B368 *)&D_801E1F64) = loc1; + D_801E21F8 = 1; + D_801E1EF4 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80190C58[]; + extern s16 D_801E1F6C; + extern s16 D_801E1F6E; + extern s16 D_801E1F70; + extern s16 D_801E1F64; + extern s16 D_801E1F66; + extern s16 D_801E1F68; + 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_80190C58[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80190C58[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801E1F6C; + s16 *p78C = &D_801E1F64; + *(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_801E1F6E; + v798 = D_801E1F70; + v78C = *p78C; + v78E = D_801E1F66; + v790 = D_801E1F68; + __asm__ __volatile__(""); + D_801E21F8 = 1; + D_801E1EF4 = 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_801E1EF4; +extern s16 D_801E1F6C; +extern s16 D_801E1F6E; +extern s16 D_801E1F70; +extern s16 D_801E1F64; +extern s16 D_801E1F66; +extern s16 D_801E1F68; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801E1EF4 = 0; + D_801E1F6C = (s16) D_80114F30; + D_801E1F6E = (s16) D_80114F34; + D_801E1F70 = (s16) D_80114F38; + D_801E1F64 = (s16) D_80114F24; + D_801E1F66 = (s16) D_80114F28; + D_801E1F68 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801E1F84; +extern s16 D_801E1F86; +extern s16 D_801E1F88; +extern s16 D_801E1F8C; +extern s16 D_801E1F8E; +extern s16 D_801E1F90; + +void func_8017B824(void) { + D_801E1F84 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801E1F86 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801E1F88 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801E1F8C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801E1F8E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801E1F90 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801E1F84; +extern s16 D_801E1F86; +extern s16 D_801E1F88; +extern s16 D_801E1F8C; +extern s16 D_801E1F8E; +extern s16 D_801E1F90; + +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_801E1F84; + D_80114F34 = D_801E1F86; + D_80114F38 = D_801E1F88; + D_80114F24 = D_801E1F8C; + D_80114F28 = D_801E1F8E; + D_80114F2C = D_801E1F90; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801E1F6C), src[8..15] -> (*(S8_8017B8E8 *)&D_801E1F64) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801E1F6C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801E1F64) = ((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_801E1F74; +extern u16 D_801E1F76; +extern u16 D_801E1F78; + +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_801E1EF4; +extern short D_801E1F7C; +extern short D_801E1F7E; +extern short D_801E1F80; +extern s16 D_801E1F6C; +extern s16 D_801E1F6E; +extern s16 D_801E1F70; +extern s16 D_801E1F64; +extern s16 D_801E1F66; +extern s16 D_801E1F68; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801E1F74); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801E1F76); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801E1F78); + (*(s16 *)&D_801E1F7C) = buf[0]; + (*(s16 *)&D_801E1F7E) = buf[1]; + (*(s16 *)&D_801E1F80) = buf[2]; + D_801E1F6C = D_80114F30 + buf[0]; + D_801E1EF4 = 0; + D_801E1F6E = D_80114F34 + buf[1]; + D_801E1F70 = D_80114F38 + buf[2]; + D_801E1F64 = D_80114F24 + buf[0]; + D_801E1F66 = D_80114F28 + buf[1]; + D_801E1F68 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801E1F14; +extern SV4 D_801E1F1C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801E1F1C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801E1F14 = 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_801E1F1C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801E1F1C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801E1F14) = 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_801E1F1C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801E1F3C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801E1F3C; + 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_801E1EF4; +extern s16 D_801E21F8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801E1EF4 = D_801E1EF4 + 1; + if (D_801E1EF4 >= 0x1F) { + D_801E21F8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801E1EF4; +extern s16 D_801E21F8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801E1EF4 = D_801E1EF4 + 1; + if (0x18 < D_801E1EF4) { + func_8012A4BC(); + D_801E21F8 = 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_801E1EF4; +extern void (*D_801E1F38)(void); +extern short D_801E1F7C; +extern short D_801E1F7E; +extern short D_801E1F80; +extern s16 D_801E21F8; + +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_801E1EF4 = D_801E1EF4 + 1; + if (D_801E1EF4 >= 0x19) { + if (D_801E1F38 != 0) { + (*D_801E1F38)(); + } else { + D_80114F30 = D_80114F30 + D_801E1F7C; + D_80114F34 = D_80114F34 + D_801E1F7E; + D_80114F38 = D_80114F38 + D_801E1F80; + D_80114F24 = D_80114F24 + D_801E1F7C; + D_80114F28 = D_80114F28 + D_801E1F7E; + D_80114F2C = D_80114F2C + D_801E1F80; + func_8012A4BC(); + } + D_801E21F8 = 0; + } +} + + + +extern void (*D_80190CF8[])(void); + +void func_8017BE60(void *a0) { + D_80190CF8[*(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) */ + diff --git a/src/ov_SC06_024/ov_SC06_024_jr_8017A4AC.c b/src/ov_SC06_024/ov_SC06_024_jr_8017A4AC.c index b1d731465..db3ddea2e 100644 --- a/src/ov_SC06_024/ov_SC06_024_jr_8017A4AC.c +++ b/src/ov_SC06_024/ov_SC06_024_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801E10EC; - extern s16 D_801E10EE; - extern s16 D_801E10F0; - extern s16 D_801E10E4; - extern s16 D_801E10E6; - extern s16 D_801E10E8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801E10EC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801E10EE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801E10F0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801E10E4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801E10E6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801E10E8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801E1074; -extern u16 D_801E10F4; -extern u16 D_801E10F6; -extern u16 D_801E10F8; -extern s16 D_801E18F0; - -void func_8017B1D8(void) { - func_8012A418(); - D_801E18F0 = 0; - D_801E1074 = 0; - D_801E10F4 = D_80126B5E; - D_801E10F6 = D_80126B62; - D_801E10F8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80193130[]; - extern s16 D_801E10EC; - extern s16 D_801E10E4; - 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_80193130[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80193130[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E10EC; - s16 *p78C = &D_801E10E4; - *(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_801E18F0 = 1; - D_801E1074 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801E1094; - extern SV4_8017B368 D_801E109C; - extern s16 D_801E10EC; - extern s16 D_801E10E4; - extern u16 D_80193130; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801E1094; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801E109C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80193130)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80193130)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801E10EC) = loc0; - (*(SV4_8017B368 *)&D_801E10E4) = loc1; - D_801E18F0 = 1; - D_801E1074 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80193130[]; - extern s16 D_801E10EC; - extern s16 D_801E10EE; - extern s16 D_801E10F0; - extern s16 D_801E10E4; - extern s16 D_801E10E6; - extern s16 D_801E10E8; - 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_80193130[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80193130[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E10EC; - s16 *p78C = &D_801E10E4; - *(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_801E10EE; - v798 = D_801E10F0; - v78C = *p78C; - v78E = D_801E10E6; - v790 = D_801E10E8; - __asm__ __volatile__(""); - D_801E18F0 = 1; - D_801E1074 = 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_801E1074; -extern s16 D_801E10EC; -extern s16 D_801E10EE; -extern s16 D_801E10F0; -extern s16 D_801E10E4; -extern s16 D_801E10E6; -extern s16 D_801E10E8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801E1074 = 0; - D_801E10EC = (s16) D_80114F30; - D_801E10EE = (s16) D_80114F34; - D_801E10F0 = (s16) D_80114F38; - D_801E10E4 = (s16) D_80114F24; - D_801E10E6 = (s16) D_80114F28; - D_801E10E8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801E1104; -extern s16 D_801E1106; -extern s16 D_801E1108; -extern s16 D_801E110C; -extern s16 D_801E110E; -extern s16 D_801E1110; - -void func_8017B824(void) { - D_801E1104 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801E1106 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801E1108 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801E110C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801E110E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801E1110 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801E1104; -extern s16 D_801E1106; -extern s16 D_801E1108; -extern s16 D_801E110C; -extern s16 D_801E110E; -extern s16 D_801E1110; - -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_801E1104; - D_80114F34 = D_801E1106; - D_80114F38 = D_801E1108; - D_80114F24 = D_801E110C; - D_80114F28 = D_801E110E; - D_80114F2C = D_801E1110; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801E10EC), src[8..15] -> (*(S8_8017B8E8 *)&D_801E10E4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801E10EC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801E10E4) = ((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_801E10F4; -extern u16 D_801E10F6; -extern u16 D_801E10F8; - -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_801E1074; -extern short D_801E10FC; -extern short D_801E10FE; -extern short D_801E1100; -extern s16 D_801E10EC; -extern s16 D_801E10EE; -extern s16 D_801E10F0; -extern s16 D_801E10E4; -extern s16 D_801E10E6; -extern s16 D_801E10E8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801E10F4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801E10F6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801E10F8); - (*(s16 *)&D_801E10FC) = buf[0]; - (*(s16 *)&D_801E10FE) = buf[1]; - (*(s16 *)&D_801E1100) = buf[2]; - D_801E10EC = D_80114F30 + buf[0]; - D_801E1074 = 0; - D_801E10EE = D_80114F34 + buf[1]; - D_801E10F0 = D_80114F38 + buf[2]; - D_801E10E4 = D_80114F24 + buf[0]; - D_801E10E6 = D_80114F28 + buf[1]; - D_801E10E8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801E1094; -extern SV4 D_801E109C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801E109C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801E1094 = 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_801E109C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801E109C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801E1094) = 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_801E109C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801E10BC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801E10BC; - 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_801E1074; -extern s16 D_801E18F0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801E1074 = D_801E1074 + 1; - if (D_801E1074 >= 0x1F) { - D_801E18F0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801E1074; -extern s16 D_801E18F0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801E1074 = D_801E1074 + 1; - if (0x18 < D_801E1074) { - func_8012A4BC(); - D_801E18F0 = 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_801E1074; -extern void (*D_801E10B8)(void); -extern short D_801E10FC; -extern short D_801E10FE; -extern short D_801E1100; -extern s16 D_801E18F0; - -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_801E1074 = D_801E1074 + 1; - if (D_801E1074 >= 0x19) { - if (D_801E10B8 != 0) { - (*D_801E10B8)(); - } else { - D_80114F30 = D_80114F30 + D_801E10FC; - D_80114F34 = D_80114F34 + D_801E10FE; - D_80114F38 = D_80114F38 + D_801E1100; - D_80114F24 = D_80114F24 + D_801E10FC; - D_80114F28 = D_80114F28 + D_801E10FE; - D_80114F2C = D_80114F2C + D_801E1100; - func_8012A4BC(); - } - D_801E18F0 = 0; - } -} - - - -extern void (*D_801931D0[])(void); - -void func_8017BE60(void *a0) { - D_801931D0[*(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) */ diff --git a/src/ov_SC06_024/ov_SC06_024_jr_8017AE2C.c b/src/ov_SC06_024/ov_SC06_024_jr_8017AE2C.c new file mode 100644 index 000000000..265bf7f86 --- /dev/null +++ b/src/ov_SC06_024/ov_SC06_024_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80191D28; +extern u8 D_80191C98; +extern u8 D_80191C74; +extern u8 D_80191C50; +extern u8 D_80191D04; +extern u8 D_80191CE0; +extern u8 D_80191CBC; +extern u8 D_80191C2C; +extern void func_80145934(void); +extern u8 D_80191DB8; +extern u8 D_80191D94; +extern u8 D_80191D70; +extern u8 D_80191D4C; +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_801911B0[]; +extern unsigned char D_801911E0[]; +extern unsigned char D_80191230[]; +extern unsigned char D_80191260[]; +extern unsigned char D_80191290[]; +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(void); +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_801912E0[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_801913A8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80191430[]; +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_80191438; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801DFF70; +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_801DFF74; +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_80191468; +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 void 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_80191510[])(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_80191534[])(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_80191524; +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_80191548[])(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_80191554[]; +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_80191564[])(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_8019157C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8019156C; +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_80191590[])(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_801915AC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8019159C; +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_801915C0[])(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_801915D4[])(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_801915E8; +extern void (*D_80191610[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801915F0; +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_8019165C[])(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_80191660[])(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(void *a0); +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_80191AC4[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80191AD4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801DFFA8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80191AFC[])(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_80191ADC; +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_80191AEC; +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_80191B3C[])(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_80191B44[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80191B10; +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_80191B50[])(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_80191B20; +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_801DFFB0; +extern s32 D_801DFFBC; +extern s32 D_801DFFC0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80191B8C[])(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_80191B60[]; +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_801DFFB8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80191DDC[])(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_80191BFC[]; +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_80191E80[])(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_80191FD4[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80191DF0; +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_80191FDC[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80191E00; +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_80191E20; +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_80191FE4[])(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(void); +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_8019200C[])(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_80192018[])(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_80191E8C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801920BC; +extern void func_8015D380(s32 a0); +extern unsigned char D_801911A0[]; +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_801920D0[]; +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_8019210C[]; +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_80192154; +extern u16 D_80192156; +extern u16 D_80192158; +extern s32 D_8019215C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80192164; +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_80191E70; +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_801921E8[]; +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_80192298[])(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_801922C8[]; +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_8019232C; +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_801DFFC8[]; +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_80192350[])(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_801E0020[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80192398[])(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_80192388; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801DF6DC[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_801923A0[])(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_801923F4[])(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_801923BC; +extern s16 D_801923F0; +extern s16 D_801923EE; +extern s16 D_801923EC; +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_80192400[])(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_801E0080; +extern u8 D_801E0081; +extern u8 D_801E0082; +extern u8 D_801E0083; +extern u8 D_801E0084; +extern u8 D_801E0085; +extern u8 D_801E0086; +extern u8 D_801E0087; +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_80192410[])(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_801E00C0; +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_80192454[])(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_801924D0[]; +extern s32 D_801924F0[]; +extern u8 D_8019256C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8019258C[]; +extern u8 D_801925AC[]; +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_80192648[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801926C4[])(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_801DF6EC; +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_801926D0[])(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_801926D8[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801927A0[])(void); +extern void func_80166618(void *a0); +extern void (*D_801927B0[])(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_801927C0[])(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_801927CC[])(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_8019272C[]; +extern u8 D_80192740[]; +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_801927E4[])(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_801927EC[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_801927F4[])(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_801927FC[])(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_80192804[])(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_8019280C[])(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_80192814[])(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_801928C8[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801928D0[])(void); +extern void func_80169F00(void *a0); +extern char D_80192880[]; +extern char D_80192840[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80192908[])(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_80192914[])(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_8019295C[])(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_801929D8[])(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_801E03E0; +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_801929CC[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80192A10[]; +extern unsigned short D_80192A18[]; +extern unsigned short D_80192A20[]; +extern unsigned char D_801E03E8[]; +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_801E03E0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80192A28[])(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_801E051C; +extern M2C_UNK D_801E0520; +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_801E04A8; +extern void (*D_80192A58[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801E0524[]; +extern u8 D_801E052C[]; +extern u8 D_801E04DC[]; +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_80192A60[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80192A7C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80192A84[])(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_80192AEC[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80192A90; +extern u8 D_80192A9C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80192B20[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80192B28[])(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_80192B7C[])(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_80192BB0[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80192BA0[]; +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_80192BCC; +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); +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_80192C44[])(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_80192C4C[])(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_80192C54[])(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_80192C5C[])(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_80192C64[])(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_80192C6C[])(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_80192C78[])(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_80192C84[])(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_80192C90[])(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_80192CA0[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80192CB0[])(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_80192CB8[])(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_80192CC0[])(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_80192CC8[])(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_80192CD0[])(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_80192CD8[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80192CE0[])(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_80192CE8[])(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_80192CF0[])(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_80192CF8[])(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_80192D00[])(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_80192D08[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80192D10[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80192D18[])(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_80192D20[])(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_80192D28[])(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_80192D30[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80192D38[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80192D40[])(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_80192D48[])(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_80192D50[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80192D58[])(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_80192D60[])(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_80192DA4[])(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_80192D68; +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_80192DD4[])(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_80192E10[])(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(s32); +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_80192E68[])(); +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_80192E78[])(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_80192E80[])(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_80192FE8[])(); +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_80192FF4[])(); +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_801DF934; +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 int func_801789AC(void); +extern s16 D_801E18F0; +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_801E0C60; +extern short D_801E1964; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801E108C; +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_801E10B4; +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_801E1070; +extern s32 func_8017A3B0(void); +extern short D_801E10AC; +extern short D_801E10A8; +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_801E18C0; +extern s16 D_801E18C2; +extern s16 D_801E18CC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801E18C0; + + 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_801E18CC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801E18C0+0xC == &D_801E18CC; 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_801E18C0 + 0xC)) < 0x101) { + D_801E18C0 = 0; + D_801E18C2 = 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_801E18CC); + 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_801E18C0 + 0xC)) < 0x101) { + D_801E18C0 = 0; + D_801E18C2 = 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_801E10EC; + extern s16 D_801E10EE; + extern s16 D_801E10F0; + extern s16 D_801E10E4; + extern s16 D_801E10E6; + extern s16 D_801E10E8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801E10EC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801E10EE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801E10F0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801E10E4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801E10E6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801E10E8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801E1074; +extern u16 D_801E10F4; +extern u16 D_801E10F6; +extern u16 D_801E10F8; +extern s16 D_801E18F0; + +void func_8017B1D8(void) { + func_8012A418(); + D_801E18F0 = 0; + D_801E1074 = 0; + D_801E10F4 = D_80126B5E; + D_801E10F6 = D_80126B62; + D_801E10F8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80193130[]; + extern s16 D_801E10EC; + extern s16 D_801E10E4; + 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_80193130[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80193130[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801E10EC; + s16 *p78C = &D_801E10E4; + *(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_801E18F0 = 1; + D_801E1074 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801E1094; + extern SV4_8017B368 D_801E109C; + extern s16 D_801E10EC; + extern s16 D_801E10E4; + extern u16 D_80193130; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801E1094; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801E109C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80193130)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80193130)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801E10EC) = loc0; + (*(SV4_8017B368 *)&D_801E10E4) = loc1; + D_801E18F0 = 1; + D_801E1074 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80193130[]; + extern s16 D_801E10EC; + extern s16 D_801E10EE; + extern s16 D_801E10F0; + extern s16 D_801E10E4; + extern s16 D_801E10E6; + extern s16 D_801E10E8; + 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_80193130[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80193130[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801E10EC; + s16 *p78C = &D_801E10E4; + *(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_801E10EE; + v798 = D_801E10F0; + v78C = *p78C; + v78E = D_801E10E6; + v790 = D_801E10E8; + __asm__ __volatile__(""); + D_801E18F0 = 1; + D_801E1074 = 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_801E1074; +extern s16 D_801E10EC; +extern s16 D_801E10EE; +extern s16 D_801E10F0; +extern s16 D_801E10E4; +extern s16 D_801E10E6; +extern s16 D_801E10E8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801E1074 = 0; + D_801E10EC = (s16) D_80114F30; + D_801E10EE = (s16) D_80114F34; + D_801E10F0 = (s16) D_80114F38; + D_801E10E4 = (s16) D_80114F24; + D_801E10E6 = (s16) D_80114F28; + D_801E10E8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801E1104; +extern s16 D_801E1106; +extern s16 D_801E1108; +extern s16 D_801E110C; +extern s16 D_801E110E; +extern s16 D_801E1110; + +void func_8017B824(void) { + D_801E1104 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801E1106 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801E1108 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801E110C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801E110E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801E1110 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801E1104; +extern s16 D_801E1106; +extern s16 D_801E1108; +extern s16 D_801E110C; +extern s16 D_801E110E; +extern s16 D_801E1110; + +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_801E1104; + D_80114F34 = D_801E1106; + D_80114F38 = D_801E1108; + D_80114F24 = D_801E110C; + D_80114F28 = D_801E110E; + D_80114F2C = D_801E1110; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801E10EC), src[8..15] -> (*(S8_8017B8E8 *)&D_801E10E4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801E10EC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801E10E4) = ((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_801E10F4; +extern u16 D_801E10F6; +extern u16 D_801E10F8; + +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_801E1074; +extern short D_801E10FC; +extern short D_801E10FE; +extern short D_801E1100; +extern s16 D_801E10EC; +extern s16 D_801E10EE; +extern s16 D_801E10F0; +extern s16 D_801E10E4; +extern s16 D_801E10E6; +extern s16 D_801E10E8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801E10F4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801E10F6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801E10F8); + (*(s16 *)&D_801E10FC) = buf[0]; + (*(s16 *)&D_801E10FE) = buf[1]; + (*(s16 *)&D_801E1100) = buf[2]; + D_801E10EC = D_80114F30 + buf[0]; + D_801E1074 = 0; + D_801E10EE = D_80114F34 + buf[1]; + D_801E10F0 = D_80114F38 + buf[2]; + D_801E10E4 = D_80114F24 + buf[0]; + D_801E10E6 = D_80114F28 + buf[1]; + D_801E10E8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801E1094; +extern SV4 D_801E109C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801E109C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801E1094 = 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_801E109C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801E109C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801E1094) = 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_801E109C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801E10BC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801E10BC; + 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_801E1074; +extern s16 D_801E18F0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801E1074 = D_801E1074 + 1; + if (D_801E1074 >= 0x1F) { + D_801E18F0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801E1074; +extern s16 D_801E18F0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801E1074 = D_801E1074 + 1; + if (0x18 < D_801E1074) { + func_8012A4BC(); + D_801E18F0 = 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_801E1074; +extern void (*D_801E10B8)(void); +extern short D_801E10FC; +extern short D_801E10FE; +extern short D_801E1100; +extern s16 D_801E18F0; + +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_801E1074 = D_801E1074 + 1; + if (D_801E1074 >= 0x19) { + if (D_801E10B8 != 0) { + (*D_801E10B8)(); + } else { + D_80114F30 = D_80114F30 + D_801E10FC; + D_80114F34 = D_80114F34 + D_801E10FE; + D_80114F38 = D_80114F38 + D_801E1100; + D_80114F24 = D_80114F24 + D_801E10FC; + D_80114F28 = D_80114F28 + D_801E10FE; + D_80114F2C = D_80114F2C + D_801E1100; + func_8012A4BC(); + } + D_801E18F0 = 0; + } +} + + + +extern void (*D_801931D0[])(void); + +void func_8017BE60(void *a0) { + D_801931D0[*(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) */ + diff --git a/src/ov_SC06_025/ov_SC06_025_jr_8017A4AC.c b/src/ov_SC06_025/ov_SC06_025_jr_8017A4AC.c index d75ced4a0..f36a0c510 100644 --- a/src/ov_SC06_025/ov_SC06_025_jr_8017A4AC.c +++ b/src/ov_SC06_025/ov_SC06_025_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801B12B4; - extern s16 D_801B12B6; - extern s16 D_801B12B8; - extern s16 D_801B12AC; - extern s16 D_801B12AE; - extern s16 D_801B12B0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B12B4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B12B6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B12B8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B12AC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B12AE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B12B0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801B123C; -extern u16 D_801B12BC; -extern u16 D_801B12BE; -extern u16 D_801B12C0; -extern s16 D_801B2210; - -void func_8017B1D8(void) { - func_8012A418(); - D_801B2210 = 0; - D_801B123C = 0; - D_801B12BC = D_80126B5E; - D_801B12BE = D_80126B62; - D_801B12C0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_801885D4[]; - extern s16 D_801B12B4; - extern s16 D_801B12AC; - 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_801885D4[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801885D4[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B12B4; - s16 *p78C = &D_801B12AC; - *(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_801B2210 = 1; - D_801B123C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B125C; - extern SV4_8017B368 D_801B1264; - extern s16 D_801B12B4; - extern s16 D_801B12AC; - extern u16 D_801885D4; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801B125C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801B1264; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_801885D4)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_801885D4)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801B12B4) = loc0; - (*(SV4_8017B368 *)&D_801B12AC) = loc1; - D_801B2210 = 1; - D_801B123C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_801885D4[]; - extern s16 D_801B12B4; - extern s16 D_801B12B6; - extern s16 D_801B12B8; - extern s16 D_801B12AC; - extern s16 D_801B12AE; - extern s16 D_801B12B0; - 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_801885D4[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801885D4[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B12B4; - s16 *p78C = &D_801B12AC; - *(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_801B12B6; - v798 = D_801B12B8; - v78C = *p78C; - v78E = D_801B12AE; - v790 = D_801B12B0; - __asm__ __volatile__(""); - D_801B2210 = 1; - D_801B123C = 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_801B123C; -extern s16 D_801B12B4; -extern s16 D_801B12B6; -extern s16 D_801B12B8; -extern s16 D_801B12AC; -extern s16 D_801B12AE; -extern s16 D_801B12B0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801B123C = 0; - D_801B12B4 = (s16) D_80114F30; - D_801B12B6 = (s16) D_80114F34; - D_801B12B8 = (s16) D_80114F38; - D_801B12AC = (s16) D_80114F24; - D_801B12AE = (s16) D_80114F28; - D_801B12B0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801B12CC; -extern s16 D_801B12CE; -extern s16 D_801B12D0; -extern s16 D_801B12D4; -extern s16 D_801B12D6; -extern s16 D_801B12D8; - -void func_8017B824(void) { - D_801B12CC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801B12CE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801B12D0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801B12D4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801B12D6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801B12D8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801B12CC; -extern s16 D_801B12CE; -extern s16 D_801B12D0; -extern s16 D_801B12D4; -extern s16 D_801B12D6; -extern s16 D_801B12D8; - -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_801B12CC; - D_80114F34 = D_801B12CE; - D_80114F38 = D_801B12D0; - D_80114F24 = D_801B12D4; - D_80114F28 = D_801B12D6; - D_80114F2C = D_801B12D8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801B12B4), src[8..15] -> (*(S8_8017B8E8 *)&D_801B12AC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801B12B4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801B12AC) = ((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_801B12BC; -extern u16 D_801B12BE; -extern u16 D_801B12C0; - -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_801B123C; -extern short D_801B12C4; -extern short D_801B12C6; -extern short D_801B12C8; -extern s16 D_801B12B4; -extern s16 D_801B12B6; -extern s16 D_801B12B8; -extern s16 D_801B12AC; -extern s16 D_801B12AE; -extern s16 D_801B12B0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B12BC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B12BE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B12C0); - (*(s16 *)&D_801B12C4) = buf[0]; - (*(s16 *)&D_801B12C6) = buf[1]; - (*(s16 *)&D_801B12C8) = buf[2]; - D_801B12B4 = D_80114F30 + buf[0]; - D_801B123C = 0; - D_801B12B6 = D_80114F34 + buf[1]; - D_801B12B8 = D_80114F38 + buf[2]; - D_801B12AC = D_80114F24 + buf[0]; - D_801B12AE = D_80114F28 + buf[1]; - D_801B12B0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801B125C; -extern SV4 D_801B1264; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B1264) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801B125C = 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_801B1264 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B1264)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801B125C) = 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_801B1264) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801B1284[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801B1284; - 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_801B123C; -extern s16 D_801B2210; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801B123C = D_801B123C + 1; - if (D_801B123C >= 0x1F) { - D_801B2210 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801B123C; -extern s16 D_801B2210; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801B123C = D_801B123C + 1; - if (0x18 < D_801B123C) { - func_8012A4BC(); - D_801B2210 = 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_801B123C; -extern void (*D_801B1280)(void); -extern short D_801B12C4; -extern short D_801B12C6; -extern short D_801B12C8; -extern s16 D_801B2210; - -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_801B123C = D_801B123C + 1; - if (D_801B123C >= 0x19) { - if (D_801B1280 != 0) { - (*D_801B1280)(); - } else { - D_80114F30 = D_80114F30 + D_801B12C4; - D_80114F34 = D_80114F34 + D_801B12C6; - D_80114F38 = D_80114F38 + D_801B12C8; - D_80114F24 = D_80114F24 + D_801B12C4; - D_80114F28 = D_80114F28 + D_801B12C6; - D_80114F2C = D_80114F2C + D_801B12C8; - func_8012A4BC(); - } - D_801B2210 = 0; - } -} - - - -extern void (*D_80188674[])(void); - -void func_8017BE60(void *a0) { - D_80188674[*(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) */ diff --git a/src/ov_SC06_025/ov_SC06_025_jr_8017AE2C.c b/src/ov_SC06_025/ov_SC06_025_jr_8017AE2C.c new file mode 100644 index 000000000..cde49699c --- /dev/null +++ b/src/ov_SC06_025/ov_SC06_025_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801871CC; +extern u8 D_8018713C; +extern u8 D_80187118; +extern u8 D_801870F4; +extern u8 D_801871A8; +extern u8 D_80187184; +extern u8 D_80187160; +extern u8 D_801870D0; +extern void func_80145934(void); +extern u8 D_8018725C; +extern u8 D_80187238; +extern u8 D_80187214; +extern u8 D_801871F0; +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_80186654[]; +extern unsigned char D_80186684[]; +extern unsigned char D_801866D4[]; +extern unsigned char D_80186704[]; +extern unsigned char D_80186734[]; +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(void); +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_80186784[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018684C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801868D4[]; +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_801868DC; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801B0138; +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_801B013C; +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_8018690C; +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 void 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_801869B4[])(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_801869D8[])(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_801869C8; +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_801869EC[])(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_801869F8[]; +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_80186A08[])(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_80186A20[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80186A10; +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_80186A34[])(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_80186A50[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80186A40; +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_80186A64[])(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_80186A78[])(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_80186A8C; +extern void (*D_80186AB4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80186A94; +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_80186B00[])(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_80186B04[])(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(void *a0); +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_80186F68[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80186F78[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801B0170; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80186FA0[])(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_80186F80; +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_80186F90; +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_80186FE0[])(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_80186FE8[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80186FB4; +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_80186FF4[])(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_80186FC4; +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_801B0178; +extern s32 D_801B0184; +extern s32 D_801B0188; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80187030[])(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_80187004[]; +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_801B0180; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80187280[])(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_801870A0[]; +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_80187324[])(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_80187478[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80187294; +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_80187480[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801872A4; +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_801872C4; +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_80187488[])(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(void); +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_801874B0[])(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_801874BC[])(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_80187330[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80187560; +extern void func_8015D380(s32 a0); +extern unsigned char D_80186644[]; +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_80187574[]; +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_801875B0[]; +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_801875F8; +extern u16 D_801875FA; +extern u16 D_801875FC; +extern s32 D_80187600; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80187608; +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_80187314; +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_8018768C[]; +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_8018773C[])(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_8018776C[]; +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_801877D0; +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_801B0190[]; +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_801877F4[])(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_801B01E8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018783C[])(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_8018782C; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801AF9FC[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_80187844[])(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_80187898[])(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_80187860; +extern s16 D_80187894; +extern s16 D_80187892; +extern s16 D_80187890; +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_801878A4[])(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_801B0248; +extern u8 D_801B0249; +extern u8 D_801B024A; +extern u8 D_801B024B; +extern u8 D_801B024C; +extern u8 D_801B024D; +extern u8 D_801B024E; +extern u8 D_801B024F; +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_801878B4[])(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_801B0288; +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_801878F8[])(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_80187974[]; +extern s32 D_80187994[]; +extern u8 D_80187A10[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80187A30[]; +extern u8 D_80187A50[]; +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_80187AEC[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80187B68[])(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_801AFA0C; +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_80187B74[])(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_80187B7C[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80187C44[])(void); +extern void func_80166618(void *a0); +extern void (*D_80187C54[])(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_80187C64[])(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_80187C70[])(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_80187BD0[]; +extern u8 D_80187BE4[]; +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_80187C88[])(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_80187C90[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80187C98[])(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_80187CA0[])(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_80187CA8[])(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_80187CB0[])(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_80187CB8[])(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_80187D6C[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80187D74[])(void); +extern void func_80169F00(void *a0); +extern char D_80187D24[]; +extern char D_80187CE4[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80187DAC[])(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_80187DB8[])(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_80187E00[])(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_80187E7C[])(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_801B05A8; +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_80187E70[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80187EB4[]; +extern unsigned short D_80187EBC[]; +extern unsigned short D_80187EC4[]; +extern unsigned char D_801B05B0[]; +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_801B05A8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80187ECC[])(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_801B06E4; +extern M2C_UNK D_801B06E8; +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_801B0670; +extern void (*D_80187EFC[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801B06EC[]; +extern u8 D_801B06F4[]; +extern u8 D_801B06A4[]; +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_80187F04[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80187F20[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80187F28[])(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_80187F90[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80187F34; +extern u8 D_80187F40; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80187FC4[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80187FCC[])(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_80188020[])(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_80188054[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80188044[]; +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_80188070; +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); +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_801880E8[])(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_801880F0[])(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_801880F8[])(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_80188100[])(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_80188108[])(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_80188110[])(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_8018811C[])(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_80188128[])(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_80188134[])(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_80188144[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80188154[])(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_8018815C[])(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_80188164[])(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_8018816C[])(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_80188174[])(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_8018817C[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80188184[])(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_8018818C[])(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_80188194[])(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_8018819C[])(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_801881A4[])(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_801881AC[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801881B4[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801881BC[])(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_801881C4[])(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_801881CC[])(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_801881D4[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801881DC[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801881E4[])(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_801881EC[])(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_801881F4[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801881FC[])(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_80188204[])(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_80188248[])(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_8018820C; +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_80188278[])(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_801882B4[])(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(s32); +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_8018830C[])(); +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_8018831C[])(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_80188324[])(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_8018848C[])(); +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_80188498[])(); +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_801AFC54; +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 int func_801789AC(void); +extern s16 D_801B2210; +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_801B0E28; +extern short D_801B2284; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801B1254; +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_801B127C; +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_801B1238; +extern s32 func_8017A3B0(void); +extern short D_801B1274; +extern short D_801B1270; +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_801B21E0; +extern s16 D_801B21E2; +extern s16 D_801B21EC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801B21E0; + + 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_801B21EC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801B21E0+0xC == &D_801B21EC; 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_801B21E0 + 0xC)) < 0x101) { + D_801B21E0 = 0; + D_801B21E2 = 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_801B21EC); + 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_801B21E0 + 0xC)) < 0x101) { + D_801B21E0 = 0; + D_801B21E2 = 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_801B12B4; + extern s16 D_801B12B6; + extern s16 D_801B12B8; + extern s16 D_801B12AC; + extern s16 D_801B12AE; + extern s16 D_801B12B0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B12B4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B12B6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B12B8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B12AC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B12AE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B12B0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801B123C; +extern u16 D_801B12BC; +extern u16 D_801B12BE; +extern u16 D_801B12C0; +extern s16 D_801B2210; + +void func_8017B1D8(void) { + func_8012A418(); + D_801B2210 = 0; + D_801B123C = 0; + D_801B12BC = D_80126B5E; + D_801B12BE = D_80126B62; + D_801B12C0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_801885D4[]; + extern s16 D_801B12B4; + extern s16 D_801B12AC; + 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_801885D4[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801885D4[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B12B4; + s16 *p78C = &D_801B12AC; + *(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_801B2210 = 1; + D_801B123C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B125C; + extern SV4_8017B368 D_801B1264; + extern s16 D_801B12B4; + extern s16 D_801B12AC; + extern u16 D_801885D4; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801B125C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801B1264; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_801885D4)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_801885D4)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801B12B4) = loc0; + (*(SV4_8017B368 *)&D_801B12AC) = loc1; + D_801B2210 = 1; + D_801B123C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_801885D4[]; + extern s16 D_801B12B4; + extern s16 D_801B12B6; + extern s16 D_801B12B8; + extern s16 D_801B12AC; + extern s16 D_801B12AE; + extern s16 D_801B12B0; + 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_801885D4[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801885D4[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B12B4; + s16 *p78C = &D_801B12AC; + *(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_801B12B6; + v798 = D_801B12B8; + v78C = *p78C; + v78E = D_801B12AE; + v790 = D_801B12B0; + __asm__ __volatile__(""); + D_801B2210 = 1; + D_801B123C = 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_801B123C; +extern s16 D_801B12B4; +extern s16 D_801B12B6; +extern s16 D_801B12B8; +extern s16 D_801B12AC; +extern s16 D_801B12AE; +extern s16 D_801B12B0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801B123C = 0; + D_801B12B4 = (s16) D_80114F30; + D_801B12B6 = (s16) D_80114F34; + D_801B12B8 = (s16) D_80114F38; + D_801B12AC = (s16) D_80114F24; + D_801B12AE = (s16) D_80114F28; + D_801B12B0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801B12CC; +extern s16 D_801B12CE; +extern s16 D_801B12D0; +extern s16 D_801B12D4; +extern s16 D_801B12D6; +extern s16 D_801B12D8; + +void func_8017B824(void) { + D_801B12CC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801B12CE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801B12D0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801B12D4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801B12D6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801B12D8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801B12CC; +extern s16 D_801B12CE; +extern s16 D_801B12D0; +extern s16 D_801B12D4; +extern s16 D_801B12D6; +extern s16 D_801B12D8; + +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_801B12CC; + D_80114F34 = D_801B12CE; + D_80114F38 = D_801B12D0; + D_80114F24 = D_801B12D4; + D_80114F28 = D_801B12D6; + D_80114F2C = D_801B12D8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801B12B4), src[8..15] -> (*(S8_8017B8E8 *)&D_801B12AC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801B12B4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801B12AC) = ((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_801B12BC; +extern u16 D_801B12BE; +extern u16 D_801B12C0; + +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_801B123C; +extern short D_801B12C4; +extern short D_801B12C6; +extern short D_801B12C8; +extern s16 D_801B12B4; +extern s16 D_801B12B6; +extern s16 D_801B12B8; +extern s16 D_801B12AC; +extern s16 D_801B12AE; +extern s16 D_801B12B0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B12BC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B12BE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B12C0); + (*(s16 *)&D_801B12C4) = buf[0]; + (*(s16 *)&D_801B12C6) = buf[1]; + (*(s16 *)&D_801B12C8) = buf[2]; + D_801B12B4 = D_80114F30 + buf[0]; + D_801B123C = 0; + D_801B12B6 = D_80114F34 + buf[1]; + D_801B12B8 = D_80114F38 + buf[2]; + D_801B12AC = D_80114F24 + buf[0]; + D_801B12AE = D_80114F28 + buf[1]; + D_801B12B0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801B125C; +extern SV4 D_801B1264; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B1264) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801B125C = 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_801B1264 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B1264)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801B125C) = 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_801B1264) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801B1284[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801B1284; + 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_801B123C; +extern s16 D_801B2210; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801B123C = D_801B123C + 1; + if (D_801B123C >= 0x1F) { + D_801B2210 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801B123C; +extern s16 D_801B2210; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801B123C = D_801B123C + 1; + if (0x18 < D_801B123C) { + func_8012A4BC(); + D_801B2210 = 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_801B123C; +extern void (*D_801B1280)(void); +extern short D_801B12C4; +extern short D_801B12C6; +extern short D_801B12C8; +extern s16 D_801B2210; + +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_801B123C = D_801B123C + 1; + if (D_801B123C >= 0x19) { + if (D_801B1280 != 0) { + (*D_801B1280)(); + } else { + D_80114F30 = D_80114F30 + D_801B12C4; + D_80114F34 = D_80114F34 + D_801B12C6; + D_80114F38 = D_80114F38 + D_801B12C8; + D_80114F24 = D_80114F24 + D_801B12C4; + D_80114F28 = D_80114F28 + D_801B12C6; + D_80114F2C = D_80114F2C + D_801B12C8; + func_8012A4BC(); + } + D_801B2210 = 0; + } +} + + + +extern void (*D_80188674[])(void); + +void func_8017BE60(void *a0) { + D_80188674[*(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) */ + diff --git a/src/ov_SC06_027/ov_SC06_027_jr_8017A4AC.c b/src/ov_SC06_027/ov_SC06_027_jr_8017A4AC.c index ca045e83e..c1cf1351f 100644 --- a/src/ov_SC06_027/ov_SC06_027_jr_8017A4AC.c +++ b/src/ov_SC06_027/ov_SC06_027_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC06_027/nonmatchings/ov_SC06_027_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8019D28C; - extern s16 D_8019D28E; - extern s16 D_8019D290; - extern s16 D_8019D284; - extern s16 D_8019D286; - extern s16 D_8019D288; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019D28C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019D28E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019D290, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019D284, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019D286, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019D288, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8019D214; -extern u16 D_8019D294; -extern u16 D_8019D296; -extern u16 D_8019D298; -extern s16 D_8019D3B8; - -void func_8017B1D8(void) { - func_8012A418(); - D_8019D3B8 = 0; - D_8019D214 = 0; - D_8019D294 = D_80126B5E; - D_8019D296 = D_80126B62; - D_8019D298 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80181914[]; - extern s16 D_8019D28C; - extern s16 D_8019D284; - 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_80181914[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80181914[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019D28C; - s16 *p78C = &D_8019D284; - *(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_8019D3B8 = 1; - D_8019D214 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019D234; - extern SV4_8017B368 D_8019D23C; - extern s16 D_8019D28C; - extern s16 D_8019D284; - extern u16 D_80181914; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8019D234; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8019D23C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80181914)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80181914)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8019D28C) = loc0; - (*(SV4_8017B368 *)&D_8019D284) = loc1; - D_8019D3B8 = 1; - D_8019D214 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC06_027/nonmatchings/ov_SC06_027_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80181914[]; - extern s16 D_8019D28C; - extern s16 D_8019D28E; - extern s16 D_8019D290; - extern s16 D_8019D284; - extern s16 D_8019D286; - extern s16 D_8019D288; - 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_80181914[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80181914[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019D28C; - s16 *p78C = &D_8019D284; - *(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_8019D28E; - v798 = D_8019D290; - v78C = *p78C; - v78E = D_8019D286; - v790 = D_8019D288; - __asm__ __volatile__(""); - D_8019D3B8 = 1; - D_8019D214 = 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_8019D214; -extern s16 D_8019D28C; -extern s16 D_8019D28E; -extern s16 D_8019D290; -extern s16 D_8019D284; -extern s16 D_8019D286; -extern s16 D_8019D288; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8019D214 = 0; - D_8019D28C = (s16) D_80114F30; - D_8019D28E = (s16) D_80114F34; - D_8019D290 = (s16) D_80114F38; - D_8019D284 = (s16) D_80114F24; - D_8019D286 = (s16) D_80114F28; - D_8019D288 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8019D2A4; -extern s16 D_8019D2A6; -extern s16 D_8019D2A8; -extern s16 D_8019D2AC; -extern s16 D_8019D2AE; -extern s16 D_8019D2B0; - -void func_8017B824(void) { - D_8019D2A4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8019D2A6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8019D2A8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8019D2AC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8019D2AE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8019D2B0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8019D2A4; -extern s16 D_8019D2A6; -extern s16 D_8019D2A8; -extern s16 D_8019D2AC; -extern s16 D_8019D2AE; -extern s16 D_8019D2B0; - -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_8019D2A4; - D_80114F34 = D_8019D2A6; - D_80114F38 = D_8019D2A8; - D_80114F24 = D_8019D2AC; - D_80114F28 = D_8019D2AE; - D_80114F2C = D_8019D2B0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8019D28C), src[8..15] -> (*(S8_8017B8E8 *)&D_8019D284) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8019D28C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8019D284) = ((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_8019D294; -extern u16 D_8019D296; -extern u16 D_8019D298; - -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_8019D214; -extern short D_8019D29C; -extern short D_8019D29E; -extern short D_8019D2A0; -extern s16 D_8019D28C; -extern s16 D_8019D28E; -extern s16 D_8019D290; -extern s16 D_8019D284; -extern s16 D_8019D286; -extern s16 D_8019D288; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019D294); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019D296); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019D298); - (*(s16 *)&D_8019D29C) = buf[0]; - (*(s16 *)&D_8019D29E) = buf[1]; - (*(s16 *)&D_8019D2A0) = buf[2]; - D_8019D28C = D_80114F30 + buf[0]; - D_8019D214 = 0; - D_8019D28E = D_80114F34 + buf[1]; - D_8019D290 = D_80114F38 + buf[2]; - D_8019D284 = D_80114F24 + buf[0]; - D_8019D286 = D_80114F28 + buf[1]; - D_8019D288 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8019D234; -extern SV4 D_8019D23C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019D23C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8019D234 = 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_8019D23C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019D23C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8019D234) = 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_8019D23C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8019D25C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8019D25C; - 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_8019D214; -extern s16 D_8019D3B8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8019D214 = D_8019D214 + 1; - if (D_8019D214 >= 0x1F) { - D_8019D3B8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8019D214; -extern s16 D_8019D3B8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8019D214 = D_8019D214 + 1; - if (0x18 < D_8019D214) { - func_8012A4BC(); - D_8019D3B8 = 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_8019D214; -extern void (*D_8019D258)(void); -extern short D_8019D29C; -extern short D_8019D29E; -extern short D_8019D2A0; -extern s16 D_8019D3B8; - -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_8019D214 = D_8019D214 + 1; - if (D_8019D214 >= 0x19) { - if (D_8019D258 != 0) { - (*D_8019D258)(); - } else { - D_80114F30 = D_80114F30 + D_8019D29C; - D_80114F34 = D_80114F34 + D_8019D29E; - D_80114F38 = D_80114F38 + D_8019D2A0; - D_80114F24 = D_80114F24 + D_8019D29C; - D_80114F28 = D_80114F28 + D_8019D29E; - D_80114F2C = D_80114F2C + D_8019D2A0; - func_8012A4BC(); - } - D_8019D3B8 = 0; - } -} - - - -extern void (*D_801819B4[])(void); - -void func_8017BE60(void *a0) { - D_801819B4[*(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) */ diff --git a/src/ov_SC06_027/ov_SC06_027_jr_8017AE2C.c b/src/ov_SC06_027/ov_SC06_027_jr_8017AE2C.c new file mode 100644 index 000000000..e3d53c5f9 --- /dev/null +++ b/src/ov_SC06_027/ov_SC06_027_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018050C; +extern u8 D_8018047C; +extern u8 D_80180458; +extern u8 D_80180434; +extern u8 D_801804E8; +extern u8 D_801804C4; +extern u8 D_801804A0; +extern u8 D_80180410; +extern void func_80145934(void); +extern u8 D_8018059C; +extern u8 D_80180578; +extern u8 D_80180554; +extern u8 D_80180530; +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_8017F994[]; +extern unsigned char D_8017F9C4[]; +extern unsigned char D_8017FA14[]; +extern unsigned char D_8017FA44[]; +extern unsigned char D_8017FA74[]; +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(void); +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_8017FAC4[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8017FB8C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8017FC14[]; +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_8017FC1C; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8019C110; +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_8019C114; +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_8017FC4C; +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 void 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_8017FCF4[])(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_8017FD18[])(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_8017FD08; +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_8017FD2C[])(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_8017FD38[]; +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_8017FD48[])(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_8017FD60[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8017FD50; +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_8017FD74[])(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_8017FD90[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8017FD80; +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_8017FDA4[])(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_8017FDB8[])(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_8017FDCC; +extern void (*D_8017FDF4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8017FDD4; +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_8017FE40[])(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_8017FE44[])(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(void *a0); +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_801802A8[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_801802B8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8019C148; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801802E0[])(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_801802C0; +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_801802D0; +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_80180320[])(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_80180328[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801802F4; +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_80180334[])(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_80180304; +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_8019C150; +extern s32 D_8019C15C; +extern s32 D_8019C160; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180370[])(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_80180344[]; +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_8019C158; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801805C0[])(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_801803E0[]; +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_80180664[])(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_801807B8[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801805D4; +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_801807C0[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801805E4; +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_80180604; +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_801807C8[])(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(void); +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_801807F0[])(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_801807FC[])(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_80180670[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801808A0; +extern void func_8015D380(s32 a0); +extern unsigned char D_8017F984[]; +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_801808B4[]; +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_801808F0[]; +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_80180938; +extern u16 D_8018093A; +extern u16 D_8018093C; +extern s32 D_80180940; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80180948; +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_80180654; +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_801809CC[]; +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_80180A7C[])(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_80180AAC[]; +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_80180B10; +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_8019C168[]; +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_80180B34[])(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_8019C1C0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80180B7C[])(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_80180B6C; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_8019BA38[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_80180B84[])(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_80180BD8[])(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_80180BA0; +extern s16 D_80180BD4; +extern s16 D_80180BD2; +extern s16 D_80180BD0; +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_80180BE4[])(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_8019C220; +extern u8 D_8019C221; +extern u8 D_8019C222; +extern u8 D_8019C223; +extern u8 D_8019C224; +extern u8 D_8019C225; +extern u8 D_8019C226; +extern u8 D_8019C227; +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_80180BF4[])(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_8019C260; +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_80180C38[])(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_80180CB4[]; +extern s32 D_80180CD4[]; +extern u8 D_80180D50[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80180D70[]; +extern u8 D_80180D90[]; +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_80180E2C[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80180EA8[])(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_8019BA48; +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_80180EB4[])(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_80180EBC[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80180F84[])(void); +extern void func_80166618(void *a0); +extern void (*D_80180F94[])(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_80180FA4[])(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_80180FB0[])(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_80180F10[]; +extern u8 D_80180F24[]; +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_80180FC8[])(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_80180FD0[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80180FD8[])(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_80180FE0[])(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_80180FE8[])(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_80180FF0[])(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_80180FF8[])(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_801810AC[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801810B4[])(void); +extern void func_80169F00(void *a0); +extern char D_80181064[]; +extern char D_80181024[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_801810EC[])(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_801810F8[])(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_80181140[])(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_801811BC[])(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_8019C580; +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_801811B0[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_801811F4[]; +extern unsigned short D_801811FC[]; +extern unsigned short D_80181204[]; +extern unsigned char D_8019C588[]; +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_8019C580; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018120C[])(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_8019C6BC; +extern M2C_UNK D_8019C6C0; +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_8019C648; +extern void (*D_8018123C[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8019C6C4[]; +extern u8 D_8019C6CC[]; +extern u8 D_8019C67C[]; +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_80181244[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80181260[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80181268[])(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_801812D0[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80181274; +extern u8 D_80181280; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80181304[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018130C[])(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_80181360[])(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_80181394[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80181384[]; +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_801813B0; +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); +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_80181428[])(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_80181430[])(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_80181438[])(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_80181440[])(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_80181448[])(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_80181450[])(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_8018145C[])(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_80181468[])(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_80181474[])(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_80181484[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80181494[])(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_8018149C[])(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_801814A4[])(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_801814AC[])(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_801814B4[])(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_801814BC[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801814C4[])(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_801814CC[])(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_801814D4[])(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_801814DC[])(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_801814E4[])(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_801814EC[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801814F4[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801814FC[])(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_80181504[])(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_8018150C[])(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_80181514[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018151C[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80181524[])(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_8018152C[])(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_80181534[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018153C[])(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_80181544[])(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_80181588[])(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_8018154C; +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_801815B8[])(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_801815F4[])(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(s32); +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_8018164C[])(); +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_8018165C[])(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_80181664[])(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_801817CC[])(); +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_801817D8[])(); +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_8019BC90; +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 int func_801789AC(void); +extern s16 D_8019D3B8; +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_8019CE00; +extern short D_8019D42C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8019D22C; +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_8019D254; +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_8019D210; +extern s32 func_8017A3B0(void); +extern short D_8019D24C; +extern short D_8019D248; +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_8019D388; +extern s16 D_8019D38A; +extern s16 D_8019D394; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_8019D388; + + 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_8019D394); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_8019D388+0xC == &D_8019D394; 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_8019D388 + 0xC)) < 0x101) { + D_8019D388 = 0; + D_8019D38A = 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_8019D394); + 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_8019D388 + 0xC)) < 0x101) { + D_8019D388 = 0; + D_8019D38A = 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_8019D28C; + extern s16 D_8019D28E; + extern s16 D_8019D290; + extern s16 D_8019D284; + extern s16 D_8019D286; + extern s16 D_8019D288; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019D28C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019D28E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019D290, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019D284, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019D286, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019D288, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8019D214; +extern u16 D_8019D294; +extern u16 D_8019D296; +extern u16 D_8019D298; +extern s16 D_8019D3B8; + +void func_8017B1D8(void) { + func_8012A418(); + D_8019D3B8 = 0; + D_8019D214 = 0; + D_8019D294 = D_80126B5E; + D_8019D296 = D_80126B62; + D_8019D298 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80181914[]; + extern s16 D_8019D28C; + extern s16 D_8019D284; + 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_80181914[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80181914[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019D28C; + s16 *p78C = &D_8019D284; + *(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_8019D3B8 = 1; + D_8019D214 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019D234; + extern SV4_8017B368 D_8019D23C; + extern s16 D_8019D28C; + extern s16 D_8019D284; + extern u16 D_80181914; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8019D234; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8019D23C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80181914)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80181914)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8019D28C) = loc0; + (*(SV4_8017B368 *)&D_8019D284) = loc1; + D_8019D3B8 = 1; + D_8019D214 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC06_027/nonmatchings/ov_SC06_027_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80181914[]; + extern s16 D_8019D28C; + extern s16 D_8019D28E; + extern s16 D_8019D290; + extern s16 D_8019D284; + extern s16 D_8019D286; + extern s16 D_8019D288; + 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_80181914[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80181914[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019D28C; + s16 *p78C = &D_8019D284; + *(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_8019D28E; + v798 = D_8019D290; + v78C = *p78C; + v78E = D_8019D286; + v790 = D_8019D288; + __asm__ __volatile__(""); + D_8019D3B8 = 1; + D_8019D214 = 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_8019D214; +extern s16 D_8019D28C; +extern s16 D_8019D28E; +extern s16 D_8019D290; +extern s16 D_8019D284; +extern s16 D_8019D286; +extern s16 D_8019D288; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8019D214 = 0; + D_8019D28C = (s16) D_80114F30; + D_8019D28E = (s16) D_80114F34; + D_8019D290 = (s16) D_80114F38; + D_8019D284 = (s16) D_80114F24; + D_8019D286 = (s16) D_80114F28; + D_8019D288 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8019D2A4; +extern s16 D_8019D2A6; +extern s16 D_8019D2A8; +extern s16 D_8019D2AC; +extern s16 D_8019D2AE; +extern s16 D_8019D2B0; + +void func_8017B824(void) { + D_8019D2A4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8019D2A6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8019D2A8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8019D2AC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8019D2AE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8019D2B0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8019D2A4; +extern s16 D_8019D2A6; +extern s16 D_8019D2A8; +extern s16 D_8019D2AC; +extern s16 D_8019D2AE; +extern s16 D_8019D2B0; + +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_8019D2A4; + D_80114F34 = D_8019D2A6; + D_80114F38 = D_8019D2A8; + D_80114F24 = D_8019D2AC; + D_80114F28 = D_8019D2AE; + D_80114F2C = D_8019D2B0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8019D28C), src[8..15] -> (*(S8_8017B8E8 *)&D_8019D284) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8019D28C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8019D284) = ((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_8019D294; +extern u16 D_8019D296; +extern u16 D_8019D298; + +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_8019D214; +extern short D_8019D29C; +extern short D_8019D29E; +extern short D_8019D2A0; +extern s16 D_8019D28C; +extern s16 D_8019D28E; +extern s16 D_8019D290; +extern s16 D_8019D284; +extern s16 D_8019D286; +extern s16 D_8019D288; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019D294); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019D296); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019D298); + (*(s16 *)&D_8019D29C) = buf[0]; + (*(s16 *)&D_8019D29E) = buf[1]; + (*(s16 *)&D_8019D2A0) = buf[2]; + D_8019D28C = D_80114F30 + buf[0]; + D_8019D214 = 0; + D_8019D28E = D_80114F34 + buf[1]; + D_8019D290 = D_80114F38 + buf[2]; + D_8019D284 = D_80114F24 + buf[0]; + D_8019D286 = D_80114F28 + buf[1]; + D_8019D288 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8019D234; +extern SV4 D_8019D23C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019D23C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8019D234 = 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_8019D23C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019D23C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8019D234) = 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_8019D23C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8019D25C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8019D25C; + 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_8019D214; +extern s16 D_8019D3B8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8019D214 = D_8019D214 + 1; + if (D_8019D214 >= 0x1F) { + D_8019D3B8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8019D214; +extern s16 D_8019D3B8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8019D214 = D_8019D214 + 1; + if (0x18 < D_8019D214) { + func_8012A4BC(); + D_8019D3B8 = 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_8019D214; +extern void (*D_8019D258)(void); +extern short D_8019D29C; +extern short D_8019D29E; +extern short D_8019D2A0; +extern s16 D_8019D3B8; + +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_8019D214 = D_8019D214 + 1; + if (D_8019D214 >= 0x19) { + if (D_8019D258 != 0) { + (*D_8019D258)(); + } else { + D_80114F30 = D_80114F30 + D_8019D29C; + D_80114F34 = D_80114F34 + D_8019D29E; + D_80114F38 = D_80114F38 + D_8019D2A0; + D_80114F24 = D_80114F24 + D_8019D29C; + D_80114F28 = D_80114F28 + D_8019D29E; + D_80114F2C = D_80114F2C + D_8019D2A0; + func_8012A4BC(); + } + D_8019D3B8 = 0; + } +} + + + +extern void (*D_801819B4[])(void); + +void func_8017BE60(void *a0) { + D_801819B4[*(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) */ + diff --git a/src/ov_SC06_029/ov_SC06_029_jr_8017A4AC.c b/src/ov_SC06_029/ov_SC06_029_jr_8017A4AC.c index 16f02bcda..abd2df3cf 100644 --- a/src/ov_SC06_029/ov_SC06_029_jr_8017A4AC.c +++ b/src/ov_SC06_029/ov_SC06_029_jr_8017A4AC.c @@ -2939,1755 +2939,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801DCBAC; - extern s16 D_801DCBAE; - extern s16 D_801DCBB0; - extern s16 D_801DCBA4; - extern s16 D_801DCBA6; - extern s16 D_801DCBA8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801DCBAC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801DCBAE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801DCBB0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801DCBA4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801DCBA6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801DCBA8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801DCB34; -extern u16 D_801DCBB4; -extern u16 D_801DCBB6; -extern u16 D_801DCBB8; -extern s16 D_801E2118; - -void func_8017B1D8(void) { - func_8012A418(); - D_801E2118 = 0; - D_801DCB34 = 0; - D_801DCBB4 = D_80126B5E; - D_801DCBB6 = D_80126B62; - D_801DCBB8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018FEA8[]; - extern s16 D_801DCBAC; - extern s16 D_801DCBA4; - 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_8018FEA8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018FEA8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801DCBAC; - s16 *p78C = &D_801DCBA4; - *(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_801E2118 = 1; - D_801DCB34 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801DCB54; - extern SV4_8017B368 D_801DCB5C; - extern s16 D_801DCBAC; - extern s16 D_801DCBA4; - extern u16 D_8018FEA8; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801DCB54; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801DCB5C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018FEA8)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018FEA8)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801DCBAC) = loc0; - (*(SV4_8017B368 *)&D_801DCBA4) = loc1; - D_801E2118 = 1; - D_801DCB34 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018FEA8[]; - extern s16 D_801DCBAC; - extern s16 D_801DCBAE; - extern s16 D_801DCBB0; - extern s16 D_801DCBA4; - extern s16 D_801DCBA6; - extern s16 D_801DCBA8; - 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_8018FEA8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018FEA8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801DCBAC; - s16 *p78C = &D_801DCBA4; - *(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_801DCBAE; - v798 = D_801DCBB0; - v78C = *p78C; - v78E = D_801DCBA6; - v790 = D_801DCBA8; - __asm__ __volatile__(""); - D_801E2118 = 1; - D_801DCB34 = 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_801DCB34; -extern s16 D_801DCBAC; -extern s16 D_801DCBAE; -extern s16 D_801DCBB0; -extern s16 D_801DCBA4; -extern s16 D_801DCBA6; -extern s16 D_801DCBA8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801DCB34 = 0; - D_801DCBAC = (s16) D_80114F30; - D_801DCBAE = (s16) D_80114F34; - D_801DCBB0 = (s16) D_80114F38; - D_801DCBA4 = (s16) D_80114F24; - D_801DCBA6 = (s16) D_80114F28; - D_801DCBA8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801DCBC4; -extern s16 D_801DCBC6; -extern s16 D_801DCBC8; -extern s16 D_801DCBCC; -extern s16 D_801DCBCE; -extern s16 D_801DCBD0; - -void func_8017B824(void) { - D_801DCBC4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801DCBC6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801DCBC8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801DCBCC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801DCBCE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801DCBD0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801DCBC4; -extern s16 D_801DCBC6; -extern s16 D_801DCBC8; -extern s16 D_801DCBCC; -extern s16 D_801DCBCE; -extern s16 D_801DCBD0; - -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_801DCBC4; - D_80114F34 = D_801DCBC6; - D_80114F38 = D_801DCBC8; - D_80114F24 = D_801DCBCC; - D_80114F28 = D_801DCBCE; - D_80114F2C = D_801DCBD0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801DCBAC), src[8..15] -> (*(S8_8017B8E8 *)&D_801DCBA4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801DCBAC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801DCBA4) = ((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_801DCBB4; -extern u16 D_801DCBB6; -extern u16 D_801DCBB8; - -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_801DCB34; -extern short D_801DCBBC; -extern short D_801DCBBE; -extern short D_801DCBC0; -extern s16 D_801DCBAC; -extern s16 D_801DCBAE; -extern s16 D_801DCBB0; -extern s16 D_801DCBA4; -extern s16 D_801DCBA6; -extern s16 D_801DCBA8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801DCBB4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801DCBB6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801DCBB8); - (*(s16 *)&D_801DCBBC) = buf[0]; - (*(s16 *)&D_801DCBBE) = buf[1]; - (*(s16 *)&D_801DCBC0) = buf[2]; - D_801DCBAC = D_80114F30 + buf[0]; - D_801DCB34 = 0; - D_801DCBAE = D_80114F34 + buf[1]; - D_801DCBB0 = D_80114F38 + buf[2]; - D_801DCBA4 = D_80114F24 + buf[0]; - D_801DCBA6 = D_80114F28 + buf[1]; - D_801DCBA8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801DCB54; -extern SV4 D_801DCB5C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801DCB5C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801DCB54 = 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_801DCB5C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801DCB5C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801DCB54) = 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_801DCB5C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801DCB7C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801DCB7C; - 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_801DCB34; -extern s16 D_801E2118; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801DCB34 = D_801DCB34 + 1; - if (D_801DCB34 >= 0x1F) { - D_801E2118 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801DCB34; -extern s16 D_801E2118; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801DCB34 = D_801DCB34 + 1; - if (0x18 < D_801DCB34) { - func_8012A4BC(); - D_801E2118 = 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_801DCB34; -extern void (*D_801DCB78)(void); -extern short D_801DCBBC; -extern short D_801DCBBE; -extern short D_801DCBC0; -extern s16 D_801E2118; - -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_801DCB34 = D_801DCB34 + 1; - if (D_801DCB34 >= 0x19) { - if (D_801DCB78 != 0) { - (*D_801DCB78)(); - } else { - D_80114F30 = D_80114F30 + D_801DCBBC; - D_80114F34 = D_80114F34 + D_801DCBBE; - D_80114F38 = D_80114F38 + D_801DCBC0; - D_80114F24 = D_80114F24 + D_801DCBBC; - D_80114F28 = D_80114F28 + D_801DCBBE; - D_80114F2C = D_80114F2C + D_801DCBC0; - func_8012A4BC(); - } - D_801E2118 = 0; - } -} - - - -extern void (*D_8018FF48[])(void); - -void func_8017BE60(void *a0) { - D_8018FF48[*(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) */ - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017BEE0); - - - -extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); - void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3) { - ((void (*)(void *, void *, s32, s32))func_8017BF34)(a0, a1, (s16)a2, (s16)a3); - } - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017BF34); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017BFBC); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017C010); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017C068); - - -extern void (*D_8018FFA8[])(void); - -void func_8017C114(void *a0) { - D_8018FFA8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017C150); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017C43C); - -extern s32 D_801DCCA0; - void func_8017C8D0(void) { - D_801DCCA0 = 0x80; - } - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017C8E4); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017C918); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017C954); - - -extern void (*D_8018FFB0[])(void); - -void func_8017DBFC(void *a0) { - D_8018FFB0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017DC38); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017DDE0); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017DF74); - -extern void func_8002931C(void); - void func_8017E22C(void) { - ((void (*)(s32))func_8002931C)(0x4740000); - } - - - -extern void (*D_80190028[])(void); - -void func_8017E24C(void *a0) { - D_80190028[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017E288); - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017E2CC(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_80190030[])(void); - -void func_8017E2F0(void *a0) { - D_80190030[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017E32C); - - -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_8017E36C(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 s32 func_800D1EBC(void); - void func_8017E3E8(void) { - func_800D1EBC(); - } - - -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801901CC; - -void func_8017E408(void) { - ((void (*)(void *, s32))func_8016EE40)(&D_801901CC, 0x1000000); -} - - -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); - extern s32 D_801901D0; - void func_8017E430(void) { - ((void (*)(void *, s32))func_8016EE40)(&D_801901D0, 0x1000000); - } - - - -extern void (*D_801901D8[])(void); - -void func_8017E458(void *a0) { - D_801901D8[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017E494); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017E584); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017E610); - -extern s32 D_80126B58; -extern s16 D_80126B30; -extern void func_8017303C(void *); -extern s32 func_80174650(s32); -void func_8017E640(void) { - - extern u8 D_801900B4[]; - func_8017303C((void *)D_801900B4); - D_80126B30 = 0; - func_80174650((s32)&D_80126B58); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017E680); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017E6B0); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017E6E0); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017E770); - - -extern void (*D_801901E0[])(void); - -void func_8017E800(void *a0) { - D_801901E0[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017E83C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017E8DC); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017E95C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017EB24); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017EBC4); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017EDA8); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017EE10); - -void func_8017EEFC(void) { -} - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017EF04); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017EF34); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017F300); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017F330); - -void func_8017F970(s32 arg0) { - if (arg0 != 0) { - *(s32 *)(arg0 + 0xE0) = 1; - } - } - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017F984); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017F9C0); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8017FE58); - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80180030); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80180198); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801801D8); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801804C8); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801808C4); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801809D4); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80180A70); - -void func_80180E58(void) { -} - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80180E60); - -extern void func_8018612C(void); -void func_80180EA8(void) { - func_8018612C(); -} - - -extern s32 func_8018B1E0(s32 arg); - void func_80180EC8(void) { - func_8018B1E0(0x5); - } - - -extern s32 func_8018B20C(void); - void func_80180EE8(void) { - func_8018B20C(); - } - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80180F08); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80180F4C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80180F88); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80180FE0); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80181170); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80181268); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801812AC); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80181334); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80181378); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801814B0); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80181708); - -extern void (*D_8019073C[])(void); - -void func_8018180C(void *a0) { - D_8019073C[*(u8 *)((s32)a0 + 0x4)](); -} - - - -// @class: struct -// @stuck: none — MATCH (fn-ptr table %lo-fold via extern array of code ptrs) - -extern code_fn D_801907B4[]; - -extern s32 func_80181DF8(s32 a0); - -void func_80181848(int param_1) -{ - D_801907B4[*(unsigned short *)(param_1 + 2)](); - ((void (*)(int))func_80181DF8)(param_1); - return; -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80181898); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80181964); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80181AC0); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80181C04); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80181D40); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80181D94); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80181DF8); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80182334); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80182388); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801825D8); - - -extern void (*D_801908F8[])(void); - -void func_801827D0(void *a0) { - D_801908F8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018280C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801828E4); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80182BC8); - - -extern void (*D_80190940[])(void); - -void func_80182D74(void *a0) { - D_80190940[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80182DB0); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80182ED8); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801833FC); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80183478); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801834D8); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80183534); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80183848); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801838BC); - - -extern void (*D_801909E4[])(void); - -void func_80183A1C(void *a0) { - D_801909E4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80183A58); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80183B1C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80183CB8); - - -extern void (*D_80190A00[])(void); - -void func_80183D48(void *a0) { - D_80190A00[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80183D84); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80184084); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80184464); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018452C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80184564); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80184C68); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80184E6C); - -void func_80184EA0(s32 arg0) { - if (arg0 != 0) { - *(s32 *)((s32)arg0 + 0x4) |= 0x80000000; - } - } - - - -extern void (*D_80190A18[])(void); - -void func_80184EC0(void *a0) { - D_80190A18[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80184EFC); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80184FF8); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80185214); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801852E4); - -extern void (*D_80190A20[])(void); - -void func_8018562C(void *a0) { - D_80190A20[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80190A28[])(void); - -void func_80185668(void *a0) { - D_80190A28[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_801856A4(s32 *a0, s32 a1) { - *(s32 *)((s32)a0 + 0x0) = a1; - *(s8 *)((s32)a0 + 0x7) = 0; - *(s16 *)((s32)a0 + 0x4) = (*(s32 *)((s32)a1 + 0x4)) & 0x3F; - } - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801856C0); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801857A4); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801859F4); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80185C6C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80185C88); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80185D44); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80185E00); - - -extern void (*D_80190A30[])(void); - -void func_80185F08(void *a0) { - D_80190A30[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_80185F44(void) { -} - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80185F4C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80186044); - -extern void func_8014C6D0(void); -extern s32 func_8012AD50(void *a0); -extern s16 D_80126D20; - -void func_801860EC(s32 *a0) { - ((void (*)(s32 *))func_8014C6D0)(a0); - D_80126D20 = 0; - ((s32 (*)(s32))func_8012AD50)((s32)a0); -} - - -void func_80186124(void) { -} - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018612C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018615C); - -extern s16 D_801152A0; - void func_8018618C(s16 arg0) { - D_801152A0 = arg0; - } - - -s32 func_8018619C(void) { - return 0x82; - } - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801861A4); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80186214); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801862C0); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80186334); - -void func_801863C0(void) { -} - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801863C8); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018641C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80186470); - -void func_8018653C(s32 *a0, s32 *a1) { - *(u16 *)((s32)a1 + 0x8) = *(u16 *)((s32)a0 + 0x6); - *(u16 *)((s32)a1 + 0xA) = *(u16 *)((s32)a0 + 0xA) + *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0xA); - *(u16 *)((s32)a1 + 0xC) = *(u16 *)((s32)a0 + 0xE); - } - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018656C); - - -extern void (*D_80192174[])(void); - -void func_80186674(void *a0) { - D_80192174[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801866B0); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801867D0); - -extern void func_8012BEE8(void); -void func_80186960(void) { - func_8012BEE8(); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80186980); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801869F8); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80186A28); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80186A58); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80186A88); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80186AB8); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80186B00); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80186B6C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80186BD4); - -extern s32 D_801DFF78; -extern void func_8012E88C(u8 *a0); - -void func_80186BEC(void) { - ((void (*)(s32))func_8012E88C)(*(s32 *)&D_801DFF78); -} - - -extern s32 D_801DFF78; -extern void func_8012E8A8(u8 *a0); - -void func_80186C14(void) { - ((void (*)(s32))func_8012E8A8)(D_801DFF78); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80186C3C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80186C88); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80186CC4); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80186D30); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80186D64); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80186DA0); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80186E18); - -extern s32 D_801DFF7C; -extern void func_8012E88C(u8 *a0); - -void func_80186F9C(void) { - ((void (*)(s32))func_8012E88C)(D_801DFF7C); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80186FC4); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018702C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80187094); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801870B4); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801870D4); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80187148); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801871E8); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80187230); - -extern void func_800D0C48(s32 arg); - void func_801872C4(void) { - func_800D0C48(0x1); - } - - -extern s32 func_8001AAA0(s32 arg); - s32 func_801872E4(void) { - return func_8001AAA0(0x95) != 0; - } - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80187304); - -extern s32 D_801DFF74; -extern void func_8012E8A8(u8 *a0); - -void func_8018736C(void) { - ((void (*)(s32))func_8012E8A8)(D_801DFF74); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80187394); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801873F4); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018743C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80187660); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80187A04); - -extern s32 D_801DFF88; -extern void func_8012E88C(u8 *a0); - -void func_80187B30(void) { - ((void (*)(s32))func_8012E88C)(D_801DFF88); -} - - -extern s32 D_801DFF88; -extern void func_8012E8A8(u8 *a0); - -void func_80187B58(void) { - ((void (*)(s32))func_8012E8A8)(D_801DFF88); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80187B80); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80187C2C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80187CE4); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80187D64); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80187E84); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801881D8); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80188240); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801883A0); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801883FC); - -extern s32 func_8017C8E4(void); - s32 func_80188470(void) { - return func_8017C8E4() != 0; - } - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80188490); - -extern s16 D_801DFFDC; - void func_80188548(void) { - D_801DFFDC += 1; - } - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80188568); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801885C0); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018865C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018884C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801888A8); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80188904); - -extern void func_8012A018(s32 a, s32 b); - extern void func_80188BB0(); - void func_80188960(void) { - ((void (*)(void *, s32))func_8012A018)((void *)func_80188BB0, 0x2); - } - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80188988); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80188A90); - - -extern void (*D_801921BC[])(void); - -void func_80188BB0(void *a0) { - D_801921BC[*(u8 *)((s32)a0 + 0x4)](); -} - - - -extern void (*D_801921C8[])(void); - -void func_80188BEC(void *a0) { - D_801921C8[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801921D0[])(void); - -void func_80188C28(void *a0) { - D_801921D0[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801921D8[])(void); - -void func_80188C64(void *a0) { - D_801921D8[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801921E0[])(void); - -void func_80188CA0(void *a0) { - D_801921E0[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80192210[])(void); - -void func_80188CDC(void *a0) { - D_80192210[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80192298[])(void); - -void func_80188D18(void *a0) { - D_80192298[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801922A4[])(void); - -void func_80188D54(void *a0) { - D_801922A4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80188D90); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80189148); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801891D0); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80189244); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80189440); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_801898CC); - - -extern void (*D_801922F4[])(void); - -void func_80189B38(void *a0) { - D_801922F4[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80189B74); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80189BB4); - -void func_80189CE4(void) { -} - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80189CEC); - -void func_80189E10(void) { -} - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80189E18); - -void func_80189F50(void) { -} - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_80189F58); - -void func_8018A07C(void) { -} - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018A084); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018A180); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018A27C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018A314); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018A3CC); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018A41C); - -void func_8018A564(void) { -} - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018A56C); - -void func_8018A5E8(void) { -} - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018A5F0); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018A6A4); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018A7C4); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018A8D4); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018A9FC); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018AA60); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018ABC0); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018ADA4); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018AE60); - - -extern void (*D_801D7288[])(void); - -void func_8018AF0C(void *a0) { - D_801D7288[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018AF48); - -extern void func_8018B188(); - void func_8018B148(void) { - func_8018B188(); - } - - -extern void func_80146C3C(void); - void func_8018B168(void) { - func_80146C3C(); - } - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018B188); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018B1E0); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018B20C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018B250); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018B2A8); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018B2F8); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018B364); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018B4B8); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018B50C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018B530); - - -extern void (*D_801D72C8[])(void); - -void func_8018B574(void *a0) { - D_801D72C8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018B5B0); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018B6FC); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018B774); - - -void func_8018B7A4(void *a0) { - *(s32 *)((s32)a0 + 0x0) = 0xF0F0F0; - *(s32 *)((s32)a0 + 0x4) = 0; - } - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018B7B8); - - -extern void (*D_801D7300[])(void); - -void func_8018B820(void *a0) { - D_801D7300[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018B85C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018B8A8); - -void func_8018B8F0(void) { -} - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018B8F8); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018BA5C); - - -extern void (*D_801D7358[])(void); - -void func_8018BDD8(void *a0) { - D_801D7358[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018BE14); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018BE68); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018BF1C); - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017A4AC", func_8018BF88); - - -extern s32 D_801E2018; -extern s32 func_8012C588(s32 a0, s32 a1); - -s32 func_8018BFC8(s32 a0, s32 a1) { - D_801E2018 = a1; - return func_8012C588(0x85, a0); -} - - -extern u8 D_801152A8[]; -extern s32 D_801E2018; -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_800D23D0(void *a0); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012C218(void *a0); -extern void func_8012F14C(s32); -extern s32 func_80134510(s32 arg); - -// @class: regalloc-order -// @stuck: none — MATCH (145/145 ins, match_one confirmed) - -typedef struct { short vx, vy, vz, pad; } SVECTOR_80184F08; -typedef struct { u8 b[8]; } S8_80184F08; - - - -s32 func_8018BFF8(s32 param_1) { - - extern M2C_UNK D_8018C894; - extern s32 func_8012C354(s32 a0, s32 a1); - extern void RotMatrixZ(s32, void *); - extern void MulMatrix0(s32, void *, s32); - extern s32 D_801D9948; - extern char * D_801D997C; - extern char D_801E1FF8[]; - - S8_80184F08 s60; - SVECTOR_80184F08 sStack_58; - S8_80184F08 s50; - int auStack_48[8]; - s32 iVar5, iVar8; - char *puVar2, *puVar4; - u16 uVar3; - - if (((s32 (*)(s32, void *))func_8012C354)(param_1, &D_801D9948) == 0) { - ((void (*)(s32))func_8012C218)(param_1); - } - ((void(*)(s32, void *))func_8012A828)(param_1, &(*(s32 *)&D_8018C894)); - iVar5 = *(s32 *)(param_1 + 0x20); - *(s16 *)(param_1 + 0x70) = 0x80; - *(s32 *)(iVar5 + 4) |= 0x50000040; - *(u16 *)(iVar5 + 0x2c) |= 1; - iVar8 = *(s32 *)(*(s32 *)(param_1 + 0x64) + 0x20) + 0x34; - ((void (*)(s32, s32, void *))func_8012F14C)(iVar8, D_801E2018, &s60); - s50 = s60; - sStack_58.vz = 0x1800; - sStack_58.vy = 0x1800; - sStack_58.vx = 0x1800; - ((void (*)(void *, void *))func_80017DC4)(&sStack_58, auStack_48); - RotMatrixZ(rand() & 0xfff, auStack_48); - MulMatrix0(iVar8, auStack_48, iVar5 + 0x34); - ((void (*)(void *, s32))func_80017E68)(&s50, iVar5 + 0x34); - - /* pool-alloc: gcc routes the loaded pointer through a caller-saved reg ($v0) - before the callee-saved home ($s1) — pin it to reproduce the extra move. */ - { - register char *tmp __asm__("$2"); - tmp = D_801D997C; - puVar2 = tmp; - } - puVar4 = puVar2 + 0x20; - D_801D997C = puVar4; - *(char **)(param_1 + 0xcc) = puVar2; - if (D_801E1FF8 < puVar4) { - D_801D997C = D_801E1FF8 - 0x120; - } - func_800D20C0(&s60, &sStack_58, 7); - func_800D23D0(&sStack_58); - ((void(*)(void *, void *))RotMatrixYXZ)(&sStack_58, puVar2); - ((void (*)(void *, s32))func_80017E68)(&s60, (s32)puVar2); - - uVar3 = *(u16 *)((char *)&s50 + 2); - if (((s32 (*)(void *))func_80134510)(&s50) != 0 && - (s32)(s16)uVar3 - (s32)*(s16 *)((char *)&s50 + 2) < 0x80) { - *(s16 *)((char *)&s50 + 2) = *(s16 *)((char *)&s50 + 2) - 4; - { - register char *tmp __asm__("$3"); - tmp = D_801D997C; - puVar2 = tmp; - } - puVar4 = puVar2 + 0x20; - D_801D997C = puVar4; - *(char **)(param_1 + 0xd0) = puVar2; - if (D_801E1FF8 < puVar4) { - D_801D997C = D_801E1FF8 - 0x120; - } - func_800D23D0(&(*(s32 *)&D_801152A8)); - ((void(*)(void *, void *))RotMatrixYXZ)(&(*(s32 *)&D_801152A8), puVar2); - ((void (*)(void *, s32))func_80017E68)(&s50, (s32)puVar2); - } - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; -} - - -extern s32 func_80017758(void *a0, void *a1); -extern void func_8012C218(void *a0); - - -// @class: regalloc-order -// @stuck: none — MATCH (168 ins). Keys: (1) pin param->$s1 via `register int self __asm__("$17")=param_1` -// (natural alloc put the short loop-counter in $s1); (2) block2's guarded dest via a test-temp -// `td=load; if(td){dest=td; ...}` forces the range-split `lw $a1; addu $s3,$a1,$0` the target has; -// (3) counter is `short i` do-while (keeps the `addu $s2,$v0,$0` raw-copy + sll16/sra16 compare); -// (4) gcc-2.7.2 loads s8/s16 via lbu/lhu+shift-extend (not lb/lh) so `signed char *p; *(s16*)buf=*p++` -// emits lbu;sll24;sra24;sh; (5) else-branch zero-byte asm barrier forces `addu $a0,$s1,$0` (else gcc -// reuses the still-live incoming $a0 with a nop delay slot). - -s32 func_8018C23C(s32 param_1) { - - extern signed char D_801D9934[]; - register int self __asm__("$17") = ((int)param_1); - int iVar6; - int iVar1; - unsigned char buf[0x34]; - signed char *p; - short i; - int dest; - int td; - unsigned short t; - - iVar1 = *(int *)(self + 0x1c); - iVar6 = *(int *)(self + 0x20); - *(int *)(self + 0x1c) = iVar1 + 1; - if (iVar1 < 2) { - p = D_801D9934; - i = 0; - dest = *(int *)(self + 0xcc); - t = *(unsigned short *)(self + 0x70); - *(short *)(buf + 0x0c) = 0; - *(short *)(buf + 0x0a) = 0; - *(short *)(buf + 0x08) = 0; - *(short *)(buf + 0x1c) = 0; - *(short *)(buf + 0x14) = 0; - *(short *)(buf + 0x04) = 0; - buf[0x22] = 0; - buf[0x21] = 0; - buf[0x20] = 0; - buf[0x2a] = 0; - buf[0x29] = 0; - buf[0x28] = 0; - buf[0x2e] = 0; - buf[0x2d] = 0; - buf[0x2c] = 0; - *(int *)(buf + 0x30) = 0x50000000; - buf[0x25] = t; - buf[0x26] = t; - buf[0x24] = t; - do { - *(short *)(buf + 0x00) = *p++; - *(short *)(buf + 0x02) = *p++; - *(short *)(buf + 0x10) = *p++; - *(short *)(buf + 0x12) = *p++; - *(short *)(buf + 0x18) = *p++; - *(short *)(buf + 0x1a) = *p--; - func_80017758(buf, (void *)dest); - i++; - } while (i < 4); - - td = *(int *)(self + 0xd0); - if (td != 0) { - dest = td; - p = D_801D9934; - i = 0; - t = *(unsigned short *)(self + 0x70); - *(short *)(buf + 0x0c) = 0; - *(short *)(buf + 0x0a) = 0; - *(short *)(buf + 0x08) = 0; - *(short *)(buf + 0x1c) = 0; - *(short *)(buf + 0x14) = 0; - *(short *)(buf + 0x04) = 0; - buf[0x22] = 0; - buf[0x21] = 0; - buf[0x20] = 0; - buf[0x2a] = 0; - buf[0x29] = 0; - buf[0x28] = 0; - buf[0x2e] = 0; - buf[0x2d] = 0; - buf[0x2c] = 0; - *(int *)(buf + 0x30) = 0x50000000; - buf[0x25] = t; - buf[0x26] = t; - buf[0x24] = t; - do { - *(short *)(buf + 0x00) = *p++; - *(short *)(buf + 0x02) = *p++; - *(short *)(buf + 0x10) = *p++; - *(short *)(buf + 0x12) = *p++; - *(short *)(buf + 0x18) = *p++; - *(short *)(buf + 0x1a) = *p--; - func_80017758(buf, (void *)dest); - i++; - } while (i < 4); - } - *(short *)(self + 0x70) = *(short *)(self + 0x70) >> 1; - *(unsigned short *)(iVar6 + 0x2c) |= 1; - } else { - __asm__ __volatile__("" : "=r"(self) : "0"(self)); - func_8012C218((void *)self); - } -} - - - -extern void (*D_801D9980[])(void); - -void func_8018C4DC(void *a0) { - D_801D9980[*(u16 *)((s32)a0 + 0x2)](); -} - - - - diff --git a/src/ov_SC06_029/ov_SC06_029_jr_8017AE2C.c b/src/ov_SC06_029/ov_SC06_029_jr_8017AE2C.c new file mode 100644 index 000000000..9301fc058 --- /dev/null +++ b/src/ov_SC06_029/ov_SC06_029_jr_8017AE2C.c @@ -0,0 +1,4626 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8018EAA0; +extern u8 D_8018EA10; +extern u8 D_8018E9EC; +extern u8 D_8018E9C8; +extern u8 D_8018EA7C; +extern u8 D_8018EA58; +extern u8 D_8018EA34; +extern u8 D_8018E9A4; +extern void func_80145934(void); +extern u8 D_8018EB30; +extern u8 D_8018EB0C; +extern u8 D_8018EAE8; +extern u8 D_8018EAC4; +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_8018DF28[]; +extern unsigned char D_8018DF58[]; +extern unsigned char D_8018DFA8[]; +extern unsigned char D_8018DFD8[]; +extern unsigned char D_8018E008[]; +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(void); +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_8018E058[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8018E120[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018E1A8[]; +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_8018E1B0; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801DBA30; +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_801DBA34; +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_8018E1E0; +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 void 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_8018E288[])(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_8018E2AC[])(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_8018E29C; +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_8018E2C0[])(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_8018E2CC[]; +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_8018E2DC[])(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_8018E2F4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018E2E4; +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_8018E308[])(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_8018E324[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018E314; +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_8018E338[])(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_8018E34C[])(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_8018E360; +extern void (*D_8018E388[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018E368; +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_8018E3D4[])(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_8018E3D8[])(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(void *a0); +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_8018E83C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018E84C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801DBA68; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018E874[])(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_8018E854; +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_8018E864; +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_8018E8B4[])(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_8018E8BC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018E888; +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_8018E8C8[])(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_8018E898; +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_801DBA70; +extern s32 D_801DBA7C; +extern s32 D_801DBA80; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018E904[])(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_8018E8D8[]; +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_801DBA78; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018EB54[])(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_8018E974[]; +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_8018EBF8[])(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_8018ED4C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018EB68; +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_8018ED54[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018EB78; +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_8018EB98; +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_8018ED5C[])(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(void); +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_8018ED84[])(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_8018ED90[])(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_8018EC04[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018EE34; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018DF18[]; +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_8018EE48[]; +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_8018EE84[]; +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_8018EECC; +extern u16 D_8018EECE; +extern u16 D_8018EED0; +extern s32 D_8018EED4; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018EEDC; +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_8018EBE8; +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_8018EF60[]; +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_8018F010[])(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_8018F040[]; +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_8018F0A4; +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_801DBA88[]; +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_8018F0C8[])(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_801DBAE0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018F110[])(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_8018F100; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801DB0B4[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_8018F118[])(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_8018F16C[])(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_8018F134; +extern s16 D_8018F168; +extern s16 D_8018F166; +extern s16 D_8018F164; +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_8018F178[])(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_801DBB40; +extern u8 D_801DBB41; +extern u8 D_801DBB42; +extern u8 D_801DBB43; +extern u8 D_801DBB44; +extern u8 D_801DBB45; +extern u8 D_801DBB46; +extern u8 D_801DBB47; +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_8018F188[])(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_801DBB80; +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_8018F1CC[])(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_8018F248[]; +extern s32 D_8018F268[]; +extern u8 D_8018F2E4[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018F304[]; +extern u8 D_8018F324[]; +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_8018F3C0[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018F43C[])(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_801DB0C4; +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_8018F448[])(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_8018F450[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018F518[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018F528[])(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_8018F538[])(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_8018F544[])(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_8018F4A4[]; +extern u8 D_8018F4B8[]; +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_8018F55C[])(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_8018F564[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018F56C[])(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_8018F574[])(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_8018F57C[])(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_8018F584[])(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_8018F58C[])(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_8018F640[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018F648[])(void); +extern void func_80169F00(void *a0); +extern char D_8018F5F8[]; +extern char D_8018F5B8[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018F680[])(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_8018F68C[])(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_8018F6D4[])(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_8018F750[])(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_801DBEA0; +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_8018F744[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018F788[]; +extern unsigned short D_8018F790[]; +extern unsigned short D_8018F798[]; +extern unsigned char D_801DBEA8[]; +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_801DBEA0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018F7A0[])(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_801DBFDC; +extern M2C_UNK D_801DBFE0; +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_801DBF68; +extern void (*D_8018F7D0[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801DBFE4[]; +extern u8 D_801DBFEC[]; +extern u8 D_801DBF9C[]; +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_8018F7D8[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018F7F4[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018F7FC[])(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_8018F864[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018F808; +extern u8 D_8018F814; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018F898[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018F8A0[])(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_8018F8F4[])(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_8018F928[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018F918[]; +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_8018F944; +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); +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_8018F9BC[])(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_8018F9C4[])(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_8018F9CC[])(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_8018F9D4[])(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_8018F9DC[])(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_8018F9E4[])(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_8018F9F0[])(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_8018F9FC[])(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_8018FA08[])(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_8018FA18[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018FA28[])(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_8018FA30[])(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_8018FA38[])(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_8018FA40[])(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_8018FA48[])(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_8018FA50[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018FA58[])(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_8018FA60[])(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_8018FA68[])(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_8018FA70[])(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_8018FA78[])(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_8018FA80[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018FA88[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018FA90[])(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_8018FA98[])(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_8018FAA0[])(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_8018FAA8[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018FAB0[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018FAB8[])(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_8018FAC0[])(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_8018FAC8[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018FAD0[])(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_8018FAD8[])(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_8018FB1C[])(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_8018FAE0; +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_8018FB4C[])(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_8018FB88[])(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(s32); +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_8018FBE0[])(); +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_8018FBF0[])(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_8018FBF8[])(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_8018FD60[])(); +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_8018FD6C[])(); +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_801DB30C; +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 int func_801789AC(void); +extern s16 D_801E2118; +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_801DC720; +extern short D_801E218C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801DCB4C; +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_801DCB74; +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_801DCB30; +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_801E20E8; +extern s16 D_801E20EA; +extern s16 D_801E20F4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801E20E8; + + 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_801E20F4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801E20E8+0xC == &D_801E20F4; 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_801E20E8 + 0xC)) < 0x101) { + D_801E20E8 = 0; + D_801E20EA = 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_801E20F4); + 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_801E20E8 + 0xC)) < 0x101) { + D_801E20E8 = 0; + D_801E20EA = 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_801DCBAC; + extern s16 D_801DCBAE; + extern s16 D_801DCBB0; + extern s16 D_801DCBA4; + extern s16 D_801DCBA6; + extern s16 D_801DCBA8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801DCBAC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801DCBAE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801DCBB0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801DCBA4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801DCBA6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801DCBA8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801DCB34; +extern u16 D_801DCBB4; +extern u16 D_801DCBB6; +extern u16 D_801DCBB8; +extern s16 D_801E2118; + +void func_8017B1D8(void) { + func_8012A418(); + D_801E2118 = 0; + D_801DCB34 = 0; + D_801DCBB4 = D_80126B5E; + D_801DCBB6 = D_80126B62; + D_801DCBB8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018FEA8[]; + extern s16 D_801DCBAC; + extern s16 D_801DCBA4; + 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_8018FEA8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018FEA8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801DCBAC; + s16 *p78C = &D_801DCBA4; + *(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_801E2118 = 1; + D_801DCB34 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801DCB54; + extern SV4_8017B368 D_801DCB5C; + extern s16 D_801DCBAC; + extern s16 D_801DCBA4; + extern u16 D_8018FEA8; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801DCB54; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801DCB5C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018FEA8)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018FEA8)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801DCBAC) = loc0; + (*(SV4_8017B368 *)&D_801DCBA4) = loc1; + D_801E2118 = 1; + D_801DCB34 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018FEA8[]; + extern s16 D_801DCBAC; + extern s16 D_801DCBAE; + extern s16 D_801DCBB0; + extern s16 D_801DCBA4; + extern s16 D_801DCBA6; + extern s16 D_801DCBA8; + 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_8018FEA8[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018FEA8[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801DCBAC; + s16 *p78C = &D_801DCBA4; + *(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_801DCBAE; + v798 = D_801DCBB0; + v78C = *p78C; + v78E = D_801DCBA6; + v790 = D_801DCBA8; + __asm__ __volatile__(""); + D_801E2118 = 1; + D_801DCB34 = 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_801DCB34; +extern s16 D_801DCBAC; +extern s16 D_801DCBAE; +extern s16 D_801DCBB0; +extern s16 D_801DCBA4; +extern s16 D_801DCBA6; +extern s16 D_801DCBA8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801DCB34 = 0; + D_801DCBAC = (s16) D_80114F30; + D_801DCBAE = (s16) D_80114F34; + D_801DCBB0 = (s16) D_80114F38; + D_801DCBA4 = (s16) D_80114F24; + D_801DCBA6 = (s16) D_80114F28; + D_801DCBA8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801DCBC4; +extern s16 D_801DCBC6; +extern s16 D_801DCBC8; +extern s16 D_801DCBCC; +extern s16 D_801DCBCE; +extern s16 D_801DCBD0; + +void func_8017B824(void) { + D_801DCBC4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801DCBC6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801DCBC8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801DCBCC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801DCBCE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801DCBD0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801DCBC4; +extern s16 D_801DCBC6; +extern s16 D_801DCBC8; +extern s16 D_801DCBCC; +extern s16 D_801DCBCE; +extern s16 D_801DCBD0; + +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_801DCBC4; + D_80114F34 = D_801DCBC6; + D_80114F38 = D_801DCBC8; + D_80114F24 = D_801DCBCC; + D_80114F28 = D_801DCBCE; + D_80114F2C = D_801DCBD0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801DCBAC), src[8..15] -> (*(S8_8017B8E8 *)&D_801DCBA4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801DCBAC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801DCBA4) = ((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_801DCBB4; +extern u16 D_801DCBB6; +extern u16 D_801DCBB8; + +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_801DCB34; +extern short D_801DCBBC; +extern short D_801DCBBE; +extern short D_801DCBC0; +extern s16 D_801DCBAC; +extern s16 D_801DCBAE; +extern s16 D_801DCBB0; +extern s16 D_801DCBA4; +extern s16 D_801DCBA6; +extern s16 D_801DCBA8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801DCBB4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801DCBB6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801DCBB8); + (*(s16 *)&D_801DCBBC) = buf[0]; + (*(s16 *)&D_801DCBBE) = buf[1]; + (*(s16 *)&D_801DCBC0) = buf[2]; + D_801DCBAC = D_80114F30 + buf[0]; + D_801DCB34 = 0; + D_801DCBAE = D_80114F34 + buf[1]; + D_801DCBB0 = D_80114F38 + buf[2]; + D_801DCBA4 = D_80114F24 + buf[0]; + D_801DCBA6 = D_80114F28 + buf[1]; + D_801DCBA8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801DCB54; +extern SV4 D_801DCB5C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801DCB5C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801DCB54 = 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_801DCB5C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801DCB5C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801DCB54) = 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_801DCB5C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801DCB7C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801DCB7C; + 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_801DCB34; +extern s16 D_801E2118; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801DCB34 = D_801DCB34 + 1; + if (D_801DCB34 >= 0x1F) { + D_801E2118 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801DCB34; +extern s16 D_801E2118; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801DCB34 = D_801DCB34 + 1; + if (0x18 < D_801DCB34) { + func_8012A4BC(); + D_801E2118 = 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_801DCB34; +extern void (*D_801DCB78)(void); +extern short D_801DCBBC; +extern short D_801DCBBE; +extern short D_801DCBC0; +extern s16 D_801E2118; + +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_801DCB34 = D_801DCB34 + 1; + if (D_801DCB34 >= 0x19) { + if (D_801DCB78 != 0) { + (*D_801DCB78)(); + } else { + D_80114F30 = D_80114F30 + D_801DCBBC; + D_80114F34 = D_80114F34 + D_801DCBBE; + D_80114F38 = D_80114F38 + D_801DCBC0; + D_80114F24 = D_80114F24 + D_801DCBBC; + D_80114F28 = D_80114F28 + D_801DCBBE; + D_80114F2C = D_80114F2C + D_801DCBC0; + func_8012A4BC(); + } + D_801E2118 = 0; + } +} + + + +extern void (*D_8018FF48[])(void); + +void func_8017BE60(void *a0) { + D_8018FF48[*(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) */ + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017BEE0); + + + +extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); + void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3) { + ((void (*)(void *, void *, s32, s32))func_8017BF34)(a0, a1, (s16)a2, (s16)a3); + } + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017BF34); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017BFBC); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017C010); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017C068); + + +extern void (*D_8018FFA8[])(void); + +void func_8017C114(void *a0) { + D_8018FFA8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017C150); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017C43C); + +extern s32 D_801DCCA0; + void func_8017C8D0(void) { + D_801DCCA0 = 0x80; + } + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017C8E4); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017C918); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017C954); + + +extern void (*D_8018FFB0[])(void); + +void func_8017DBFC(void *a0) { + D_8018FFB0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017DC38); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017DDE0); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017DF74); + +extern void func_8002931C(void); + void func_8017E22C(void) { + ((void (*)(s32))func_8002931C)(0x4740000); + } + + + +extern void (*D_80190028[])(void); + +void func_8017E24C(void *a0) { + D_80190028[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017E288); + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017E2CC(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_80190030[])(void); + +void func_8017E2F0(void *a0) { + D_80190030[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017E32C); + + +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_8017E36C(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 s32 func_800D1EBC(void); + void func_8017E3E8(void) { + func_800D1EBC(); + } + + +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); +extern M2C_UNK D_801901CC; + +void func_8017E408(void) { + ((void (*)(void *, s32))func_8016EE40)(&D_801901CC, 0x1000000); +} + + +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); + extern s32 D_801901D0; + void func_8017E430(void) { + ((void (*)(void *, s32))func_8016EE40)(&D_801901D0, 0x1000000); + } + + + +extern void (*D_801901D8[])(void); + +void func_8017E458(void *a0) { + D_801901D8[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017E494); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017E584); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017E610); + +extern s32 D_80126B58; +extern s16 D_80126B30; +extern void func_8017303C(void *); +extern s32 func_80174650(s32); +void func_8017E640(void) { + + extern u8 D_801900B4[]; + func_8017303C((void *)D_801900B4); + D_80126B30 = 0; + func_80174650((s32)&D_80126B58); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017E680); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017E6B0); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017E6E0); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017E770); + + +extern void (*D_801901E0[])(void); + +void func_8017E800(void *a0) { + D_801901E0[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017E83C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017E8DC); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017E95C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017EB24); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017EBC4); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017EDA8); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017EE10); + +void func_8017EEFC(void) { +} + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017EF04); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017EF34); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017F300); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017F330); + +void func_8017F970(s32 arg0) { + if (arg0 != 0) { + *(s32 *)(arg0 + 0xE0) = 1; + } + } + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017F984); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017F9C0); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017FE58); + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80180030); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80180198); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801801D8); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801804C8); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801808C4); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801809D4); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80180A70); + +void func_80180E58(void) { +} + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80180E60); + +extern void func_8018612C(void); +void func_80180EA8(void) { + func_8018612C(); +} + + +extern s32 func_8018B1E0(s32 arg); + void func_80180EC8(void) { + func_8018B1E0(0x5); + } + + +extern s32 func_8018B20C(void); + void func_80180EE8(void) { + func_8018B20C(); + } + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80180F08); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80180F4C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80180F88); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80180FE0); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80181170); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80181268); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801812AC); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80181334); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80181378); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801814B0); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80181708); + +extern void (*D_8019073C[])(void); + +void func_8018180C(void *a0) { + D_8019073C[*(u8 *)((s32)a0 + 0x4)](); +} + + + +// @class: struct +// @stuck: none — MATCH (fn-ptr table %lo-fold via extern array of code ptrs) + +extern code_fn D_801907B4[]; + +extern s32 func_80181DF8(s32 a0); + +void func_80181848(int param_1) +{ + D_801907B4[*(unsigned short *)(param_1 + 2)](); + ((void (*)(int))func_80181DF8)(param_1); + return; +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80181898); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80181964); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80181AC0); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80181C04); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80181D40); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80181D94); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80181DF8); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80182334); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80182388); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801825D8); + + +extern void (*D_801908F8[])(void); + +void func_801827D0(void *a0) { + D_801908F8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018280C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801828E4); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80182BC8); + + +extern void (*D_80190940[])(void); + +void func_80182D74(void *a0) { + D_80190940[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80182DB0); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80182ED8); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801833FC); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80183478); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801834D8); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80183534); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80183848); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801838BC); + + +extern void (*D_801909E4[])(void); + +void func_80183A1C(void *a0) { + D_801909E4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80183A58); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80183B1C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80183CB8); + + +extern void (*D_80190A00[])(void); + +void func_80183D48(void *a0) { + D_80190A00[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80183D84); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80184084); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80184464); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018452C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80184564); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80184C68); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80184E6C); + +void func_80184EA0(s32 arg0) { + if (arg0 != 0) { + *(s32 *)((s32)arg0 + 0x4) |= 0x80000000; + } + } + + + +extern void (*D_80190A18[])(void); + +void func_80184EC0(void *a0) { + D_80190A18[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80184EFC); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80184FF8); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80185214); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801852E4); + +extern void (*D_80190A20[])(void); + +void func_8018562C(void *a0) { + D_80190A20[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80190A28[])(void); + +void func_80185668(void *a0) { + D_80190A28[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_801856A4(s32 *a0, s32 a1) { + *(s32 *)((s32)a0 + 0x0) = a1; + *(s8 *)((s32)a0 + 0x7) = 0; + *(s16 *)((s32)a0 + 0x4) = (*(s32 *)((s32)a1 + 0x4)) & 0x3F; + } + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801856C0); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801857A4); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801859F4); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80185C6C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80185C88); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80185D44); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80185E00); + + +extern void (*D_80190A30[])(void); + +void func_80185F08(void *a0) { + D_80190A30[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_80185F44(void) { +} + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80185F4C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80186044); + +extern void func_8014C6D0(void); +extern s32 func_8012AD50(void *a0); +extern s16 D_80126D20; + +void func_801860EC(s32 *a0) { + ((void (*)(s32 *))func_8014C6D0)(a0); + D_80126D20 = 0; + ((s32 (*)(s32))func_8012AD50)((s32)a0); +} + + +void func_80186124(void) { +} + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018612C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018615C); + +extern s16 D_801152A0; + void func_8018618C(s16 arg0) { + D_801152A0 = arg0; + } + + +s32 func_8018619C(void) { + return 0x82; + } + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801861A4); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80186214); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801862C0); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80186334); + +void func_801863C0(void) { +} + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801863C8); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018641C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80186470); + +void func_8018653C(s32 *a0, s32 *a1) { + *(u16 *)((s32)a1 + 0x8) = *(u16 *)((s32)a0 + 0x6); + *(u16 *)((s32)a1 + 0xA) = *(u16 *)((s32)a0 + 0xA) + *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0xA); + *(u16 *)((s32)a1 + 0xC) = *(u16 *)((s32)a0 + 0xE); + } + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018656C); + + +extern void (*D_80192174[])(void); + +void func_80186674(void *a0) { + D_80192174[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801866B0); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801867D0); + +extern void func_8012BEE8(void); +void func_80186960(void) { + func_8012BEE8(); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80186980); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801869F8); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80186A28); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80186A58); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80186A88); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80186AB8); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80186B00); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80186B6C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80186BD4); + +extern s32 D_801DFF78; +extern void func_8012E88C(u8 *a0); + +void func_80186BEC(void) { + ((void (*)(s32))func_8012E88C)(*(s32 *)&D_801DFF78); +} + + +extern s32 D_801DFF78; +extern void func_8012E8A8(u8 *a0); + +void func_80186C14(void) { + ((void (*)(s32))func_8012E8A8)(D_801DFF78); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80186C3C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80186C88); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80186CC4); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80186D30); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80186D64); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80186DA0); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80186E18); + +extern s32 D_801DFF7C; +extern void func_8012E88C(u8 *a0); + +void func_80186F9C(void) { + ((void (*)(s32))func_8012E88C)(D_801DFF7C); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80186FC4); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018702C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80187094); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801870B4); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801870D4); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80187148); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801871E8); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80187230); + +extern void func_800D0C48(s32 arg); + void func_801872C4(void) { + func_800D0C48(0x1); + } + + +extern s32 func_8001AAA0(s32 arg); + s32 func_801872E4(void) { + return func_8001AAA0(0x95) != 0; + } + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80187304); + +extern s32 D_801DFF74; +extern void func_8012E8A8(u8 *a0); + +void func_8018736C(void) { + ((void (*)(s32))func_8012E8A8)(D_801DFF74); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80187394); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801873F4); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018743C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80187660); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80187A04); + +extern s32 D_801DFF88; +extern void func_8012E88C(u8 *a0); + +void func_80187B30(void) { + ((void (*)(s32))func_8012E88C)(D_801DFF88); +} + + +extern s32 D_801DFF88; +extern void func_8012E8A8(u8 *a0); + +void func_80187B58(void) { + ((void (*)(s32))func_8012E8A8)(D_801DFF88); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80187B80); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80187C2C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80187CE4); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80187D64); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80187E84); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801881D8); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80188240); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801883A0); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801883FC); + +extern s32 func_8017C8E4(void); + s32 func_80188470(void) { + return func_8017C8E4() != 0; + } + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80188490); + +extern s16 D_801DFFDC; + void func_80188548(void) { + D_801DFFDC += 1; + } + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80188568); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801885C0); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018865C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018884C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801888A8); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80188904); + +extern void func_8012A018(s32 a, s32 b); + extern void func_80188BB0(); + void func_80188960(void) { + ((void (*)(void *, s32))func_8012A018)((void *)func_80188BB0, 0x2); + } + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80188988); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80188A90); + + +extern void (*D_801921BC[])(void); + +void func_80188BB0(void *a0) { + D_801921BC[*(u8 *)((s32)a0 + 0x4)](); +} + + + +extern void (*D_801921C8[])(void); + +void func_80188BEC(void *a0) { + D_801921C8[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_801921D0[])(void); + +void func_80188C28(void *a0) { + D_801921D0[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_801921D8[])(void); + +void func_80188C64(void *a0) { + D_801921D8[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_801921E0[])(void); + +void func_80188CA0(void *a0) { + D_801921E0[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80192210[])(void); + +void func_80188CDC(void *a0) { + D_80192210[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80192298[])(void); + +void func_80188D18(void *a0) { + D_80192298[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_801922A4[])(void); + +void func_80188D54(void *a0) { + D_801922A4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80188D90); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80189148); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801891D0); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80189244); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80189440); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_801898CC); + + +extern void (*D_801922F4[])(void); + +void func_80189B38(void *a0) { + D_801922F4[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80189B74); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80189BB4); + +void func_80189CE4(void) { +} + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80189CEC); + +void func_80189E10(void) { +} + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80189E18); + +void func_80189F50(void) { +} + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_80189F58); + +void func_8018A07C(void) { +} + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018A084); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018A180); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018A27C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018A314); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018A3CC); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018A41C); + +void func_8018A564(void) { +} + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018A56C); + +void func_8018A5E8(void) { +} + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018A5F0); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018A6A4); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018A7C4); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018A8D4); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018A9FC); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018AA60); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018ABC0); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018ADA4); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018AE60); + + +extern void (*D_801D7288[])(void); + +void func_8018AF0C(void *a0) { + D_801D7288[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018AF48); + +extern void func_8018B188(); + void func_8018B148(void) { + func_8018B188(); + } + + +extern void func_80146C3C(void); + void func_8018B168(void) { + func_80146C3C(); + } + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018B188); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018B1E0); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018B20C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018B250); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018B2A8); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018B2F8); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018B364); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018B4B8); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018B50C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018B530); + + +extern void (*D_801D72C8[])(void); + +void func_8018B574(void *a0) { + D_801D72C8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018B5B0); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018B6FC); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018B774); + + +void func_8018B7A4(void *a0) { + *(s32 *)((s32)a0 + 0x0) = 0xF0F0F0; + *(s32 *)((s32)a0 + 0x4) = 0; + } + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018B7B8); + + +extern void (*D_801D7300[])(void); + +void func_8018B820(void *a0) { + D_801D7300[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018B85C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018B8A8); + +void func_8018B8F0(void) { +} + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018B8F8); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018BA5C); + + +extern void (*D_801D7358[])(void); + +void func_8018BDD8(void *a0) { + D_801D7358[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018BE14); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018BE68); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018BF1C); + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8018BF88); + + +extern s32 D_801E2018; +extern s32 func_8012C588(s32 a0, s32 a1); + +s32 func_8018BFC8(s32 a0, s32 a1) { + D_801E2018 = a1; + return func_8012C588(0x85, a0); +} + + +extern u8 D_801152A8[]; +extern s32 D_801E2018; +extern s32 func_80017DC4(void *a0, void *a1); +extern void func_80017E68(void *a0, void *a1); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8012C218(void *a0); +extern void func_8012F14C(s32); +extern s32 func_80134510(s32 arg); + +// @class: regalloc-order +// @stuck: none — MATCH (145/145 ins, match_one confirmed) + +typedef struct { short vx, vy, vz, pad; } SVECTOR_80184F08; +typedef struct { u8 b[8]; } S8_80184F08; + + + +s32 func_8018BFF8(s32 param_1) { + + extern M2C_UNK D_8018C894; + extern s32 func_8012C354(s32 a0, s32 a1); + extern void RotMatrixZ(s32, void *); + extern void MulMatrix0(s32, void *, s32); + extern s32 D_801D9948; + extern char * D_801D997C; + extern char D_801E1FF8[]; + + S8_80184F08 s60; + SVECTOR_80184F08 sStack_58; + S8_80184F08 s50; + int auStack_48[8]; + s32 iVar5, iVar8; + char *puVar2, *puVar4; + u16 uVar3; + + if (((s32 (*)(s32, void *))func_8012C354)(param_1, &D_801D9948) == 0) { + ((void (*)(s32))func_8012C218)(param_1); + } + ((void(*)(s32, void *))func_8012A828)(param_1, &(*(s32 *)&D_8018C894)); + iVar5 = *(s32 *)(param_1 + 0x20); + *(s16 *)(param_1 + 0x70) = 0x80; + *(s32 *)(iVar5 + 4) |= 0x50000040; + *(u16 *)(iVar5 + 0x2c) |= 1; + iVar8 = *(s32 *)(*(s32 *)(param_1 + 0x64) + 0x20) + 0x34; + ((void (*)(s32, s32, void *))func_8012F14C)(iVar8, D_801E2018, &s60); + s50 = s60; + sStack_58.vz = 0x1800; + sStack_58.vy = 0x1800; + sStack_58.vx = 0x1800; + ((void (*)(void *, void *))func_80017DC4)(&sStack_58, auStack_48); + RotMatrixZ(rand() & 0xfff, auStack_48); + MulMatrix0(iVar8, auStack_48, iVar5 + 0x34); + ((void (*)(void *, s32))func_80017E68)(&s50, iVar5 + 0x34); + + /* pool-alloc: gcc routes the loaded pointer through a caller-saved reg ($v0) + before the callee-saved home ($s1) — pin it to reproduce the extra move. */ + { + register char *tmp __asm__("$2"); + tmp = D_801D997C; + puVar2 = tmp; + } + puVar4 = puVar2 + 0x20; + D_801D997C = puVar4; + *(char **)(param_1 + 0xcc) = puVar2; + if (D_801E1FF8 < puVar4) { + D_801D997C = D_801E1FF8 - 0x120; + } + func_800D20C0(&s60, &sStack_58, 7); + func_800D23D0(&sStack_58); + ((void(*)(void *, void *))RotMatrixYXZ)(&sStack_58, puVar2); + ((void (*)(void *, s32))func_80017E68)(&s60, (s32)puVar2); + + uVar3 = *(u16 *)((char *)&s50 + 2); + if (((s32 (*)(void *))func_80134510)(&s50) != 0 && + (s32)(s16)uVar3 - (s32)*(s16 *)((char *)&s50 + 2) < 0x80) { + *(s16 *)((char *)&s50 + 2) = *(s16 *)((char *)&s50 + 2) - 4; + { + register char *tmp __asm__("$3"); + tmp = D_801D997C; + puVar2 = tmp; + } + puVar4 = puVar2 + 0x20; + D_801D997C = puVar4; + *(char **)(param_1 + 0xd0) = puVar2; + if (D_801E1FF8 < puVar4) { + D_801D997C = D_801E1FF8 - 0x120; + } + func_800D23D0(&(*(s32 *)&D_801152A8)); + ((void(*)(void *, void *))RotMatrixYXZ)(&(*(s32 *)&D_801152A8), puVar2); + ((void (*)(void *, s32))func_80017E68)(&s50, (s32)puVar2); + } + *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; +} + + +extern s32 func_80017758(void *a0, void *a1); +extern void func_8012C218(void *a0); + + +// @class: regalloc-order +// @stuck: none — MATCH (168 ins). Keys: (1) pin param->$s1 via `register int self __asm__("$17")=param_1` +// (natural alloc put the short loop-counter in $s1); (2) block2's guarded dest via a test-temp +// `td=load; if(td){dest=td; ...}` forces the range-split `lw $a1; addu $s3,$a1,$0` the target has; +// (3) counter is `short i` do-while (keeps the `addu $s2,$v0,$0` raw-copy + sll16/sra16 compare); +// (4) gcc-2.7.2 loads s8/s16 via lbu/lhu+shift-extend (not lb/lh) so `signed char *p; *(s16*)buf=*p++` +// emits lbu;sll24;sra24;sh; (5) else-branch zero-byte asm barrier forces `addu $a0,$s1,$0` (else gcc +// reuses the still-live incoming $a0 with a nop delay slot). + +s32 func_8018C23C(s32 param_1) { + + extern signed char D_801D9934[]; + register int self __asm__("$17") = ((int)param_1); + int iVar6; + int iVar1; + unsigned char buf[0x34]; + signed char *p; + short i; + int dest; + int td; + unsigned short t; + + iVar1 = *(int *)(self + 0x1c); + iVar6 = *(int *)(self + 0x20); + *(int *)(self + 0x1c) = iVar1 + 1; + if (iVar1 < 2) { + p = D_801D9934; + i = 0; + dest = *(int *)(self + 0xcc); + t = *(unsigned short *)(self + 0x70); + *(short *)(buf + 0x0c) = 0; + *(short *)(buf + 0x0a) = 0; + *(short *)(buf + 0x08) = 0; + *(short *)(buf + 0x1c) = 0; + *(short *)(buf + 0x14) = 0; + *(short *)(buf + 0x04) = 0; + buf[0x22] = 0; + buf[0x21] = 0; + buf[0x20] = 0; + buf[0x2a] = 0; + buf[0x29] = 0; + buf[0x28] = 0; + buf[0x2e] = 0; + buf[0x2d] = 0; + buf[0x2c] = 0; + *(int *)(buf + 0x30) = 0x50000000; + buf[0x25] = t; + buf[0x26] = t; + buf[0x24] = t; + do { + *(short *)(buf + 0x00) = *p++; + *(short *)(buf + 0x02) = *p++; + *(short *)(buf + 0x10) = *p++; + *(short *)(buf + 0x12) = *p++; + *(short *)(buf + 0x18) = *p++; + *(short *)(buf + 0x1a) = *p--; + func_80017758(buf, (void *)dest); + i++; + } while (i < 4); + + td = *(int *)(self + 0xd0); + if (td != 0) { + dest = td; + p = D_801D9934; + i = 0; + t = *(unsigned short *)(self + 0x70); + *(short *)(buf + 0x0c) = 0; + *(short *)(buf + 0x0a) = 0; + *(short *)(buf + 0x08) = 0; + *(short *)(buf + 0x1c) = 0; + *(short *)(buf + 0x14) = 0; + *(short *)(buf + 0x04) = 0; + buf[0x22] = 0; + buf[0x21] = 0; + buf[0x20] = 0; + buf[0x2a] = 0; + buf[0x29] = 0; + buf[0x28] = 0; + buf[0x2e] = 0; + buf[0x2d] = 0; + buf[0x2c] = 0; + *(int *)(buf + 0x30) = 0x50000000; + buf[0x25] = t; + buf[0x26] = t; + buf[0x24] = t; + do { + *(short *)(buf + 0x00) = *p++; + *(short *)(buf + 0x02) = *p++; + *(short *)(buf + 0x10) = *p++; + *(short *)(buf + 0x12) = *p++; + *(short *)(buf + 0x18) = *p++; + *(short *)(buf + 0x1a) = *p--; + func_80017758(buf, (void *)dest); + i++; + } while (i < 4); + } + *(short *)(self + 0x70) = *(short *)(self + 0x70) >> 1; + *(unsigned short *)(iVar6 + 0x2c) |= 1; + } else { + __asm__ __volatile__("" : "=r"(self) : "0"(self)); + func_8012C218((void *)self); + } +} + + + +extern void (*D_801D9980[])(void); + +void func_8018C4DC(void *a0) { + D_801D9980[*(u16 *)((s32)a0 + 0x2)](); +} + + + + + diff --git a/src/ov_SC06_030/ov_SC06_030_jr_8017A4AC.c b/src/ov_SC06_030/ov_SC06_030_jr_8017A4AC.c index 40c5f7cdf..5836f1043 100644 --- a/src/ov_SC06_030/ov_SC06_030_jr_8017A4AC.c +++ b/src/ov_SC06_030/ov_SC06_030_jr_8017A4AC.c @@ -2939,604 +2939,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801B9E0C; - extern s16 D_801B9E0E; - extern s16 D_801B9E10; - extern s16 D_801B9E04; - extern s16 D_801B9E06; - extern s16 D_801B9E08; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B9E0C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B9E0E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B9E10, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B9E04, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B9E06, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B9E08, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801B9D94; -extern u16 D_801B9E14; -extern u16 D_801B9E16; -extern u16 D_801B9E18; -extern s16 D_801BA010; - -void func_8017B1D8(void) { - func_8012A418(); - D_801BA010 = 0; - D_801B9D94 = 0; - D_801B9E14 = D_80126B5E; - D_801B9E16 = D_80126B62; - D_801B9E18 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80185798[]; - extern s16 D_801B9E0C; - extern s16 D_801B9E04; - 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_80185798[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80185798[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B9E0C; - s16 *p78C = &D_801B9E04; - *(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_801BA010 = 1; - D_801B9D94 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B9DB4; - extern SV4_8017B368 D_801B9DBC; - extern s16 D_801B9E0C; - extern s16 D_801B9E04; - extern u16 D_80185798; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801B9DB4; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801B9DBC; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80185798)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80185798)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801B9E0C) = loc0; - (*(SV4_8017B368 *)&D_801B9E04) = loc1; - D_801BA010 = 1; - D_801B9D94 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80185798[]; - extern s16 D_801B9E0C; - extern s16 D_801B9E0E; - extern s16 D_801B9E10; - extern s16 D_801B9E04; - extern s16 D_801B9E06; - extern s16 D_801B9E08; - 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_80185798[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80185798[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801B9E0C; - s16 *p78C = &D_801B9E04; - *(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_801B9E0E; - v798 = D_801B9E10; - v78C = *p78C; - v78E = D_801B9E06; - v790 = D_801B9E08; - __asm__ __volatile__(""); - D_801BA010 = 1; - D_801B9D94 = 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_801B9D94; -extern s16 D_801B9E0C; -extern s16 D_801B9E0E; -extern s16 D_801B9E10; -extern s16 D_801B9E04; -extern s16 D_801B9E06; -extern s16 D_801B9E08; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801B9D94 = 0; - D_801B9E0C = (s16) D_80114F30; - D_801B9E0E = (s16) D_80114F34; - D_801B9E10 = (s16) D_80114F38; - D_801B9E04 = (s16) D_80114F24; - D_801B9E06 = (s16) D_80114F28; - D_801B9E08 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801B9E24; -extern s16 D_801B9E26; -extern s16 D_801B9E28; -extern s16 D_801B9E2C; -extern s16 D_801B9E2E; -extern s16 D_801B9E30; - -void func_8017B824(void) { - D_801B9E24 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801B9E26 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801B9E28 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801B9E2C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801B9E2E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801B9E30 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801B9E24; -extern s16 D_801B9E26; -extern s16 D_801B9E28; -extern s16 D_801B9E2C; -extern s16 D_801B9E2E; -extern s16 D_801B9E30; - -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_801B9E24; - D_80114F34 = D_801B9E26; - D_80114F38 = D_801B9E28; - D_80114F24 = D_801B9E2C; - D_80114F28 = D_801B9E2E; - D_80114F2C = D_801B9E30; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801B9E0C), src[8..15] -> (*(S8_8017B8E8 *)&D_801B9E04) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801B9E0C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801B9E04) = ((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_801B9E14; -extern u16 D_801B9E16; -extern u16 D_801B9E18; - -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_801B9D94; -extern short D_801B9E1C; -extern short D_801B9E1E; -extern short D_801B9E20; -extern s16 D_801B9E0C; -extern s16 D_801B9E0E; -extern s16 D_801B9E10; -extern s16 D_801B9E04; -extern s16 D_801B9E06; -extern s16 D_801B9E08; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B9E14); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B9E16); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B9E18); - (*(s16 *)&D_801B9E1C) = buf[0]; - (*(s16 *)&D_801B9E1E) = buf[1]; - (*(s16 *)&D_801B9E20) = buf[2]; - D_801B9E0C = D_80114F30 + buf[0]; - D_801B9D94 = 0; - D_801B9E0E = D_80114F34 + buf[1]; - D_801B9E10 = D_80114F38 + buf[2]; - D_801B9E04 = D_80114F24 + buf[0]; - D_801B9E06 = D_80114F28 + buf[1]; - D_801B9E08 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801B9DB4; -extern SV4 D_801B9DBC; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B9DBC) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801B9DB4 = 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_801B9DBC = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B9DBC)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801B9DB4) = 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_801B9DBC) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801B9DDC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801B9DDC; - 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_801B9D94; -extern s16 D_801BA010; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801B9D94 = D_801B9D94 + 1; - if (D_801B9D94 >= 0x1F) { - D_801BA010 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801B9D94; -extern s16 D_801BA010; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801B9D94 = D_801B9D94 + 1; - if (0x18 < D_801B9D94) { - func_8012A4BC(); - D_801BA010 = 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_801B9D94; -extern void (*D_801B9DD8)(void); -extern short D_801B9E1C; -extern short D_801B9E1E; -extern short D_801B9E20; -extern s16 D_801BA010; - -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_801B9D94 = D_801B9D94 + 1; - if (D_801B9D94 >= 0x19) { - if (D_801B9DD8 != 0) { - (*D_801B9DD8)(); - } else { - D_80114F30 = D_80114F30 + D_801B9E1C; - D_80114F34 = D_80114F34 + D_801B9E1E; - D_80114F38 = D_80114F38 + D_801B9E20; - D_80114F24 = D_80114F24 + D_801B9E1C; - D_80114F28 = D_80114F28 + D_801B9E1E; - D_80114F2C = D_80114F2C + D_801B9E20; - func_8012A4BC(); - } - D_801BA010 = 0; - } -} - - - -extern void (*D_80185838[])(void); - -void func_8017BE60(void *a0) { - D_80185838[*(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) */ - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017A4AC", func_8017BEE0); - - - -extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); - void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3) { - ((void (*)(void *, void *, s32, s32))func_8017BF34)(a0, a1, (s16)a2, (s16)a3); - } - - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017A4AC", func_8017BF34); - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017A4AC", func_8017BFBC); - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017A4AC", func_8017C010); - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017A4AC", func_8017C068); - - -extern void (*D_80185898[])(void); - -void func_8017C114(void *a0) { - D_80185898[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017A4AC", func_8017C150); - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017A4AC", func_8017C43C); diff --git a/src/ov_SC06_030/ov_SC06_030_jr_8017AE2C.c b/src/ov_SC06_030/ov_SC06_030_jr_8017AE2C.c new file mode 100644 index 000000000..6c16a381e --- /dev/null +++ b/src/ov_SC06_030/ov_SC06_030_jr_8017AE2C.c @@ -0,0 +1,3475 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80184390; +extern u8 D_80184300; +extern u8 D_801842DC; +extern u8 D_801842B8; +extern u8 D_8018436C; +extern u8 D_80184348; +extern u8 D_80184324; +extern u8 D_80184294; +extern void func_80145934(void); +extern u8 D_80184420; +extern u8 D_801843FC; +extern u8 D_801843D8; +extern u8 D_801843B4; +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_80183818[]; +extern unsigned char D_80183848[]; +extern unsigned char D_80183898[]; +extern unsigned char D_801838C8[]; +extern unsigned char D_801838F8[]; +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(void); +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_80183948[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80183A10[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80183A98[]; +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_80183AA0; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801B8C90; +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_801B8C94; +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_80183AD0; +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 void 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_80183B78[])(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_80183B9C[])(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_80183B8C; +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_80183BB0[])(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_80183BBC[]; +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_80183BCC[])(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_80183BE4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80183BD4; +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_80183BF8[])(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_80183C14[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80183C04; +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_80183C28[])(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_80183C3C[])(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_80183C50; +extern void (*D_80183C78[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80183C58; +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_80183CC4[])(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_80183CC8[])(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(void *a0); +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_8018412C[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8018413C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801B8CC8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184164[])(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_80184144; +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_80184154; +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_801841A4[])(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_801841AC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80184178; +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_801841B8[])(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_80184188; +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_801B8CD0; +extern s32 D_801B8CDC; +extern s32 D_801B8CE0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801841F4[])(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_801841C8[]; +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_801B8CD8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80184444[])(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_80184264[]; +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_801844E8[])(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_8018463C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80184458; +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_80184644[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80184468; +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_80184488; +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_8018464C[])(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(void); +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_80184674[])(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_80184680[])(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_801844F4[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80184724; +extern void func_8015D380(s32 a0); +extern unsigned char D_80183808[]; +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_80184738[]; +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_80184774[]; +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_801847BC; +extern u16 D_801847BE; +extern u16 D_801847C0; +extern s32 D_801847C4; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_801847CC; +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_801844D8; +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_80184850[]; +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_80184900[])(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_80184930[]; +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_80184994; +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_801B8CE8[]; +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_801849B8[])(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_801B8D40[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80184A00[])(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_801849F0; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801B8418[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_80184A08[])(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_80184A5C[])(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_80184A24; +extern s16 D_80184A58; +extern s16 D_80184A56; +extern s16 D_80184A54; +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_80184A68[])(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_801B8DA0; +extern u8 D_801B8DA1; +extern u8 D_801B8DA2; +extern u8 D_801B8DA3; +extern u8 D_801B8DA4; +extern u8 D_801B8DA5; +extern u8 D_801B8DA6; +extern u8 D_801B8DA7; +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_80184A78[])(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_801B8DE0; +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_80184ABC[])(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_80184B38[]; +extern s32 D_80184B58[]; +extern u8 D_80184BD4[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80184BF4[]; +extern u8 D_80184C14[]; +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_80184CB0[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80184D2C[])(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_801B8428; +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_80184D38[])(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_80184D40[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80184E08[])(void); +extern void func_80166618(void *a0); +extern void (*D_80184E18[])(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_80184E28[])(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_80184E34[])(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_80184D94[]; +extern u8 D_80184DA8[]; +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_80184E4C[])(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_80184E54[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80184E5C[])(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_80184E64[])(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_80184E6C[])(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_80184E74[])(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_80184E7C[])(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_80184F30[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80184F38[])(void); +extern void func_80169F00(void *a0); +extern char D_80184EE8[]; +extern char D_80184EA8[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80184F70[])(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_80184F7C[])(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_80184FC4[])(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_80185040[])(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_801B9100; +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_80185034[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80185078[]; +extern unsigned short D_80185080[]; +extern unsigned short D_80185088[]; +extern unsigned char D_801B9108[]; +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_801B9100; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80185090[])(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_801B923C; +extern M2C_UNK D_801B9240; +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_801B91C8; +extern void (*D_801850C0[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801B9244[]; +extern u8 D_801B924C[]; +extern u8 D_801B91FC[]; +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_801850C8[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801850E4[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801850EC[])(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_80185154[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801850F8; +extern u8 D_80185104; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80185188[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80185190[])(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_801851E4[])(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_80185218[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80185208[]; +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_80185234; +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); +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_801852AC[])(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_801852B4[])(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_801852BC[])(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_801852C4[])(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_801852CC[])(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_801852D4[])(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_801852E0[])(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_801852EC[])(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_801852F8[])(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_80185308[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80185318[])(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_80185320[])(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_80185328[])(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_80185330[])(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_80185338[])(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_80185340[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80185348[])(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_80185350[])(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_80185358[])(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_80185360[])(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_80185368[])(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_80185370[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80185378[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80185380[])(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_80185388[])(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_80185390[])(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_80185398[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801853A0[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801853A8[])(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_801853B0[])(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_801853B8[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801853C0[])(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_801853C8[])(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_8018540C[])(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_801853D0; +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_8018543C[])(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_80185478[])(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(s32); +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_801854D0[])(); +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_801854E0[])(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_801854E8[])(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_80185650[])(); +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_8018565C[])(); +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_801B8670; +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 int func_801789AC(void); +extern s16 D_801BA010; +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_801B9980; +extern short D_801BA084; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801B9DAC; +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_801B9DD4; +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_801B9D90; +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_801B9FE0; +extern s16 D_801B9FE2; +extern s16 D_801B9FEC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801B9FE0; + + 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_801B9FEC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801B9FE0+0xC == &D_801B9FEC; 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_801B9FE0 + 0xC)) < 0x101) { + D_801B9FE0 = 0; + D_801B9FE2 = 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_801B9FEC); + 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_801B9FE0 + 0xC)) < 0x101) { + D_801B9FE0 = 0; + D_801B9FE2 = 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_801B9E0C; + extern s16 D_801B9E0E; + extern s16 D_801B9E10; + extern s16 D_801B9E04; + extern s16 D_801B9E06; + extern s16 D_801B9E08; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801B9E0C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801B9E0E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801B9E10, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801B9E04, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801B9E06, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801B9E08, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801B9D94; +extern u16 D_801B9E14; +extern u16 D_801B9E16; +extern u16 D_801B9E18; +extern s16 D_801BA010; + +void func_8017B1D8(void) { + func_8012A418(); + D_801BA010 = 0; + D_801B9D94 = 0; + D_801B9E14 = D_80126B5E; + D_801B9E16 = D_80126B62; + D_801B9E18 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80185798[]; + extern s16 D_801B9E0C; + extern s16 D_801B9E04; + 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_80185798[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80185798[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B9E0C; + s16 *p78C = &D_801B9E04; + *(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_801BA010 = 1; + D_801B9D94 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801B9DB4; + extern SV4_8017B368 D_801B9DBC; + extern s16 D_801B9E0C; + extern s16 D_801B9E04; + extern u16 D_80185798; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801B9DB4; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801B9DBC; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80185798)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80185798)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801B9E0C) = loc0; + (*(SV4_8017B368 *)&D_801B9E04) = loc1; + D_801BA010 = 1; + D_801B9D94 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80185798[]; + extern s16 D_801B9E0C; + extern s16 D_801B9E0E; + extern s16 D_801B9E10; + extern s16 D_801B9E04; + extern s16 D_801B9E06; + extern s16 D_801B9E08; + 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_80185798[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80185798[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801B9E0C; + s16 *p78C = &D_801B9E04; + *(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_801B9E0E; + v798 = D_801B9E10; + v78C = *p78C; + v78E = D_801B9E06; + v790 = D_801B9E08; + __asm__ __volatile__(""); + D_801BA010 = 1; + D_801B9D94 = 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_801B9D94; +extern s16 D_801B9E0C; +extern s16 D_801B9E0E; +extern s16 D_801B9E10; +extern s16 D_801B9E04; +extern s16 D_801B9E06; +extern s16 D_801B9E08; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801B9D94 = 0; + D_801B9E0C = (s16) D_80114F30; + D_801B9E0E = (s16) D_80114F34; + D_801B9E10 = (s16) D_80114F38; + D_801B9E04 = (s16) D_80114F24; + D_801B9E06 = (s16) D_80114F28; + D_801B9E08 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801B9E24; +extern s16 D_801B9E26; +extern s16 D_801B9E28; +extern s16 D_801B9E2C; +extern s16 D_801B9E2E; +extern s16 D_801B9E30; + +void func_8017B824(void) { + D_801B9E24 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801B9E26 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801B9E28 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801B9E2C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801B9E2E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801B9E30 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801B9E24; +extern s16 D_801B9E26; +extern s16 D_801B9E28; +extern s16 D_801B9E2C; +extern s16 D_801B9E2E; +extern s16 D_801B9E30; + +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_801B9E24; + D_80114F34 = D_801B9E26; + D_80114F38 = D_801B9E28; + D_80114F24 = D_801B9E2C; + D_80114F28 = D_801B9E2E; + D_80114F2C = D_801B9E30; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801B9E0C), src[8..15] -> (*(S8_8017B8E8 *)&D_801B9E04) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801B9E0C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801B9E04) = ((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_801B9E14; +extern u16 D_801B9E16; +extern u16 D_801B9E18; + +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_801B9D94; +extern short D_801B9E1C; +extern short D_801B9E1E; +extern short D_801B9E20; +extern s16 D_801B9E0C; +extern s16 D_801B9E0E; +extern s16 D_801B9E10; +extern s16 D_801B9E04; +extern s16 D_801B9E06; +extern s16 D_801B9E08; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801B9E14); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801B9E16); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801B9E18); + (*(s16 *)&D_801B9E1C) = buf[0]; + (*(s16 *)&D_801B9E1E) = buf[1]; + (*(s16 *)&D_801B9E20) = buf[2]; + D_801B9E0C = D_80114F30 + buf[0]; + D_801B9D94 = 0; + D_801B9E0E = D_80114F34 + buf[1]; + D_801B9E10 = D_80114F38 + buf[2]; + D_801B9E04 = D_80114F24 + buf[0]; + D_801B9E06 = D_80114F28 + buf[1]; + D_801B9E08 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801B9DB4; +extern SV4 D_801B9DBC; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801B9DBC) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801B9DB4 = 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_801B9DBC = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801B9DBC)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801B9DB4) = 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_801B9DBC) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801B9DDC[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801B9DDC; + 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_801B9D94; +extern s16 D_801BA010; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801B9D94 = D_801B9D94 + 1; + if (D_801B9D94 >= 0x1F) { + D_801BA010 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801B9D94; +extern s16 D_801BA010; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801B9D94 = D_801B9D94 + 1; + if (0x18 < D_801B9D94) { + func_8012A4BC(); + D_801BA010 = 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_801B9D94; +extern void (*D_801B9DD8)(void); +extern short D_801B9E1C; +extern short D_801B9E1E; +extern short D_801B9E20; +extern s16 D_801BA010; + +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_801B9D94 = D_801B9D94 + 1; + if (D_801B9D94 >= 0x19) { + if (D_801B9DD8 != 0) { + (*D_801B9DD8)(); + } else { + D_80114F30 = D_80114F30 + D_801B9E1C; + D_80114F34 = D_80114F34 + D_801B9E1E; + D_80114F38 = D_80114F38 + D_801B9E20; + D_80114F24 = D_80114F24 + D_801B9E1C; + D_80114F28 = D_80114F28 + D_801B9E1E; + D_80114F2C = D_80114F2C + D_801B9E20; + func_8012A4BC(); + } + D_801BA010 = 0; + } +} + + + +extern void (*D_80185838[])(void); + +void func_8017BE60(void *a0) { + D_80185838[*(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) */ + +INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017AE2C", func_8017BEE0); + + + +extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); + void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3) { + ((void (*)(void *, void *, s32, s32))func_8017BF34)(a0, a1, (s16)a2, (s16)a3); + } + + +INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017AE2C", func_8017BF34); + +INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017AE2C", func_8017BFBC); + +INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017AE2C", func_8017C010); + +INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017AE2C", func_8017C068); + + +extern void (*D_80185898[])(void); + +void func_8017C114(void *a0) { + D_80185898[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017AE2C", func_8017C150); + +INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017AE2C", func_8017C43C); + diff --git a/src/ov_SC06_032/ov_SC06_032_jr_8017A4AC.c b/src/ov_SC06_032/ov_SC06_032_jr_8017A4AC.c index 1c456eaf1..cac266021 100644 --- a/src/ov_SC06_032/ov_SC06_032_jr_8017A4AC.c +++ b/src/ov_SC06_032/ov_SC06_032_jr_8017A4AC.c @@ -2946,591 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801D04BC; - extern s16 D_801D04BE; - extern s16 D_801D04C0; - extern s16 D_801D04B4; - extern s16 D_801D04B6; - extern s16 D_801D04B8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D04BC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D04BE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D04C0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D04B4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D04B6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D04B8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801D0444; -extern u16 D_801D04C4; -extern u16 D_801D04C6; -extern u16 D_801D04C8; -extern s16 D_801D10F8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801D10F8 = 0; - D_801D0444 = 0; - D_801D04C4 = D_80126B5E; - D_801D04C6 = D_80126B62; - D_801D04C8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80196C64[]; - extern s16 D_801D04BC; - extern s16 D_801D04B4; - 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_80196C64[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80196C64[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D04BC; - s16 *p78C = &D_801D04B4; - *(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_801D10F8 = 1; - D_801D0444 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D0464; - extern SV4_8017B368 D_801D046C; - extern s16 D_801D04BC; - extern s16 D_801D04B4; - extern u16 D_80196C64; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801D0464; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801D046C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80196C64)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80196C64)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801D04BC) = loc0; - (*(SV4_8017B368 *)&D_801D04B4) = loc1; - D_801D10F8 = 1; - D_801D0444 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80196C64[]; - extern s16 D_801D04BC; - extern s16 D_801D04BE; - extern s16 D_801D04C0; - extern s16 D_801D04B4; - extern s16 D_801D04B6; - extern s16 D_801D04B8; - 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_80196C64[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80196C64[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D04BC; - s16 *p78C = &D_801D04B4; - *(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_801D04BE; - v798 = D_801D04C0; - v78C = *p78C; - v78E = D_801D04B6; - v790 = D_801D04B8; - __asm__ __volatile__(""); - D_801D10F8 = 1; - D_801D0444 = 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_801D0444; -extern s16 D_801D04BC; -extern s16 D_801D04BE; -extern s16 D_801D04C0; -extern s16 D_801D04B4; -extern s16 D_801D04B6; -extern s16 D_801D04B8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801D0444 = 0; - D_801D04BC = (s16) D_80114F30; - D_801D04BE = (s16) D_80114F34; - D_801D04C0 = (s16) D_80114F38; - D_801D04B4 = (s16) D_80114F24; - D_801D04B6 = (s16) D_80114F28; - D_801D04B8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801D04D4; -extern s16 D_801D04D6; -extern s16 D_801D04D8; -extern s16 D_801D04DC; -extern s16 D_801D04DE; -extern s16 D_801D04E0; - -void func_8017B824(void) { - D_801D04D4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801D04D6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801D04D8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801D04DC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801D04DE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801D04E0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801D04D4; -extern s16 D_801D04D6; -extern s16 D_801D04D8; -extern s16 D_801D04DC; -extern s16 D_801D04DE; -extern s16 D_801D04E0; - -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_801D04D4; - D_80114F34 = D_801D04D6; - D_80114F38 = D_801D04D8; - D_80114F24 = D_801D04DC; - D_80114F28 = D_801D04DE; - D_80114F2C = D_801D04E0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801D04BC), src[8..15] -> (*(S8_8017B8E8 *)&D_801D04B4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801D04BC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801D04B4) = ((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_801D04C4; -extern u16 D_801D04C6; -extern u16 D_801D04C8; - -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_801D0444; -extern short D_801D04CC; -extern short D_801D04CE; -extern short D_801D04D0; -extern s16 D_801D04BC; -extern s16 D_801D04BE; -extern s16 D_801D04C0; -extern s16 D_801D04B4; -extern s16 D_801D04B6; -extern s16 D_801D04B8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D04C4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D04C6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D04C8); - (*(s16 *)&D_801D04CC) = buf[0]; - (*(s16 *)&D_801D04CE) = buf[1]; - (*(s16 *)&D_801D04D0) = buf[2]; - D_801D04BC = D_80114F30 + buf[0]; - D_801D0444 = 0; - D_801D04BE = D_80114F34 + buf[1]; - D_801D04C0 = D_80114F38 + buf[2]; - D_801D04B4 = D_80114F24 + buf[0]; - D_801D04B6 = D_80114F28 + buf[1]; - D_801D04B8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801D0464; -extern SV4 D_801D046C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D046C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801D0464 = 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_801D046C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D046C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801D0464) = 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_801D046C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801D048C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801D048C; - 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_801D0444; -extern s16 D_801D10F8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801D0444 = D_801D0444 + 1; - if (D_801D0444 >= 0x1F) { - D_801D10F8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801D0444; -extern s16 D_801D10F8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801D0444 = D_801D0444 + 1; - if (0x18 < D_801D0444) { - func_8012A4BC(); - D_801D10F8 = 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_801D0444; -extern void (*D_801D0488)(void); -extern short D_801D04CC; -extern short D_801D04CE; -extern short D_801D04D0; -extern s16 D_801D10F8; - -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_801D0444 = D_801D0444 + 1; - if (D_801D0444 >= 0x19) { - if (D_801D0488 != 0) { - (*D_801D0488)(); - } else { - D_80114F30 = D_80114F30 + D_801D04CC; - D_80114F34 = D_80114F34 + D_801D04CE; - D_80114F38 = D_80114F38 + D_801D04D0; - D_80114F24 = D_80114F24 + D_801D04CC; - D_80114F28 = D_80114F28 + D_801D04CE; - D_80114F2C = D_80114F2C + D_801D04D0; - func_8012A4BC(); - } - D_801D10F8 = 0; - } -} - - - -extern void (*D_80196D04[])(void); - -void func_8017BE60(void *a0) { - D_80196D04[*(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 (*D_80196D1C[])(void); - -void func_8017BEBC(void *a0) { - D_80196D1C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017A4AC", func_8017BEF8); - -DEFINE_func_8017C090() /* dedup: shared engine-core @0x8017C090 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017A4AC", func_8017C0A4); - -INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017A4AC", func_8017C120); - -INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017A4AC", func_8017C1DC); diff --git a/src/ov_SC06_032/ov_SC06_032_jr_8017AE2C.c b/src/ov_SC06_032/ov_SC06_032_jr_8017AE2C.c new file mode 100644 index 000000000..dfd319f4b --- /dev/null +++ b/src/ov_SC06_032/ov_SC06_032_jr_8017AE2C.c @@ -0,0 +1,3468 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8019585C; +extern u8 D_801957CC; +extern u8 D_801957A8; +extern u8 D_80195784; +extern u8 D_80195838; +extern u8 D_80195814; +extern u8 D_801957F0; +extern u8 D_80195760; +extern void func_80145934(void); +extern u8 D_801958EC; +extern u8 D_801958C8; +extern u8 D_801958A4; +extern u8 D_80195880; +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_80194CE4[]; +extern unsigned char D_80194D14[]; +extern unsigned char D_80194D64[]; +extern unsigned char D_80194D94[]; +extern unsigned char D_80194DC4[]; +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(void); +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_80194E14[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80194EDC[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80194F64[]; +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_80194F6C; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801CF340; +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_801CF344; +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_80194F9C; +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 void 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_80195044[])(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_80195068[])(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_80195058; +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_8019507C[])(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_80195088[]; +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_80195098[])(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_801950B0[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801950A0; +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_801950C4[])(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_801950E0[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801950D0; +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_801950F4[])(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_80195108[])(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_8019511C; +extern void (*D_80195144[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80195124; +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_80195190[])(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_80195194[])(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(void *a0); +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_801955F8[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80195608[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801CF378; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80195630[])(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_80195610; +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_80195620; +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_80195670[])(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_80195678[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80195644; +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_80195684[])(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_80195654; +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_801CF380; +extern s32 D_801CF38C; +extern s32 D_801CF390; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801956C0[])(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_80195694[]; +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_801CF388; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80195910[])(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_80195730[]; +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_801959B4[])(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_80195B08[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80195924; +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_80195B10[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80195934; +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_80195954; +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_80195B18[])(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(void); +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_80195B40[])(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_80195B4C[])(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_801959C0[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80195BF0; +extern void func_8015D380(s32 a0); +extern unsigned char D_80194CD4[]; +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_80195C04[]; +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_80195C40[]; +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_80195C88; +extern u16 D_80195C8A; +extern u16 D_80195C8C; +extern s32 D_80195C90; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80195C98; +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_801959A4; +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_80195D1C[]; +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_80195DCC[])(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_80195DFC[]; +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_80195E60; +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_801CF398[]; +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_80195E84[])(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_801CF3F0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80195ECC[])(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_80195EBC; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801CEA74[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_80195ED4[])(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_80195F28[])(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_80195EF0; +extern s16 D_80195F24; +extern s16 D_80195F22; +extern s16 D_80195F20; +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_80195F34[])(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_801CF450; +extern u8 D_801CF451; +extern u8 D_801CF452; +extern u8 D_801CF453; +extern u8 D_801CF454; +extern u8 D_801CF455; +extern u8 D_801CF456; +extern u8 D_801CF457; +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_80195F44[])(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_801CF490; +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_80195F88[])(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_80196004[]; +extern s32 D_80196024[]; +extern u8 D_801960A0[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801960C0[]; +extern u8 D_801960E0[]; +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_8019617C[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801961F8[])(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_801CEA84; +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_80196204[])(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_8019620C[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801962D4[])(void); +extern void func_80166618(void *a0); +extern void (*D_801962E4[])(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_801962F4[])(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_80196300[])(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_80196260[]; +extern u8 D_80196274[]; +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_80196318[])(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_80196320[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80196328[])(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_80196330[])(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_80196338[])(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_80196340[])(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_80196348[])(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_801963FC[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80196404[])(void); +extern void func_80169F00(void *a0); +extern char D_801963B4[]; +extern char D_80196374[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8019643C[])(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_80196448[])(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_80196490[])(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_8019650C[])(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_801CF7B0; +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_80196500[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80196544[]; +extern unsigned short D_8019654C[]; +extern unsigned short D_80196554[]; +extern unsigned char D_801CF7B8[]; +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_801CF7B0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8019655C[])(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_801CF8EC; +extern M2C_UNK D_801CF8F0; +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_801CF878; +extern void (*D_8019658C[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801CF8F4[]; +extern u8 D_801CF8FC[]; +extern u8 D_801CF8AC[]; +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_80196594[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801965B0[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801965B8[])(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_80196620[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801965C4; +extern u8 D_801965D0; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80196654[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8019665C[])(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_801966B0[])(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_801966E4[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801966D4[]; +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_80196700; +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); +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_80196778[])(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_80196780[])(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_80196788[])(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_80196790[])(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_80196798[])(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_801967A0[])(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_801967AC[])(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_801967B8[])(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_801967C4[])(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_801967D4[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801967E4[])(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_801967EC[])(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_801967F4[])(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_801967FC[])(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_80196804[])(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_8019680C[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80196814[])(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_8019681C[])(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_80196824[])(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_8019682C[])(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_80196834[])(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_8019683C[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80196844[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8019684C[])(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_80196854[])(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_8019685C[])(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_80196864[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8019686C[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80196874[])(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_8019687C[])(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_80196884[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8019688C[])(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_80196894[])(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_801968D8[])(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_8019689C; +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_80196908[])(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_80196944[])(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(s32); +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_8019699C[])(); +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_801969AC[])(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_801969B4[])(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_80196B1C[])(); +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_80196B28[])(); +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_801CECCC; +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 int func_801789AC(void); +extern s16 D_801D10F8; +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_801D0030; +extern short D_801D116C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801D045C; +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_801D0484; +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_801D0440; +extern s32 func_8017A3B0(void); +extern short D_801D047C; +extern short D_801D0478; +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_801D10C8; +extern s16 D_801D10CA; +extern s16 D_801D10D4; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801D10C8; + + 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_801D10D4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801D10C8+0xC == &D_801D10D4; 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_801D10C8 + 0xC)) < 0x101) { + D_801D10C8 = 0; + D_801D10CA = 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_801D10D4); + 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_801D10C8 + 0xC)) < 0x101) { + D_801D10C8 = 0; + D_801D10CA = 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_801D04BC; + extern s16 D_801D04BE; + extern s16 D_801D04C0; + extern s16 D_801D04B4; + extern s16 D_801D04B6; + extern s16 D_801D04B8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D04BC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D04BE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D04C0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D04B4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D04B6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D04B8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801D0444; +extern u16 D_801D04C4; +extern u16 D_801D04C6; +extern u16 D_801D04C8; +extern s16 D_801D10F8; + +void func_8017B1D8(void) { + func_8012A418(); + D_801D10F8 = 0; + D_801D0444 = 0; + D_801D04C4 = D_80126B5E; + D_801D04C6 = D_80126B62; + D_801D04C8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80196C64[]; + extern s16 D_801D04BC; + extern s16 D_801D04B4; + 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_80196C64[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80196C64[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D04BC; + s16 *p78C = &D_801D04B4; + *(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_801D10F8 = 1; + D_801D0444 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D0464; + extern SV4_8017B368 D_801D046C; + extern s16 D_801D04BC; + extern s16 D_801D04B4; + extern u16 D_80196C64; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801D0464; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801D046C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80196C64)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80196C64)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801D04BC) = loc0; + (*(SV4_8017B368 *)&D_801D04B4) = loc1; + D_801D10F8 = 1; + D_801D0444 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80196C64[]; + extern s16 D_801D04BC; + extern s16 D_801D04BE; + extern s16 D_801D04C0; + extern s16 D_801D04B4; + extern s16 D_801D04B6; + extern s16 D_801D04B8; + 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_80196C64[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80196C64[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D04BC; + s16 *p78C = &D_801D04B4; + *(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_801D04BE; + v798 = D_801D04C0; + v78C = *p78C; + v78E = D_801D04B6; + v790 = D_801D04B8; + __asm__ __volatile__(""); + D_801D10F8 = 1; + D_801D0444 = 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_801D0444; +extern s16 D_801D04BC; +extern s16 D_801D04BE; +extern s16 D_801D04C0; +extern s16 D_801D04B4; +extern s16 D_801D04B6; +extern s16 D_801D04B8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801D0444 = 0; + D_801D04BC = (s16) D_80114F30; + D_801D04BE = (s16) D_80114F34; + D_801D04C0 = (s16) D_80114F38; + D_801D04B4 = (s16) D_80114F24; + D_801D04B6 = (s16) D_80114F28; + D_801D04B8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801D04D4; +extern s16 D_801D04D6; +extern s16 D_801D04D8; +extern s16 D_801D04DC; +extern s16 D_801D04DE; +extern s16 D_801D04E0; + +void func_8017B824(void) { + D_801D04D4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801D04D6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801D04D8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801D04DC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801D04DE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801D04E0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801D04D4; +extern s16 D_801D04D6; +extern s16 D_801D04D8; +extern s16 D_801D04DC; +extern s16 D_801D04DE; +extern s16 D_801D04E0; + +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_801D04D4; + D_80114F34 = D_801D04D6; + D_80114F38 = D_801D04D8; + D_80114F24 = D_801D04DC; + D_80114F28 = D_801D04DE; + D_80114F2C = D_801D04E0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801D04BC), src[8..15] -> (*(S8_8017B8E8 *)&D_801D04B4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801D04BC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801D04B4) = ((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_801D04C4; +extern u16 D_801D04C6; +extern u16 D_801D04C8; + +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_801D0444; +extern short D_801D04CC; +extern short D_801D04CE; +extern short D_801D04D0; +extern s16 D_801D04BC; +extern s16 D_801D04BE; +extern s16 D_801D04C0; +extern s16 D_801D04B4; +extern s16 D_801D04B6; +extern s16 D_801D04B8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D04C4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D04C6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D04C8); + (*(s16 *)&D_801D04CC) = buf[0]; + (*(s16 *)&D_801D04CE) = buf[1]; + (*(s16 *)&D_801D04D0) = buf[2]; + D_801D04BC = D_80114F30 + buf[0]; + D_801D0444 = 0; + D_801D04BE = D_80114F34 + buf[1]; + D_801D04C0 = D_80114F38 + buf[2]; + D_801D04B4 = D_80114F24 + buf[0]; + D_801D04B6 = D_80114F28 + buf[1]; + D_801D04B8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801D0464; +extern SV4 D_801D046C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D046C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801D0464 = 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_801D046C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D046C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801D0464) = 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_801D046C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801D048C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801D048C; + 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_801D0444; +extern s16 D_801D10F8; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801D0444 = D_801D0444 + 1; + if (D_801D0444 >= 0x1F) { + D_801D10F8 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801D0444; +extern s16 D_801D10F8; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801D0444 = D_801D0444 + 1; + if (0x18 < D_801D0444) { + func_8012A4BC(); + D_801D10F8 = 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_801D0444; +extern void (*D_801D0488)(void); +extern short D_801D04CC; +extern short D_801D04CE; +extern short D_801D04D0; +extern s16 D_801D10F8; + +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_801D0444 = D_801D0444 + 1; + if (D_801D0444 >= 0x19) { + if (D_801D0488 != 0) { + (*D_801D0488)(); + } else { + D_80114F30 = D_80114F30 + D_801D04CC; + D_80114F34 = D_80114F34 + D_801D04CE; + D_80114F38 = D_80114F38 + D_801D04D0; + D_80114F24 = D_80114F24 + D_801D04CC; + D_80114F28 = D_80114F28 + D_801D04CE; + D_80114F2C = D_80114F2C + D_801D04D0; + func_8012A4BC(); + } + D_801D10F8 = 0; + } +} + + + +extern void (*D_80196D04[])(void); + +void func_8017BE60(void *a0) { + D_80196D04[*(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 (*D_80196D1C[])(void); + +void func_8017BEBC(void *a0) { + D_80196D1C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017AE2C", func_8017BEF8); + +DEFINE_func_8017C090() /* dedup: shared engine-core @0x8017C090 (src/shared) */ + + +INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017AE2C", func_8017C0A4); + +INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017AE2C", func_8017C120); + +INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017AE2C", func_8017C1DC); + diff --git a/src/ov_SC06_033/ov_SC06_033_jr_8017A4AC.c b/src/ov_SC06_033/ov_SC06_033_jr_8017A4AC.c index 64b79e37a..0ba4c3a88 100644 --- a/src/ov_SC06_033/ov_SC06_033_jr_8017A4AC.c +++ b/src/ov_SC06_033/ov_SC06_033_jr_8017A4AC.c @@ -2946,590 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801D057C; - extern s16 D_801D057E; - extern s16 D_801D0580; - extern s16 D_801D0574; - extern s16 D_801D0576; - extern s16 D_801D0578; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D057C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D057E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D0580, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D0574, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D0576, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D0578, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801D0504; -extern u16 D_801D0584; -extern u16 D_801D0586; -extern u16 D_801D0588; -extern s16 D_801D0F78; - -void func_8017B1D8(void) { - func_8012A418(); - D_801D0F78 = 0; - D_801D0504 = 0; - D_801D0584 = D_80126B5E; - D_801D0586 = D_80126B62; - D_801D0588 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80195174[]; - extern s16 D_801D057C; - extern s16 D_801D0574; - 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_80195174[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80195174[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D057C; - s16 *p78C = &D_801D0574; - *(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_801D0F78 = 1; - D_801D0504 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D0524; - extern SV4_8017B368 D_801D052C; - extern s16 D_801D057C; - extern s16 D_801D0574; - extern u16 D_80195174; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801D0524; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801D052C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80195174)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80195174)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801D057C) = loc0; - (*(SV4_8017B368 *)&D_801D0574) = loc1; - D_801D0F78 = 1; - D_801D0504 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80195174[]; - extern s16 D_801D057C; - extern s16 D_801D057E; - extern s16 D_801D0580; - extern s16 D_801D0574; - extern s16 D_801D0576; - extern s16 D_801D0578; - 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_80195174[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80195174[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D057C; - s16 *p78C = &D_801D0574; - *(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_801D057E; - v798 = D_801D0580; - v78C = *p78C; - v78E = D_801D0576; - v790 = D_801D0578; - __asm__ __volatile__(""); - D_801D0F78 = 1; - D_801D0504 = 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_801D0504; -extern s16 D_801D057C; -extern s16 D_801D057E; -extern s16 D_801D0580; -extern s16 D_801D0574; -extern s16 D_801D0576; -extern s16 D_801D0578; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801D0504 = 0; - D_801D057C = (s16) D_80114F30; - D_801D057E = (s16) D_80114F34; - D_801D0580 = (s16) D_80114F38; - D_801D0574 = (s16) D_80114F24; - D_801D0576 = (s16) D_80114F28; - D_801D0578 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801D0594; -extern s16 D_801D0596; -extern s16 D_801D0598; -extern s16 D_801D059C; -extern s16 D_801D059E; -extern s16 D_801D05A0; - -void func_8017B824(void) { - D_801D0594 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801D0596 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801D0598 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801D059C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801D059E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801D05A0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801D0594; -extern s16 D_801D0596; -extern s16 D_801D0598; -extern s16 D_801D059C; -extern s16 D_801D059E; -extern s16 D_801D05A0; - -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_801D0594; - D_80114F34 = D_801D0596; - D_80114F38 = D_801D0598; - D_80114F24 = D_801D059C; - D_80114F28 = D_801D059E; - D_80114F2C = D_801D05A0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801D057C), src[8..15] -> (*(S8_8017B8E8 *)&D_801D0574) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801D057C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801D0574) = ((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_801D0584; -extern u16 D_801D0586; -extern u16 D_801D0588; - -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_801D0504; -extern short D_801D058C; -extern short D_801D058E; -extern short D_801D0590; -extern s16 D_801D057C; -extern s16 D_801D057E; -extern s16 D_801D0580; -extern s16 D_801D0574; -extern s16 D_801D0576; -extern s16 D_801D0578; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D0584); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D0586); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D0588); - (*(s16 *)&D_801D058C) = buf[0]; - (*(s16 *)&D_801D058E) = buf[1]; - (*(s16 *)&D_801D0590) = buf[2]; - D_801D057C = D_80114F30 + buf[0]; - D_801D0504 = 0; - D_801D057E = D_80114F34 + buf[1]; - D_801D0580 = D_80114F38 + buf[2]; - D_801D0574 = D_80114F24 + buf[0]; - D_801D0576 = D_80114F28 + buf[1]; - D_801D0578 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801D0524; -extern SV4 D_801D052C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D052C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801D0524 = 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_801D052C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D052C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801D0524) = 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_801D052C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801D054C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801D054C; - 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_801D0504; -extern s16 D_801D0F78; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801D0504 = D_801D0504 + 1; - if (D_801D0504 >= 0x1F) { - D_801D0F78 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801D0504; -extern s16 D_801D0F78; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801D0504 = D_801D0504 + 1; - if (0x18 < D_801D0504) { - func_8012A4BC(); - D_801D0F78 = 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_801D0504; -extern void (*D_801D0548)(void); -extern short D_801D058C; -extern short D_801D058E; -extern short D_801D0590; -extern s16 D_801D0F78; - -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_801D0504 = D_801D0504 + 1; - if (D_801D0504 >= 0x19) { - if (D_801D0548 != 0) { - (*D_801D0548)(); - } else { - D_80114F30 = D_80114F30 + D_801D058C; - D_80114F34 = D_80114F34 + D_801D058E; - D_80114F38 = D_80114F38 + D_801D0590; - D_80114F24 = D_80114F24 + D_801D058C; - D_80114F28 = D_80114F28 + D_801D058E; - D_80114F2C = D_80114F2C + D_801D0590; - func_8012A4BC(); - } - D_801D0F78 = 0; - } -} - - - -extern void (*D_80195214[])(void); - -void func_8017BE60(void *a0) { - D_80195214[*(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 (*D_8019522C[])(void); - -void func_8017BEBC(void *a0) { - D_8019522C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017A4AC", func_8017BEF8); - -DEFINE_func_8017C090() /* dedup: shared engine-core @0x8017C090 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017A4AC", func_8017C0A4); - -INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017A4AC", func_8017C120); - -INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017A4AC", func_8017C1DC); diff --git a/src/ov_SC06_033/ov_SC06_033_jr_8017AE2C.c b/src/ov_SC06_033/ov_SC06_033_jr_8017AE2C.c new file mode 100644 index 000000000..22b366ba3 --- /dev/null +++ b/src/ov_SC06_033/ov_SC06_033_jr_8017AE2C.c @@ -0,0 +1,3467 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80193D6C; +extern u8 D_80193CDC; +extern u8 D_80193CB8; +extern u8 D_80193C94; +extern u8 D_80193D48; +extern u8 D_80193D24; +extern u8 D_80193D00; +extern u8 D_80193C70; +extern void func_80145934(void); +extern u8 D_80193DFC; +extern u8 D_80193DD8; +extern u8 D_80193DB4; +extern u8 D_80193D90; +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_801931F4[]; +extern unsigned char D_80193224[]; +extern unsigned char D_80193274[]; +extern unsigned char D_801932A4[]; +extern unsigned char D_801932D4[]; +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(void); +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_80193324[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_801933EC[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80193474[]; +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_8019347C; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801CF400; +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_801CF404; +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_801934AC; +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 void 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_80193554[])(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_80193578[])(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_80193568; +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_8019358C[])(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_80193598[]; +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_801935A8[])(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_801935C0[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801935B0; +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_801935D4[])(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_801935F0[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801935E0; +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_80193604[])(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_80193618[])(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_8019362C; +extern void (*D_80193654[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80193634; +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_801936A0[])(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_801936A4[])(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(void *a0); +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_80193B08[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80193B18[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801CF438; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80193B40[])(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_80193B20; +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_80193B30; +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_80193B80[])(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_80193B88[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80193B54; +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_80193B94[])(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_80193B64; +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_801CF440; +extern s32 D_801CF44C; +extern s32 D_801CF450; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80193BD0[])(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_80193BA4[]; +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_801CF448; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80193E20[])(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_80193C40[]; +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_80193EC4[])(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_80194018[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80193E34; +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_80194020[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80193E44; +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_80193E64; +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_80194028[])(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(void); +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_80194050[])(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_8019405C[])(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_80193ED0[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80194100; +extern void func_8015D380(s32 a0); +extern unsigned char D_801931E4[]; +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_80194114[]; +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_80194150[]; +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_80194198; +extern u16 D_8019419A; +extern u16 D_8019419C; +extern s32 D_801941A0; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_801941A8; +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_80193EB4; +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_8019422C[]; +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_801942DC[])(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_8019430C[]; +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_80194370; +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_801CF458[]; +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_80194394[])(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_801CF4B0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_801943DC[])(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_801943CC; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801CEB28[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_801943E4[])(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_80194438[])(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_80194400; +extern s16 D_80194434; +extern s16 D_80194432; +extern s16 D_80194430; +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_80194444[])(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_801CF510; +extern u8 D_801CF511; +extern u8 D_801CF512; +extern u8 D_801CF513; +extern u8 D_801CF514; +extern u8 D_801CF515; +extern u8 D_801CF516; +extern u8 D_801CF517; +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_80194454[])(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_801CF550; +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_80194498[])(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_80194514[]; +extern s32 D_80194534[]; +extern u8 D_801945B0[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801945D0[]; +extern u8 D_801945F0[]; +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_8019468C[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80194708[])(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_801CEB38; +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_80194714[])(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_8019471C[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801947E4[])(void); +extern void func_80166618(void *a0); +extern void (*D_801947F4[])(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_80194804[])(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_80194810[])(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_80194770[]; +extern u8 D_80194784[]; +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_80194828[])(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_80194830[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80194838[])(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_80194840[])(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_80194848[])(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_80194850[])(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_80194858[])(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_8019490C[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80194914[])(void); +extern void func_80169F00(void *a0); +extern char D_801948C4[]; +extern char D_80194884[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8019494C[])(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_80194958[])(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_801949A0[])(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_80194A1C[])(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_801CF870; +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_80194A10[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80194A54[]; +extern unsigned short D_80194A5C[]; +extern unsigned short D_80194A64[]; +extern unsigned char D_801CF878[]; +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_801CF870; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80194A6C[])(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_801CF9AC; +extern M2C_UNK D_801CF9B0; +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_801CF938; +extern void (*D_80194A9C[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801CF9B4[]; +extern u8 D_801CF9BC[]; +extern u8 D_801CF96C[]; +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_80194AA4[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80194AC0[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80194AC8[])(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_80194B30[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80194AD4; +extern u8 D_80194AE0; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80194B64[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80194B6C[])(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_80194BC0[])(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_80194BF4[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80194BE4[]; +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_80194C10; +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); +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_80194C88[])(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_80194C90[])(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_80194C98[])(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_80194CA0[])(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_80194CA8[])(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_80194CB0[])(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_80194CBC[])(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_80194CC8[])(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_80194CD4[])(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_80194CE4[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80194CF4[])(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_80194CFC[])(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_80194D04[])(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_80194D0C[])(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_80194D14[])(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_80194D1C[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80194D24[])(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_80194D2C[])(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_80194D34[])(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_80194D3C[])(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_80194D44[])(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_80194D4C[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80194D54[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80194D5C[])(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_80194D64[])(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_80194D6C[])(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_80194D74[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80194D7C[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80194D84[])(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_80194D8C[])(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_80194D94[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80194D9C[])(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_80194DA4[])(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_80194DE8[])(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_80194DAC; +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_80194E18[])(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_80194E54[])(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(s32); +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_80194EAC[])(); +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_80194EBC[])(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_80194EC4[])(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_8019502C[])(); +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_80195038[])(); +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_801CED80; +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 int func_801789AC(void); +extern s16 D_801D0F78; +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_801D00F0; +extern short D_801D0FEC; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801D051C; +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_801D0544; +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_801D0500; +extern s32 func_8017A3B0(void); +extern short D_801D053C; +extern short D_801D0538; +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_801D0F48; +extern s16 D_801D0F4A; +extern s16 D_801D0F54; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801D0F48; + + 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_801D0F54); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801D0F48+0xC == &D_801D0F54; 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_801D0F48 + 0xC)) < 0x101) { + D_801D0F48 = 0; + D_801D0F4A = 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_801D0F54); + 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_801D0F48 + 0xC)) < 0x101) { + D_801D0F48 = 0; + D_801D0F4A = 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_801D057C; + extern s16 D_801D057E; + extern s16 D_801D0580; + extern s16 D_801D0574; + extern s16 D_801D0576; + extern s16 D_801D0578; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D057C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D057E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D0580, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D0574, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D0576, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D0578, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801D0504; +extern u16 D_801D0584; +extern u16 D_801D0586; +extern u16 D_801D0588; +extern s16 D_801D0F78; + +void func_8017B1D8(void) { + func_8012A418(); + D_801D0F78 = 0; + D_801D0504 = 0; + D_801D0584 = D_80126B5E; + D_801D0586 = D_80126B62; + D_801D0588 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80195174[]; + extern s16 D_801D057C; + extern s16 D_801D0574; + 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_80195174[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80195174[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D057C; + s16 *p78C = &D_801D0574; + *(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_801D0F78 = 1; + D_801D0504 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801D0524; + extern SV4_8017B368 D_801D052C; + extern s16 D_801D057C; + extern s16 D_801D0574; + extern u16 D_80195174; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801D0524; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801D052C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80195174)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80195174)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801D057C) = loc0; + (*(SV4_8017B368 *)&D_801D0574) = loc1; + D_801D0F78 = 1; + D_801D0504 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80195174[]; + extern s16 D_801D057C; + extern s16 D_801D057E; + extern s16 D_801D0580; + extern s16 D_801D0574; + extern s16 D_801D0576; + extern s16 D_801D0578; + 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_80195174[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80195174[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801D057C; + s16 *p78C = &D_801D0574; + *(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_801D057E; + v798 = D_801D0580; + v78C = *p78C; + v78E = D_801D0576; + v790 = D_801D0578; + __asm__ __volatile__(""); + D_801D0F78 = 1; + D_801D0504 = 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_801D0504; +extern s16 D_801D057C; +extern s16 D_801D057E; +extern s16 D_801D0580; +extern s16 D_801D0574; +extern s16 D_801D0576; +extern s16 D_801D0578; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801D0504 = 0; + D_801D057C = (s16) D_80114F30; + D_801D057E = (s16) D_80114F34; + D_801D0580 = (s16) D_80114F38; + D_801D0574 = (s16) D_80114F24; + D_801D0576 = (s16) D_80114F28; + D_801D0578 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801D0594; +extern s16 D_801D0596; +extern s16 D_801D0598; +extern s16 D_801D059C; +extern s16 D_801D059E; +extern s16 D_801D05A0; + +void func_8017B824(void) { + D_801D0594 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801D0596 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801D0598 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801D059C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801D059E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801D05A0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801D0594; +extern s16 D_801D0596; +extern s16 D_801D0598; +extern s16 D_801D059C; +extern s16 D_801D059E; +extern s16 D_801D05A0; + +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_801D0594; + D_80114F34 = D_801D0596; + D_80114F38 = D_801D0598; + D_80114F24 = D_801D059C; + D_80114F28 = D_801D059E; + D_80114F2C = D_801D05A0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801D057C), src[8..15] -> (*(S8_8017B8E8 *)&D_801D0574) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801D057C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801D0574) = ((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_801D0584; +extern u16 D_801D0586; +extern u16 D_801D0588; + +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_801D0504; +extern short D_801D058C; +extern short D_801D058E; +extern short D_801D0590; +extern s16 D_801D057C; +extern s16 D_801D057E; +extern s16 D_801D0580; +extern s16 D_801D0574; +extern s16 D_801D0576; +extern s16 D_801D0578; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D0584); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D0586); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D0588); + (*(s16 *)&D_801D058C) = buf[0]; + (*(s16 *)&D_801D058E) = buf[1]; + (*(s16 *)&D_801D0590) = buf[2]; + D_801D057C = D_80114F30 + buf[0]; + D_801D0504 = 0; + D_801D057E = D_80114F34 + buf[1]; + D_801D0580 = D_80114F38 + buf[2]; + D_801D0574 = D_80114F24 + buf[0]; + D_801D0576 = D_80114F28 + buf[1]; + D_801D0578 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801D0524; +extern SV4 D_801D052C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D052C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801D0524 = 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_801D052C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801D052C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801D0524) = 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_801D052C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801D054C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801D054C; + 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_801D0504; +extern s16 D_801D0F78; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801D0504 = D_801D0504 + 1; + if (D_801D0504 >= 0x1F) { + D_801D0F78 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801D0504; +extern s16 D_801D0F78; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801D0504 = D_801D0504 + 1; + if (0x18 < D_801D0504) { + func_8012A4BC(); + D_801D0F78 = 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_801D0504; +extern void (*D_801D0548)(void); +extern short D_801D058C; +extern short D_801D058E; +extern short D_801D0590; +extern s16 D_801D0F78; + +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_801D0504 = D_801D0504 + 1; + if (D_801D0504 >= 0x19) { + if (D_801D0548 != 0) { + (*D_801D0548)(); + } else { + D_80114F30 = D_80114F30 + D_801D058C; + D_80114F34 = D_80114F34 + D_801D058E; + D_80114F38 = D_80114F38 + D_801D0590; + D_80114F24 = D_80114F24 + D_801D058C; + D_80114F28 = D_80114F28 + D_801D058E; + D_80114F2C = D_80114F2C + D_801D0590; + func_8012A4BC(); + } + D_801D0F78 = 0; + } +} + + + +extern void (*D_80195214[])(void); + +void func_8017BE60(void *a0) { + D_80195214[*(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 (*D_8019522C[])(void); + +void func_8017BEBC(void *a0) { + D_8019522C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017AE2C", func_8017BEF8); + +DEFINE_func_8017C090() /* dedup: shared engine-core @0x8017C090 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017AE2C", func_8017C0A4); + +INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017AE2C", func_8017C120); + +INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017AE2C", func_8017C1DC); + diff --git a/src/ov_SC07_000/ov_SC07_000_jr_8017A4AC.c b/src/ov_SC07_000/ov_SC07_000_jr_8017A4AC.c index 44330c92f..41b0a2058 100644 --- a/src/ov_SC07_000/ov_SC07_000_jr_8017A4AC.c +++ b/src/ov_SC07_000/ov_SC07_000_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801CFAC4; - extern s16 D_801CFAC6; - extern s16 D_801CFAC8; - extern s16 D_801CFABC; - extern s16 D_801CFABE; - extern s16 D_801CFAC0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801CFAC4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801CFAC6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801CFAC8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801CFABC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801CFABE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801CFAC0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801CFA4C; -extern u16 D_801CFACC; -extern u16 D_801CFACE; -extern u16 D_801CFAD0; -extern s16 D_801D0C70; - -void func_8017B1D8(void) { - func_8012A418(); - D_801D0C70 = 0; - D_801CFA4C = 0; - D_801CFACC = D_80126B5E; - D_801CFACE = D_80126B62; - D_801CFAD0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80185FBC[]; - extern s16 D_801CFAC4; - extern s16 D_801CFABC; - 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_80185FBC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80185FBC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801CFAC4; - s16 *p78C = &D_801CFABC; - *(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_801D0C70 = 1; - D_801CFA4C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801CFA6C; - extern SV4_8017B368 D_801CFA74; - extern s16 D_801CFAC4; - extern s16 D_801CFABC; - extern u16 D_80185FBC; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801CFA6C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801CFA74; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80185FBC)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80185FBC)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801CFAC4) = loc0; - (*(SV4_8017B368 *)&D_801CFABC) = loc1; - D_801D0C70 = 1; - D_801CFA4C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80185FBC[]; - extern s16 D_801CFAC4; - extern s16 D_801CFAC6; - extern s16 D_801CFAC8; - extern s16 D_801CFABC; - extern s16 D_801CFABE; - extern s16 D_801CFAC0; - 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_80185FBC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80185FBC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801CFAC4; - s16 *p78C = &D_801CFABC; - *(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_801CFAC6; - v798 = D_801CFAC8; - v78C = *p78C; - v78E = D_801CFABE; - v790 = D_801CFAC0; - __asm__ __volatile__(""); - D_801D0C70 = 1; - D_801CFA4C = 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_801CFA4C; -extern s16 D_801CFAC4; -extern s16 D_801CFAC6; -extern s16 D_801CFAC8; -extern s16 D_801CFABC; -extern s16 D_801CFABE; -extern s16 D_801CFAC0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801CFA4C = 0; - D_801CFAC4 = (s16) D_80114F30; - D_801CFAC6 = (s16) D_80114F34; - D_801CFAC8 = (s16) D_80114F38; - D_801CFABC = (s16) D_80114F24; - D_801CFABE = (s16) D_80114F28; - D_801CFAC0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801CFADC; -extern s16 D_801CFADE; -extern s16 D_801CFAE0; -extern s16 D_801CFAE4; -extern s16 D_801CFAE6; -extern s16 D_801CFAE8; - -void func_8017B824(void) { - D_801CFADC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801CFADE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801CFAE0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801CFAE4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801CFAE6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801CFAE8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801CFADC; -extern s16 D_801CFADE; -extern s16 D_801CFAE0; -extern s16 D_801CFAE4; -extern s16 D_801CFAE6; -extern s16 D_801CFAE8; - -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_801CFADC; - D_80114F34 = D_801CFADE; - D_80114F38 = D_801CFAE0; - D_80114F24 = D_801CFAE4; - D_80114F28 = D_801CFAE6; - D_80114F2C = D_801CFAE8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801CFAC4), src[8..15] -> (*(S8_8017B8E8 *)&D_801CFABC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801CFAC4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801CFABC) = ((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_801CFACC; -extern u16 D_801CFACE; -extern u16 D_801CFAD0; - -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_801CFA4C; -extern short D_801CFAD4; -extern short D_801CFAD6; -extern short D_801CFAD8; -extern s16 D_801CFAC4; -extern s16 D_801CFAC6; -extern s16 D_801CFAC8; -extern s16 D_801CFABC; -extern s16 D_801CFABE; -extern s16 D_801CFAC0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801CFACC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801CFACE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801CFAD0); - (*(s16 *)&D_801CFAD4) = buf[0]; - (*(s16 *)&D_801CFAD6) = buf[1]; - (*(s16 *)&D_801CFAD8) = buf[2]; - D_801CFAC4 = D_80114F30 + buf[0]; - D_801CFA4C = 0; - D_801CFAC6 = D_80114F34 + buf[1]; - D_801CFAC8 = D_80114F38 + buf[2]; - D_801CFABC = D_80114F24 + buf[0]; - D_801CFABE = D_80114F28 + buf[1]; - D_801CFAC0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801CFA6C; -extern SV4 D_801CFA74; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801CFA74) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801CFA6C = 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_801CFA74 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801CFA74)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801CFA6C) = 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_801CFA74) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801CFA94[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801CFA94; - 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_801CFA4C; -extern s16 D_801D0C70; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801CFA4C = D_801CFA4C + 1; - if (D_801CFA4C >= 0x1F) { - D_801D0C70 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801CFA4C; -extern s16 D_801D0C70; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801CFA4C = D_801CFA4C + 1; - if (0x18 < D_801CFA4C) { - func_8012A4BC(); - D_801D0C70 = 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_801CFA4C; -extern void (*D_801CFA90)(void); -extern short D_801CFAD4; -extern short D_801CFAD6; -extern short D_801CFAD8; -extern s16 D_801D0C70; - -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_801CFA4C = D_801CFA4C + 1; - if (D_801CFA4C >= 0x19) { - if (D_801CFA90 != 0) { - (*D_801CFA90)(); - } else { - D_80114F30 = D_80114F30 + D_801CFAD4; - D_80114F34 = D_80114F34 + D_801CFAD6; - D_80114F38 = D_80114F38 + D_801CFAD8; - D_80114F24 = D_80114F24 + D_801CFAD4; - D_80114F28 = D_80114F28 + D_801CFAD6; - D_80114F2C = D_80114F2C + D_801CFAD8; - func_8012A4BC(); - } - D_801D0C70 = 0; - } -} - - - -extern void (*D_8018605C[])(void); - -void func_8017BE60(void *a0) { - D_8018605C[*(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) */ diff --git a/src/ov_SC07_000/ov_SC07_000_jr_8017AE2C.c b/src/ov_SC07_000/ov_SC07_000_jr_8017AE2C.c new file mode 100644 index 000000000..31c0df7c5 --- /dev/null +++ b/src/ov_SC07_000/ov_SC07_000_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80184BB4; +extern u8 D_80184B24; +extern u8 D_80184B00; +extern u8 D_80184ADC; +extern u8 D_80184B90; +extern u8 D_80184B6C; +extern u8 D_80184B48; +extern u8 D_80184AB8; +extern void func_80145934(void); +extern u8 D_80184C44; +extern u8 D_80184C20; +extern u8 D_80184BFC; +extern u8 D_80184BD8; +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_8018403C[]; +extern unsigned char D_8018406C[]; +extern unsigned char D_801840BC[]; +extern unsigned char D_801840EC[]; +extern unsigned char D_8018411C[]; +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(void); +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_8018416C[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_80184234[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_801842BC[]; +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_801842C4; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801CE948; +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_801CE94C; +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_801842F4; +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 void 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_8018439C[])(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_801843C0[])(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_801843B0; +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_801843D4[])(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_801843E0[]; +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_801843F0[])(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_80184408[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801843F8; +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_8018441C[])(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_80184438[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80184428; +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_8018444C[])(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_80184460[])(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_80184474; +extern void (*D_8018449C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018447C; +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_801844E8[])(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_801844EC[])(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(void *a0); +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_80184950[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80184960[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801CE980; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184988[])(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_80184968; +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_80184978; +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_801849C8[])(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_801849D0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018499C; +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_801849DC[])(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_801849AC; +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_801CE988; +extern s32 D_801CE994; +extern s32 D_801CE998; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80184A18[])(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_801849EC[]; +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_801CE990; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80184C68[])(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_80184A88[]; +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_80184D0C[])(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_80184E60[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80184C7C; +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_80184E68[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80184C8C; +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_80184CAC; +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_80184E70[])(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(void); +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_80184E98[])(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_80184EA4[])(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_80184D18[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80184F48; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018402C[]; +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_80184F5C[]; +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_80184F98[]; +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_80184FE0; +extern u16 D_80184FE2; +extern u16 D_80184FE4; +extern s32 D_80184FE8; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80184FF0; +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_80184CFC; +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_80185074[]; +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_80185124[])(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_80185154[]; +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_801851B8; +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_801CE9A0[]; +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_801851DC[])(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_801CE9F8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80185224[])(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_80185214; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801CE184[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_8018522C[])(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_80185280[])(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_80185248; +extern s16 D_8018527C; +extern s16 D_8018527A; +extern s16 D_80185278; +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_8018528C[])(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_801CEA58; +extern u8 D_801CEA59; +extern u8 D_801CEA5A; +extern u8 D_801CEA5B; +extern u8 D_801CEA5C; +extern u8 D_801CEA5D; +extern u8 D_801CEA5E; +extern u8 D_801CEA5F; +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_8018529C[])(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_801CEA98; +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_801852E0[])(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_8018535C[]; +extern s32 D_8018537C[]; +extern u8 D_801853F8[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80185418[]; +extern u8 D_80185438[]; +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_801854D4[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80185550[])(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_801CE194; +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_8018555C[])(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_80185564[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_8018562C[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018563C[])(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_8018564C[])(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_80185658[])(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_801855B8[]; +extern u8 D_801855CC[]; +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_80185670[])(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_80185678[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80185680[])(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_80185688[])(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_80185690[])(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_80185698[])(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_801856A0[])(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_80185754[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018575C[])(void); +extern void func_80169F00(void *a0); +extern char D_8018570C[]; +extern char D_801856CC[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80185794[])(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_801857A0[])(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_801857E8[])(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_80185864[])(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_801CEDB8; +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_80185858[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018589C[]; +extern unsigned short D_801858A4[]; +extern unsigned short D_801858AC[]; +extern unsigned char D_801CEDC0[]; +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_801CEDB8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_801858B4[])(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_801CEEF4; +extern M2C_UNK D_801CEEF8; +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_801CEE80; +extern void (*D_801858E4[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801CEEFC[]; +extern u8 D_801CEF04[]; +extern u8 D_801CEEB4[]; +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_801858EC[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80185908[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80185910[])(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_80185978[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018591C; +extern u8 D_80185928; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801859AC[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801859B4[])(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_80185A08[])(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_80185A3C[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80185A2C[]; +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_80185A58; +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); +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_80185AD0[])(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_80185AD8[])(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_80185AE0[])(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_80185AE8[])(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_80185AF0[])(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_80185AF8[])(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_80185B04[])(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_80185B10[])(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_80185B1C[])(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_80185B2C[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80185B3C[])(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_80185B44[])(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_80185B4C[])(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_80185B54[])(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_80185B5C[])(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_80185B64[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80185B6C[])(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_80185B74[])(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_80185B7C[])(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_80185B84[])(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_80185B8C[])(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_80185B94[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80185B9C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80185BA4[])(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_80185BAC[])(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_80185BB4[])(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_80185BBC[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80185BC4[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80185BCC[])(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_80185BD4[])(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_80185BDC[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80185BE4[])(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_80185BEC[])(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_80185C30[])(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_80185BF4; +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_80185C60[])(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_80185C9C[])(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(s32); +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_80185CF4[])(); +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_80185D04[])(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_80185D0C[])(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_80185E74[])(); +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_80185E80[])(); +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_801CE3DC; +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 int func_801789AC(void); +extern s16 D_801D0C70; +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_801CF638; +extern short D_801D0CE4; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801CFA64; +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_801CFA8C; +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_801CFA48; +extern s32 func_8017A3B0(void); +extern short D_801CFA84; +extern short D_801CFA80; +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_801D0C40; +extern s16 D_801D0C42; +extern s16 D_801D0C4C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801D0C40; + + 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_801D0C4C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801D0C40+0xC == &D_801D0C4C; 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_801D0C40 + 0xC)) < 0x101) { + D_801D0C40 = 0; + D_801D0C42 = 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_801D0C4C); + 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_801D0C40 + 0xC)) < 0x101) { + D_801D0C40 = 0; + D_801D0C42 = 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_801CFAC4; + extern s16 D_801CFAC6; + extern s16 D_801CFAC8; + extern s16 D_801CFABC; + extern s16 D_801CFABE; + extern s16 D_801CFAC0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801CFAC4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801CFAC6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801CFAC8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801CFABC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801CFABE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801CFAC0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801CFA4C; +extern u16 D_801CFACC; +extern u16 D_801CFACE; +extern u16 D_801CFAD0; +extern s16 D_801D0C70; + +void func_8017B1D8(void) { + func_8012A418(); + D_801D0C70 = 0; + D_801CFA4C = 0; + D_801CFACC = D_80126B5E; + D_801CFACE = D_80126B62; + D_801CFAD0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80185FBC[]; + extern s16 D_801CFAC4; + extern s16 D_801CFABC; + 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_80185FBC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80185FBC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801CFAC4; + s16 *p78C = &D_801CFABC; + *(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_801D0C70 = 1; + D_801CFA4C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801CFA6C; + extern SV4_8017B368 D_801CFA74; + extern s16 D_801CFAC4; + extern s16 D_801CFABC; + extern u16 D_80185FBC; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801CFA6C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801CFA74; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80185FBC)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80185FBC)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801CFAC4) = loc0; + (*(SV4_8017B368 *)&D_801CFABC) = loc1; + D_801D0C70 = 1; + D_801CFA4C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80185FBC[]; + extern s16 D_801CFAC4; + extern s16 D_801CFAC6; + extern s16 D_801CFAC8; + extern s16 D_801CFABC; + extern s16 D_801CFABE; + extern s16 D_801CFAC0; + 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_80185FBC[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80185FBC[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801CFAC4; + s16 *p78C = &D_801CFABC; + *(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_801CFAC6; + v798 = D_801CFAC8; + v78C = *p78C; + v78E = D_801CFABE; + v790 = D_801CFAC0; + __asm__ __volatile__(""); + D_801D0C70 = 1; + D_801CFA4C = 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_801CFA4C; +extern s16 D_801CFAC4; +extern s16 D_801CFAC6; +extern s16 D_801CFAC8; +extern s16 D_801CFABC; +extern s16 D_801CFABE; +extern s16 D_801CFAC0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801CFA4C = 0; + D_801CFAC4 = (s16) D_80114F30; + D_801CFAC6 = (s16) D_80114F34; + D_801CFAC8 = (s16) D_80114F38; + D_801CFABC = (s16) D_80114F24; + D_801CFABE = (s16) D_80114F28; + D_801CFAC0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801CFADC; +extern s16 D_801CFADE; +extern s16 D_801CFAE0; +extern s16 D_801CFAE4; +extern s16 D_801CFAE6; +extern s16 D_801CFAE8; + +void func_8017B824(void) { + D_801CFADC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801CFADE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801CFAE0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801CFAE4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801CFAE6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801CFAE8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801CFADC; +extern s16 D_801CFADE; +extern s16 D_801CFAE0; +extern s16 D_801CFAE4; +extern s16 D_801CFAE6; +extern s16 D_801CFAE8; + +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_801CFADC; + D_80114F34 = D_801CFADE; + D_80114F38 = D_801CFAE0; + D_80114F24 = D_801CFAE4; + D_80114F28 = D_801CFAE6; + D_80114F2C = D_801CFAE8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801CFAC4), src[8..15] -> (*(S8_8017B8E8 *)&D_801CFABC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801CFAC4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801CFABC) = ((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_801CFACC; +extern u16 D_801CFACE; +extern u16 D_801CFAD0; + +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_801CFA4C; +extern short D_801CFAD4; +extern short D_801CFAD6; +extern short D_801CFAD8; +extern s16 D_801CFAC4; +extern s16 D_801CFAC6; +extern s16 D_801CFAC8; +extern s16 D_801CFABC; +extern s16 D_801CFABE; +extern s16 D_801CFAC0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801CFACC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801CFACE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801CFAD0); + (*(s16 *)&D_801CFAD4) = buf[0]; + (*(s16 *)&D_801CFAD6) = buf[1]; + (*(s16 *)&D_801CFAD8) = buf[2]; + D_801CFAC4 = D_80114F30 + buf[0]; + D_801CFA4C = 0; + D_801CFAC6 = D_80114F34 + buf[1]; + D_801CFAC8 = D_80114F38 + buf[2]; + D_801CFABC = D_80114F24 + buf[0]; + D_801CFABE = D_80114F28 + buf[1]; + D_801CFAC0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801CFA6C; +extern SV4 D_801CFA74; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801CFA74) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801CFA6C = 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_801CFA74 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801CFA74)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801CFA6C) = 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_801CFA74) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801CFA94[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801CFA94; + 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_801CFA4C; +extern s16 D_801D0C70; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801CFA4C = D_801CFA4C + 1; + if (D_801CFA4C >= 0x1F) { + D_801D0C70 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801CFA4C; +extern s16 D_801D0C70; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801CFA4C = D_801CFA4C + 1; + if (0x18 < D_801CFA4C) { + func_8012A4BC(); + D_801D0C70 = 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_801CFA4C; +extern void (*D_801CFA90)(void); +extern short D_801CFAD4; +extern short D_801CFAD6; +extern short D_801CFAD8; +extern s16 D_801D0C70; + +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_801CFA4C = D_801CFA4C + 1; + if (D_801CFA4C >= 0x19) { + if (D_801CFA90 != 0) { + (*D_801CFA90)(); + } else { + D_80114F30 = D_80114F30 + D_801CFAD4; + D_80114F34 = D_80114F34 + D_801CFAD6; + D_80114F38 = D_80114F38 + D_801CFAD8; + D_80114F24 = D_80114F24 + D_801CFAD4; + D_80114F28 = D_80114F28 + D_801CFAD6; + D_80114F2C = D_80114F2C + D_801CFAD8; + func_8012A4BC(); + } + D_801D0C70 = 0; + } +} + + + +extern void (*D_8018605C[])(void); + +void func_8017BE60(void *a0) { + D_8018605C[*(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) */ + diff --git a/src/ov_SC07_001/ov_SC07_001_jr_8017A4AC.c b/src/ov_SC07_001/ov_SC07_001_jr_8017A4AC.c index 78db0a746..4e5d9b8f3 100644 --- a/src/ov_SC07_001/ov_SC07_001_jr_8017A4AC.c +++ b/src/ov_SC07_001/ov_SC07_001_jr_8017A4AC.c @@ -2946,572 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801AAB74; - extern s16 D_801AAB76; - extern s16 D_801AAB78; - extern s16 D_801AAB6C; - extern s16 D_801AAB6E; - extern s16 D_801AAB70; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801AAB74, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801AAB76, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801AAB78, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801AAB6C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801AAB6E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801AAB70, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801AAAFC; -extern u16 D_801AAB7C; -extern u16 D_801AAB7E; -extern u16 D_801AAB80; -extern s16 D_801AAE98; - -void func_8017B1D8(void) { - func_8012A418(); - D_801AAE98 = 0; - D_801AAAFC = 0; - D_801AAB7C = D_80126B5E; - D_801AAB7E = D_80126B62; - D_801AAB80 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80184E6C[]; - extern s16 D_801AAB74; - extern s16 D_801AAB6C; - 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_80184E6C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80184E6C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801AAB74; - s16 *p78C = &D_801AAB6C; - *(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_801AAE98 = 1; - D_801AAAFC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801AAB1C; - extern SV4_8017B368 D_801AAB24; - extern s16 D_801AAB74; - extern s16 D_801AAB6C; - extern u16 D_80184E6C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801AAB1C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801AAB24; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80184E6C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80184E6C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801AAB74) = loc0; - (*(SV4_8017B368 *)&D_801AAB6C) = loc1; - D_801AAE98 = 1; - D_801AAAFC = 0; -} - - - -INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80184E6C[]; - extern s16 D_801AAB74; - extern s16 D_801AAB76; - extern s16 D_801AAB78; - extern s16 D_801AAB6C; - extern s16 D_801AAB6E; - extern s16 D_801AAB70; - 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_80184E6C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80184E6C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801AAB74; - s16 *p78C = &D_801AAB6C; - *(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_801AAB76; - v798 = D_801AAB78; - v78C = *p78C; - v78E = D_801AAB6E; - v790 = D_801AAB70; - __asm__ __volatile__(""); - D_801AAE98 = 1; - D_801AAAFC = 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_801AAAFC; -extern s16 D_801AAB74; -extern s16 D_801AAB76; -extern s16 D_801AAB78; -extern s16 D_801AAB6C; -extern s16 D_801AAB6E; -extern s16 D_801AAB70; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801AAAFC = 0; - D_801AAB74 = (s16) D_80114F30; - D_801AAB76 = (s16) D_80114F34; - D_801AAB78 = (s16) D_80114F38; - D_801AAB6C = (s16) D_80114F24; - D_801AAB6E = (s16) D_80114F28; - D_801AAB70 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801AAB8C; -extern s16 D_801AAB8E; -extern s16 D_801AAB90; -extern s16 D_801AAB94; -extern s16 D_801AAB96; -extern s16 D_801AAB98; - -void func_8017B824(void) { - D_801AAB8C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801AAB8E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801AAB90 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801AAB94 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801AAB96 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801AAB98 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801AAB8C; -extern s16 D_801AAB8E; -extern s16 D_801AAB90; -extern s16 D_801AAB94; -extern s16 D_801AAB96; -extern s16 D_801AAB98; - -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_801AAB8C; - D_80114F34 = D_801AAB8E; - D_80114F38 = D_801AAB90; - D_80114F24 = D_801AAB94; - D_80114F28 = D_801AAB96; - D_80114F2C = D_801AAB98; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801AAB74), src[8..15] -> (*(S8_8017B8E8 *)&D_801AAB6C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801AAB74) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801AAB6C) = ((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_801AAB7C; -extern u16 D_801AAB7E; -extern u16 D_801AAB80; - -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_801AAAFC; -extern short D_801AAB84; -extern short D_801AAB86; -extern short D_801AAB88; -extern s16 D_801AAB74; -extern s16 D_801AAB76; -extern s16 D_801AAB78; -extern s16 D_801AAB6C; -extern s16 D_801AAB6E; -extern s16 D_801AAB70; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801AAB7C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801AAB7E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801AAB80); - (*(s16 *)&D_801AAB84) = buf[0]; - (*(s16 *)&D_801AAB86) = buf[1]; - (*(s16 *)&D_801AAB88) = buf[2]; - D_801AAB74 = D_80114F30 + buf[0]; - D_801AAAFC = 0; - D_801AAB76 = D_80114F34 + buf[1]; - D_801AAB78 = D_80114F38 + buf[2]; - D_801AAB6C = D_80114F24 + buf[0]; - D_801AAB6E = D_80114F28 + buf[1]; - D_801AAB70 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801AAB1C; -extern SV4 D_801AAB24; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801AAB24) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801AAB1C = 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_801AAB24 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801AAB24)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801AAB1C) = 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_801AAB24) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801AAB44[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801AAB44; - 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_801AAAFC; -extern s16 D_801AAE98; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801AAAFC = D_801AAAFC + 1; - if (D_801AAAFC >= 0x1F) { - D_801AAE98 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801AAAFC; -extern s16 D_801AAE98; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801AAAFC = D_801AAAFC + 1; - if (0x18 < D_801AAAFC) { - func_8012A4BC(); - D_801AAE98 = 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_801AAAFC; -extern void (*D_801AAB40)(void); -extern short D_801AAB84; -extern short D_801AAB86; -extern short D_801AAB88; -extern s16 D_801AAE98; - -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_801AAAFC = D_801AAAFC + 1; - if (D_801AAAFC >= 0x19) { - if (D_801AAB40 != 0) { - (*D_801AAB40)(); - } else { - D_80114F30 = D_80114F30 + D_801AAB84; - D_80114F34 = D_80114F34 + D_801AAB86; - D_80114F38 = D_80114F38 + D_801AAB88; - D_80114F24 = D_80114F24 + D_801AAB84; - D_80114F28 = D_80114F28 + D_801AAB86; - D_80114F2C = D_80114F2C + D_801AAB88; - func_8012A4BC(); - } - D_801AAE98 = 0; - } -} - - - -extern void (*D_80184F0C[])(void); - -void func_8017BE60(void *a0) { - D_80184F0C[*(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) */ diff --git a/src/ov_SC07_001/ov_SC07_001_jr_8017AE2C.c b/src/ov_SC07_001/ov_SC07_001_jr_8017AE2C.c new file mode 100644 index 000000000..68148586b --- /dev/null +++ b/src/ov_SC07_001/ov_SC07_001_jr_8017AE2C.c @@ -0,0 +1,3449 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80183A64; +extern u8 D_801839D4; +extern u8 D_801839B0; +extern u8 D_8018398C; +extern u8 D_80183A40; +extern u8 D_80183A1C; +extern u8 D_801839F8; +extern u8 D_80183968; +extern void func_80145934(void); +extern u8 D_80183AF4; +extern u8 D_80183AD0; +extern u8 D_80183AAC; +extern u8 D_80183A88; +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_80182EEC[]; +extern unsigned char D_80182F1C[]; +extern unsigned char D_80182F6C[]; +extern unsigned char D_80182F9C[]; +extern unsigned char D_80182FCC[]; +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(void); +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_8018301C[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_801830E4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8018316C[]; +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_80183174; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801A99F8; +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_801A99FC; +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_801831A4; +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 void 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_8018324C[])(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_80183270[])(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_80183260; +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_80183284[])(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_80183290[]; +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_801832A0[])(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_801832B8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801832A8; +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_801832CC[])(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_801832E8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801832D8; +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_801832FC[])(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_80183310[])(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_80183324; +extern void (*D_8018334C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018332C; +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_80183398[])(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_8018339C[])(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(void *a0); +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_80183800[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80183810[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801A9A30; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80183838[])(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_80183818; +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_80183828; +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_80183878[])(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_80183880[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018384C; +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_8018388C[])(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_8018385C; +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_801A9A38; +extern s32 D_801A9A44; +extern s32 D_801A9A48; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801838C8[])(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_8018389C[]; +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_801A9A40; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80183B18[])(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_80183938[]; +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_80183BBC[])(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_80183D10[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80183B2C; +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_80183D18[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80183B3C; +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_80183B5C; +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_80183D20[])(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(void); +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_80183D48[])(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_80183D54[])(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_80183BC8[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80183DF8; +extern void func_8015D380(s32 a0); +extern unsigned char D_80182EDC[]; +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_80183E0C[]; +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_80183E48[]; +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_80183E90; +extern u16 D_80183E92; +extern u16 D_80183E94; +extern s32 D_80183E98; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80183EA0; +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_80183BAC; +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_80183F24[]; +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_80183FD4[])(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_80184004[]; +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_80184068; +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_801A9A50[]; +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_8018408C[])(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_801A9AA8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_801840D4[])(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_801840C4; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801A9320[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_801840DC[])(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_80184130[])(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_801840F8; +extern s16 D_8018412C; +extern s16 D_8018412A; +extern s16 D_80184128; +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_8018413C[])(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_801A9B08; +extern u8 D_801A9B09; +extern u8 D_801A9B0A; +extern u8 D_801A9B0B; +extern u8 D_801A9B0C; +extern u8 D_801A9B0D; +extern u8 D_801A9B0E; +extern u8 D_801A9B0F; +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_8018414C[])(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_801A9B48; +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_80184190[])(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_8018420C[]; +extern s32 D_8018422C[]; +extern u8 D_801842A8[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801842C8[]; +extern u8 D_801842E8[]; +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_80184384[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80184400[])(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_801A9330; +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_8018440C[])(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_80184414[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801844DC[])(void); +extern void func_80166618(void *a0); +extern void (*D_801844EC[])(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_801844FC[])(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_80184508[])(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_80184468[]; +extern u8 D_8018447C[]; +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_80184520[])(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_80184528[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80184530[])(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_80184538[])(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_80184540[])(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_80184548[])(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_80184550[])(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_80184604[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018460C[])(void); +extern void func_80169F00(void *a0); +extern char D_801845BC[]; +extern char D_8018457C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80184644[])(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_80184650[])(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_80184698[])(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_80184714[])(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_801A9E68; +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_80184708[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018474C[]; +extern unsigned short D_80184754[]; +extern unsigned short D_8018475C[]; +extern unsigned char D_801A9E70[]; +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_801A9E68; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80184764[])(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_801A9FA4; +extern M2C_UNK D_801A9FA8; +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_801A9F30; +extern void (*D_80184794[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801A9FAC[]; +extern u8 D_801A9FB4[]; +extern u8 D_801A9F64[]; +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_8018479C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801847B8[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801847C0[])(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_80184828[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801847CC; +extern u8 D_801847D8; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018485C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80184864[])(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_801848B8[])(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_801848EC[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801848DC[]; +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_80184908; +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); +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_80184980[])(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_80184988[])(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_80184990[])(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_80184998[])(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_801849A0[])(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_801849A8[])(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_801849B4[])(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_801849C0[])(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_801849CC[])(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_801849DC[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801849EC[])(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_801849F4[])(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_801849FC[])(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_80184A04[])(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_80184A0C[])(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_80184A14[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80184A1C[])(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_80184A24[])(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_80184A2C[])(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_80184A34[])(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_80184A3C[])(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_80184A44[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80184A4C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80184A54[])(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_80184A5C[])(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_80184A64[])(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_80184A6C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80184A74[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80184A7C[])(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_80184A84[])(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_80184A8C[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80184A94[])(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_80184A9C[])(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_80184AE0[])(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_80184AA4; +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_80184B10[])(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_80184B4C[])(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(s32); +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_80184BA4[])(); +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_80184BB4[])(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_80184BBC[])(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_80184D24[])(); +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_80184D30[])(); +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_801A9578; +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 int func_801789AC(void); +extern s16 D_801AAE98; +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_801AA6E8; +extern short D_801AAF0C; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801AAB14; +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_801AAB3C; +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_801AAAF8; +extern s32 func_8017A3B0(void); +extern short D_801AAB34; +extern short D_801AAB30; +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_801AAE68; +extern s16 D_801AAE6A; +extern s16 D_801AAE74; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801AAE68; + + 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_801AAE74); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801AAE68+0xC == &D_801AAE74; 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_801AAE68 + 0xC)) < 0x101) { + D_801AAE68 = 0; + D_801AAE6A = 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_801AAE74); + 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_801AAE68 + 0xC)) < 0x101) { + D_801AAE68 = 0; + D_801AAE6A = 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_801AAB74; + extern s16 D_801AAB76; + extern s16 D_801AAB78; + extern s16 D_801AAB6C; + extern s16 D_801AAB6E; + extern s16 D_801AAB70; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801AAB74, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801AAB76, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801AAB78, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801AAB6C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801AAB6E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801AAB70, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801AAAFC; +extern u16 D_801AAB7C; +extern u16 D_801AAB7E; +extern u16 D_801AAB80; +extern s16 D_801AAE98; + +void func_8017B1D8(void) { + func_8012A418(); + D_801AAE98 = 0; + D_801AAAFC = 0; + D_801AAB7C = D_80126B5E; + D_801AAB7E = D_80126B62; + D_801AAB80 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80184E6C[]; + extern s16 D_801AAB74; + extern s16 D_801AAB6C; + 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_80184E6C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80184E6C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801AAB74; + s16 *p78C = &D_801AAB6C; + *(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_801AAE98 = 1; + D_801AAAFC = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801AAB1C; + extern SV4_8017B368 D_801AAB24; + extern s16 D_801AAB74; + extern s16 D_801AAB6C; + extern u16 D_80184E6C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801AAB1C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801AAB24; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80184E6C)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80184E6C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801AAB74) = loc0; + (*(SV4_8017B368 *)&D_801AAB6C) = loc1; + D_801AAE98 = 1; + D_801AAAFC = 0; +} + + + +INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80184E6C[]; + extern s16 D_801AAB74; + extern s16 D_801AAB76; + extern s16 D_801AAB78; + extern s16 D_801AAB6C; + extern s16 D_801AAB6E; + extern s16 D_801AAB70; + 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_80184E6C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80184E6C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801AAB74; + s16 *p78C = &D_801AAB6C; + *(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_801AAB76; + v798 = D_801AAB78; + v78C = *p78C; + v78E = D_801AAB6E; + v790 = D_801AAB70; + __asm__ __volatile__(""); + D_801AAE98 = 1; + D_801AAAFC = 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_801AAAFC; +extern s16 D_801AAB74; +extern s16 D_801AAB76; +extern s16 D_801AAB78; +extern s16 D_801AAB6C; +extern s16 D_801AAB6E; +extern s16 D_801AAB70; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801AAAFC = 0; + D_801AAB74 = (s16) D_80114F30; + D_801AAB76 = (s16) D_80114F34; + D_801AAB78 = (s16) D_80114F38; + D_801AAB6C = (s16) D_80114F24; + D_801AAB6E = (s16) D_80114F28; + D_801AAB70 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801AAB8C; +extern s16 D_801AAB8E; +extern s16 D_801AAB90; +extern s16 D_801AAB94; +extern s16 D_801AAB96; +extern s16 D_801AAB98; + +void func_8017B824(void) { + D_801AAB8C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801AAB8E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801AAB90 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801AAB94 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801AAB96 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801AAB98 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801AAB8C; +extern s16 D_801AAB8E; +extern s16 D_801AAB90; +extern s16 D_801AAB94; +extern s16 D_801AAB96; +extern s16 D_801AAB98; + +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_801AAB8C; + D_80114F34 = D_801AAB8E; + D_80114F38 = D_801AAB90; + D_80114F24 = D_801AAB94; + D_80114F28 = D_801AAB96; + D_80114F2C = D_801AAB98; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801AAB74), src[8..15] -> (*(S8_8017B8E8 *)&D_801AAB6C) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801AAB74) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801AAB6C) = ((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_801AAB7C; +extern u16 D_801AAB7E; +extern u16 D_801AAB80; + +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_801AAAFC; +extern short D_801AAB84; +extern short D_801AAB86; +extern short D_801AAB88; +extern s16 D_801AAB74; +extern s16 D_801AAB76; +extern s16 D_801AAB78; +extern s16 D_801AAB6C; +extern s16 D_801AAB6E; +extern s16 D_801AAB70; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801AAB7C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801AAB7E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801AAB80); + (*(s16 *)&D_801AAB84) = buf[0]; + (*(s16 *)&D_801AAB86) = buf[1]; + (*(s16 *)&D_801AAB88) = buf[2]; + D_801AAB74 = D_80114F30 + buf[0]; + D_801AAAFC = 0; + D_801AAB76 = D_80114F34 + buf[1]; + D_801AAB78 = D_80114F38 + buf[2]; + D_801AAB6C = D_80114F24 + buf[0]; + D_801AAB6E = D_80114F28 + buf[1]; + D_801AAB70 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801AAB1C; +extern SV4 D_801AAB24; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801AAB24) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801AAB1C = 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_801AAB24 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801AAB24)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801AAB1C) = 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_801AAB24) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801AAB44[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801AAB44; + 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_801AAAFC; +extern s16 D_801AAE98; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801AAAFC = D_801AAAFC + 1; + if (D_801AAAFC >= 0x1F) { + D_801AAE98 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801AAAFC; +extern s16 D_801AAE98; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801AAAFC = D_801AAAFC + 1; + if (0x18 < D_801AAAFC) { + func_8012A4BC(); + D_801AAE98 = 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_801AAAFC; +extern void (*D_801AAB40)(void); +extern short D_801AAB84; +extern short D_801AAB86; +extern short D_801AAB88; +extern s16 D_801AAE98; + +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_801AAAFC = D_801AAAFC + 1; + if (D_801AAAFC >= 0x19) { + if (D_801AAB40 != 0) { + (*D_801AAB40)(); + } else { + D_80114F30 = D_80114F30 + D_801AAB84; + D_80114F34 = D_80114F34 + D_801AAB86; + D_80114F38 = D_80114F38 + D_801AAB88; + D_80114F24 = D_80114F24 + D_801AAB84; + D_80114F28 = D_80114F28 + D_801AAB86; + D_80114F2C = D_80114F2C + D_801AAB88; + func_8012A4BC(); + } + D_801AAE98 = 0; + } +} + + + +extern void (*D_80184F0C[])(void); + +void func_8017BE60(void *a0) { + D_80184F0C[*(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) */ + diff --git a/src/ov_SC07_002/ov_SC07_002_jr_8017A4AC.c b/src/ov_SC07_002/ov_SC07_002_jr_8017A4AC.c index f51b71216..719c816cf 100644 --- a/src/ov_SC07_002/ov_SC07_002_jr_8017A4AC.c +++ b/src/ov_SC07_002/ov_SC07_002_jr_8017A4AC.c @@ -2946,604 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_8019B6C4; - extern s16 D_8019B6C6; - extern s16 D_8019B6C8; - extern s16 D_8019B6BC; - extern s16 D_8019B6BE; - extern s16 D_8019B6C0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019B6C4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019B6C6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019B6C8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019B6BC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019B6BE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019B6C0, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_8019B64C; -extern u16 D_8019B6CC; -extern u16 D_8019B6CE; -extern u16 D_8019B6D0; -extern s16 D_801A0060; - -void func_8017B1D8(void) { - func_8012A418(); - D_801A0060 = 0; - D_8019B64C = 0; - D_8019B6CC = D_80126B5E; - D_8019B6CE = D_80126B62; - D_8019B6D0 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_8018A128[]; - extern s16 D_8019B6C4; - extern s16 D_8019B6BC; - 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_8018A128[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018A128[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019B6C4; - s16 *p78C = &D_8019B6BC; - *(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_801A0060 = 1; - D_8019B64C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019B66C; - extern SV4_8017B368 D_8019B674; - extern s16 D_8019B6C4; - extern s16 D_8019B6BC; - extern u16 D_8018A128; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8019B66C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8019B674; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018A128)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018A128)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_8019B6C4) = loc0; - (*(SV4_8017B368 *)&D_8019B6BC) = loc1; - D_801A0060 = 1; - D_8019B64C = 0; -} - - - -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_8018A128[]; - extern s16 D_8019B6C4; - extern s16 D_8019B6C6; - extern s16 D_8019B6C8; - extern s16 D_8019B6BC; - extern s16 D_8019B6BE; - extern s16 D_8019B6C0; - 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_8018A128[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018A128[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_8019B6C4; - s16 *p78C = &D_8019B6BC; - *(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_8019B6C6; - v798 = D_8019B6C8; - v78C = *p78C; - v78E = D_8019B6BE; - v790 = D_8019B6C0; - __asm__ __volatile__(""); - D_801A0060 = 1; - D_8019B64C = 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_8019B64C; -extern s16 D_8019B6C4; -extern s16 D_8019B6C6; -extern s16 D_8019B6C8; -extern s16 D_8019B6BC; -extern s16 D_8019B6BE; -extern s16 D_8019B6C0; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_8019B64C = 0; - D_8019B6C4 = (s16) D_80114F30; - D_8019B6C6 = (s16) D_80114F34; - D_8019B6C8 = (s16) D_80114F38; - D_8019B6BC = (s16) D_80114F24; - D_8019B6BE = (s16) D_80114F28; - D_8019B6C0 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_8019B6DC; -extern s16 D_8019B6DE; -extern s16 D_8019B6E0; -extern s16 D_8019B6E4; -extern s16 D_8019B6E6; -extern s16 D_8019B6E8; - -void func_8017B824(void) { - D_8019B6DC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8019B6DE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_8019B6E0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_8019B6E4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_8019B6E6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_8019B6E8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_8019B6DC; -extern s16 D_8019B6DE; -extern s16 D_8019B6E0; -extern s16 D_8019B6E4; -extern s16 D_8019B6E6; -extern s16 D_8019B6E8; - -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_8019B6DC; - D_80114F34 = D_8019B6DE; - D_80114F38 = D_8019B6E0; - D_80114F24 = D_8019B6E4; - D_80114F28 = D_8019B6E6; - D_80114F2C = D_8019B6E8; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_8019B6C4), src[8..15] -> (*(S8_8017B8E8 *)&D_8019B6BC) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_8019B6C4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8019B6BC) = ((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_8019B6CC; -extern u16 D_8019B6CE; -extern u16 D_8019B6D0; - -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_8019B64C; -extern short D_8019B6D4; -extern short D_8019B6D6; -extern short D_8019B6D8; -extern s16 D_8019B6C4; -extern s16 D_8019B6C6; -extern s16 D_8019B6C8; -extern s16 D_8019B6BC; -extern s16 D_8019B6BE; -extern s16 D_8019B6C0; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019B6CC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019B6CE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019B6D0); - (*(s16 *)&D_8019B6D4) = buf[0]; - (*(s16 *)&D_8019B6D6) = buf[1]; - (*(s16 *)&D_8019B6D8) = buf[2]; - D_8019B6C4 = D_80114F30 + buf[0]; - D_8019B64C = 0; - D_8019B6C6 = D_80114F34 + buf[1]; - D_8019B6C8 = D_80114F38 + buf[2]; - D_8019B6BC = D_80114F24 + buf[0]; - D_8019B6BE = D_80114F28 + buf[1]; - D_8019B6C0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_8019B66C; -extern SV4 D_8019B674; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019B674) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_8019B66C = 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_8019B674 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019B674)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8019B66C) = 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_8019B674) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8019B694[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8019B694; - 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_8019B64C; -extern s16 D_801A0060; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_8019B64C = D_8019B64C + 1; - if (D_8019B64C >= 0x1F) { - D_801A0060 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_8019B64C; -extern s16 D_801A0060; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_8019B64C = D_8019B64C + 1; - if (0x18 < D_8019B64C) { - func_8012A4BC(); - D_801A0060 = 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_8019B64C; -extern void (*D_8019B690)(void); -extern short D_8019B6D4; -extern short D_8019B6D6; -extern short D_8019B6D8; -extern s16 D_801A0060; - -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_8019B64C = D_8019B64C + 1; - if (D_8019B64C >= 0x19) { - if (D_8019B690 != 0) { - (*D_8019B690)(); - } else { - D_80114F30 = D_80114F30 + D_8019B6D4; - D_80114F34 = D_80114F34 + D_8019B6D6; - D_80114F38 = D_80114F38 + D_8019B6D8; - D_80114F24 = D_80114F24 + D_8019B6D4; - D_80114F28 = D_80114F28 + D_8019B6D6; - D_80114F2C = D_80114F2C + D_8019B6D8; - func_8012A4BC(); - } - D_801A0060 = 0; - } -} - - - -extern void (*D_8018A1C8[])(void); - -void func_8017BE60(void *a0) { - D_8018A1C8[*(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) */ - -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017A4AC", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017A4AC", func_8017BEE0); - - - -extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); - void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3) { - ((void (*)(void *, void *, s32, s32))func_8017BF34)(a0, a1, (s16)a2, (s16)a3); - } - - -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017A4AC", func_8017BF34); - -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017A4AC", func_8017BFBC); - -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017A4AC", func_8017C010); - -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017A4AC", func_8017C068); - - -extern void (*D_8018A228[])(void); - -void func_8017C114(void *a0) { - D_8018A228[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017A4AC", func_8017C150); - -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017A4AC", func_8017C43C); diff --git a/src/ov_SC07_002/ov_SC07_002_jr_8017AE2C.c b/src/ov_SC07_002/ov_SC07_002_jr_8017AE2C.c new file mode 100644 index 000000000..b814d61e0 --- /dev/null +++ b/src/ov_SC07_002/ov_SC07_002_jr_8017AE2C.c @@ -0,0 +1,3481 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_80188D20; +extern u8 D_80188C90; +extern u8 D_80188C6C; +extern u8 D_80188C48; +extern u8 D_80188CFC; +extern u8 D_80188CD8; +extern u8 D_80188CB4; +extern u8 D_80188C24; +extern void func_80145934(void); +extern u8 D_80188DB0; +extern u8 D_80188D8C; +extern u8 D_80188D68; +extern u8 D_80188D44; +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_801881A8[]; +extern unsigned char D_801881D8[]; +extern unsigned char D_80188228[]; +extern unsigned char D_80188258[]; +extern unsigned char D_80188288[]; +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(void); +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_801882D8[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_801883A0[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_80188428[]; +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_80188430; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_8019A548; +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_8019A54C; +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_80188460; +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 void 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_80188508[])(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_8018852C[])(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_8018851C; +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_80188540[])(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_8018854C[]; +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_8018855C[])(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_80188574[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80188564; +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_80188588[])(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_801885A4[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80188594; +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_801885B8[])(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_801885CC[])(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_801885E0; +extern void (*D_80188608[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801885E8; +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_80188654[])(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_80188658[])(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(void *a0); +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_80188ABC[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80188ACC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_8019A580; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80188AF4[])(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_80188AD4; +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_80188AE4; +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_80188B34[])(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_80188B3C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80188B08; +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_80188B48[])(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_80188B18; +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_8019A588; +extern s32 D_8019A594; +extern s32 D_8019A598; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80188B84[])(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_80188B58[]; +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_8019A590; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80188DD4[])(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_80188BF4[]; +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_80188E78[])(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_80188FCC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80188DE8; +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_80188FD4[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80188DF8; +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_80188E18; +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_80188FDC[])(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(void); +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_80189004[])(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_80189010[])(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_80188E84[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801890B4; +extern void func_8015D380(s32 a0); +extern unsigned char D_80188198[]; +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_801890C8[]; +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_80189104[]; +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_8018914C; +extern u16 D_8018914E; +extern u16 D_80189150; +extern s32 D_80189154; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018915C; +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_80188E68; +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_801891E0[]; +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_80189290[])(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_801892C0[]; +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_80189324; +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_8019A5A0[]; +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_80189348[])(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_8019A5F8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80189390[])(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_80189380; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_80199D08[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_80189398[])(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_801893EC[])(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_801893B4; +extern s16 D_801893E8; +extern s16 D_801893E6; +extern s16 D_801893E4; +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_801893F8[])(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_8019A658; +extern u8 D_8019A659; +extern u8 D_8019A65A; +extern u8 D_8019A65B; +extern u8 D_8019A65C; +extern u8 D_8019A65D; +extern u8 D_8019A65E; +extern u8 D_8019A65F; +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_80189408[])(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_8019A698; +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_8018944C[])(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_801894C8[]; +extern s32 D_801894E8[]; +extern u8 D_80189564[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80189584[]; +extern u8 D_801895A4[]; +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_80189640[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801896BC[])(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_80199D18; +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_801896C8[])(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_801896D0[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80189798[])(void); +extern void func_80166618(void *a0); +extern void (*D_801897A8[])(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_801897B8[])(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_801897C4[])(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_80189724[]; +extern u8 D_80189738[]; +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_801897DC[])(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_801897E4[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_801897EC[])(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_801897F4[])(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_801897FC[])(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_80189804[])(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_8018980C[])(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_801898C0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801898C8[])(void); +extern void func_80169F00(void *a0); +extern char D_80189878[]; +extern char D_80189838[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80189900[])(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_8018990C[])(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_80189954[])(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_801899D0[])(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_8019A9B8; +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_801899C4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80189A08[]; +extern unsigned short D_80189A10[]; +extern unsigned short D_80189A18[]; +extern unsigned char D_8019A9C0[]; +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_8019A9B8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80189A20[])(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_8019AAF4; +extern M2C_UNK D_8019AAF8; +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_8019AA80; +extern void (*D_80189A50[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8019AAFC[]; +extern u8 D_8019AB04[]; +extern u8 D_8019AAB4[]; +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_80189A58[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80189A74[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80189A7C[])(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_80189AE4[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80189A88; +extern u8 D_80189A94; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80189B18[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80189B20[])(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_80189B74[])(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_80189BA8[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80189B98[]; +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_80189BC4; +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); +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_80189C3C[])(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_80189C44[])(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_80189C4C[])(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_80189C54[])(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_80189C5C[])(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_80189C64[])(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_80189C70[])(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_80189C7C[])(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_80189C88[])(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_80189C98[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80189CA8[])(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_80189CB0[])(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_80189CB8[])(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_80189CC0[])(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_80189CC8[])(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_80189CD0[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80189CD8[])(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_80189CE0[])(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_80189CE8[])(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_80189CF0[])(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_80189CF8[])(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_80189D00[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80189D08[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80189D10[])(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_80189D18[])(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_80189D20[])(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_80189D28[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80189D30[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80189D38[])(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_80189D40[])(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_80189D48[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80189D50[])(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_80189D58[])(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_80189D9C[])(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_80189D60; +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_80189DCC[])(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_80189E08[])(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(s32); +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_80189E60[])(); +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_80189E70[])(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_80189E78[])(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_80189FE0[])(); +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_80189FEC[])(); +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_80199F60; +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 int func_801789AC(void); +extern s16 D_801A0060; +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_8019B238; +extern short D_801A00D4; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8019B664; +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_8019B68C; +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_8019B648; +extern s32 func_8017A3B0(void); +extern short D_8019B684; +extern short D_8019B680; +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_801A0030; +extern s16 D_801A0032; +extern s16 D_801A003C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801A0030; + + 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_801A003C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801A0030+0xC == &D_801A003C; 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_801A0030 + 0xC)) < 0x101) { + D_801A0030 = 0; + D_801A0032 = 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_801A003C); + 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_801A0030 + 0xC)) < 0x101) { + D_801A0030 = 0; + D_801A0032 = 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_8019B6C4; + extern s16 D_8019B6C6; + extern s16 D_8019B6C8; + extern s16 D_8019B6BC; + extern s16 D_8019B6BE; + extern s16 D_8019B6C0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_8019B6C4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_8019B6C6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_8019B6C8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019B6BC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019B6BE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_8019B6C0, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_8019B64C; +extern u16 D_8019B6CC; +extern u16 D_8019B6CE; +extern u16 D_8019B6D0; +extern s16 D_801A0060; + +void func_8017B1D8(void) { + func_8012A418(); + D_801A0060 = 0; + D_8019B64C = 0; + D_8019B6CC = D_80126B5E; + D_8019B6CE = D_80126B62; + D_8019B6D0 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_8018A128[]; + extern s16 D_8019B6C4; + extern s16 D_8019B6BC; + 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_8018A128[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018A128[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019B6C4; + s16 *p78C = &D_8019B6BC; + *(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_801A0060 = 1; + D_8019B64C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_8019B66C; + extern SV4_8017B368 D_8019B674; + extern s16 D_8019B6C4; + extern s16 D_8019B6BC; + extern u16 D_8018A128; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8019B66C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8019B674; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_8018A128)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_8018A128)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_8019B6C4) = loc0; + (*(SV4_8017B368 *)&D_8019B6BC) = loc1; + D_801A0060 = 1; + D_8019B64C = 0; +} + + + +INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_8018A128[]; + extern s16 D_8019B6C4; + extern s16 D_8019B6C6; + extern s16 D_8019B6C8; + extern s16 D_8019B6BC; + extern s16 D_8019B6BE; + extern s16 D_8019B6C0; + 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_8018A128[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018A128[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_8019B6C4; + s16 *p78C = &D_8019B6BC; + *(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_8019B6C6; + v798 = D_8019B6C8; + v78C = *p78C; + v78E = D_8019B6BE; + v790 = D_8019B6C0; + __asm__ __volatile__(""); + D_801A0060 = 1; + D_8019B64C = 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_8019B64C; +extern s16 D_8019B6C4; +extern s16 D_8019B6C6; +extern s16 D_8019B6C8; +extern s16 D_8019B6BC; +extern s16 D_8019B6BE; +extern s16 D_8019B6C0; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_8019B64C = 0; + D_8019B6C4 = (s16) D_80114F30; + D_8019B6C6 = (s16) D_80114F34; + D_8019B6C8 = (s16) D_80114F38; + D_8019B6BC = (s16) D_80114F24; + D_8019B6BE = (s16) D_80114F28; + D_8019B6C0 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_8019B6DC; +extern s16 D_8019B6DE; +extern s16 D_8019B6E0; +extern s16 D_8019B6E4; +extern s16 D_8019B6E6; +extern s16 D_8019B6E8; + +void func_8017B824(void) { + D_8019B6DC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8019B6DE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_8019B6E0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_8019B6E4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_8019B6E6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_8019B6E8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_8019B6DC; +extern s16 D_8019B6DE; +extern s16 D_8019B6E0; +extern s16 D_8019B6E4; +extern s16 D_8019B6E6; +extern s16 D_8019B6E8; + +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_8019B6DC; + D_80114F34 = D_8019B6DE; + D_80114F38 = D_8019B6E0; + D_80114F24 = D_8019B6E4; + D_80114F28 = D_8019B6E6; + D_80114F2C = D_8019B6E8; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_8019B6C4), src[8..15] -> (*(S8_8017B8E8 *)&D_8019B6BC) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_8019B6C4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8019B6BC) = ((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_8019B6CC; +extern u16 D_8019B6CE; +extern u16 D_8019B6D0; + +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_8019B64C; +extern short D_8019B6D4; +extern short D_8019B6D6; +extern short D_8019B6D8; +extern s16 D_8019B6C4; +extern s16 D_8019B6C6; +extern s16 D_8019B6C8; +extern s16 D_8019B6BC; +extern s16 D_8019B6BE; +extern s16 D_8019B6C0; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019B6CC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019B6CE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_8019B6D0); + (*(s16 *)&D_8019B6D4) = buf[0]; + (*(s16 *)&D_8019B6D6) = buf[1]; + (*(s16 *)&D_8019B6D8) = buf[2]; + D_8019B6C4 = D_80114F30 + buf[0]; + D_8019B64C = 0; + D_8019B6C6 = D_80114F34 + buf[1]; + D_8019B6C8 = D_80114F38 + buf[2]; + D_8019B6BC = D_80114F24 + buf[0]; + D_8019B6BE = D_80114F28 + buf[1]; + D_8019B6C0 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_8019B66C; +extern SV4 D_8019B674; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019B674) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_8019B66C = 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_8019B674 = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019B674)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8019B66C) = 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_8019B674) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8019B694[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8019B694; + 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_8019B64C; +extern s16 D_801A0060; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_8019B64C = D_8019B64C + 1; + if (D_8019B64C >= 0x1F) { + D_801A0060 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_8019B64C; +extern s16 D_801A0060; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_8019B64C = D_8019B64C + 1; + if (0x18 < D_8019B64C) { + func_8012A4BC(); + D_801A0060 = 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_8019B64C; +extern void (*D_8019B690)(void); +extern short D_8019B6D4; +extern short D_8019B6D6; +extern short D_8019B6D8; +extern s16 D_801A0060; + +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_8019B64C = D_8019B64C + 1; + if (D_8019B64C >= 0x19) { + if (D_8019B690 != 0) { + (*D_8019B690)(); + } else { + D_80114F30 = D_80114F30 + D_8019B6D4; + D_80114F34 = D_80114F34 + D_8019B6D6; + D_80114F38 = D_80114F38 + D_8019B6D8; + D_80114F24 = D_80114F24 + D_8019B6D4; + D_80114F28 = D_80114F28 + D_8019B6D6; + D_80114F2C = D_80114F2C + D_8019B6D8; + func_8012A4BC(); + } + D_801A0060 = 0; + } +} + + + +extern void (*D_8018A1C8[])(void); + +void func_8017BE60(void *a0) { + D_8018A1C8[*(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) */ + +INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017AE2C", func_8017BEE0); + + + +extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); + void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3) { + ((void (*)(void *, void *, s32, s32))func_8017BF34)(a0, a1, (s16)a2, (s16)a3); + } + + +INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017AE2C", func_8017BF34); + +INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017AE2C", func_8017BFBC); + +INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017AE2C", func_8017C010); + +INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017AE2C", func_8017C068); + + +extern void (*D_8018A228[])(void); + +void func_8017C114(void *a0) { + D_8018A228[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017AE2C", func_8017C150); + +INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017AE2C", func_8017C43C); + diff --git a/src/ov_SC07_006/ov_SC07_006_jr_8015C32C.c b/src/ov_SC07_006/ov_SC07_006_jr_8015C32C.c index 3395a13c4..756ba6826 100644 --- a/src/ov_SC07_006/ov_SC07_006_jr_8015C32C.c +++ b/src/ov_SC07_006/ov_SC07_006_jr_8015C32C.c @@ -9041,525 +9041,3 @@ DEFINE_func_8017ADE8() /* dedup: shared engine-core @0x8017ade8 (src/shared) */ DEFINE_func_8017AE08() /* dedup: shared engine-core @0x8017ae08 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_8015C32C", func_8017AE2C); - -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801F606C; - extern s16 D_801F606E; - extern s16 D_801F6070; - extern s16 D_801F6064; - extern s16 D_801F6066; - extern s16 D_801F6068; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801F606C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801F606E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801F6070, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801F6064, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801F6066, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801F6068, (s32)((s16)param_2)); -} - - -extern void func_8012A418(void); - -void func_8017B1D8(void) { - - extern u16 D_80126B5E; - extern u16 D_80126B62; - extern u16 D_80126B66; - extern s16 D_801F5FF4; - extern u16 D_801F6074; - extern u16 D_801F6076; - extern u16 D_801F6078; - extern s16 D_801F62F8; - func_8012A418(); - D_801F62F8 = 0; - D_801F5FF4 = 0; - D_801F6074 = D_80126B5E; - D_801F6076 = D_80126B62; - D_801F6078 = D_80126B66; -} - - -extern void func_8012A018(s32 a, s32 b); -extern void func_8017B614(void *, s32); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B238; - -s32 func_8017B238(s32 param_1, s32 param_2) -{ - - extern s16 D_801F5FF4; - extern s16 D_801F62F8; - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern s32 func_8017BE60(void *a0); - extern u8 D_8018DD4C[]; - extern s16 D_801F606C; - extern s16 D_801F6064; - 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 *)&buf[0] = *(Blk8_8017B238 *)src; - *(Blk8_8017B238 *)&buf[8] = *(Blk8_8017B238 *)(src + 8); - } else { - s32 a1addr = (s32)&D_8018DD4C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018DD4C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801F606C; - s16 *p78C = &D_801F6064; - *(Blk8_8017B238 *)p794 = *(Blk8_8017B238 *)&buf[0]; - *(Blk8_8017B238 *)p78C = *(Blk8_8017B238 *)&buf[8]; - func_8012A018((s32)func_8017BE60, 0); - D_8012694C = 0; - D_801F62F8 = 1; - D_801F5FF4 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16; /* 16-byte stride array element */ - - - -s32 func_8017B368(s32 param) -{ - - extern s16 D_801F5FF4; - extern s16 D_801F62F8; - extern void func_8017BA3C(s32 param_1, s32 param_2); - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern SV4_8017B368 D_801F6014; - extern SV4_8017B368 D_801F601C; - extern s16 D_801F606C; - extern s16 D_801F6064; - extern u16 D_8018DD4C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801F6014; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801F601C; - } else { - s32 ax = (s32)&((Pair16 *)&D_8018DD4C)[n].x; - s32 ay = (s32)&((Pair16 *)&D_8018DD4C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801F606C) = loc0; - (*(SV4_8017B368 *)&D_801F6064) = loc1; - D_801F62F8 = 1; - D_801F5FF4 = 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_801F6014; - extern SV4_8017B368 D_801F601C; - extern s16 D_801F606C; - extern s16 D_801F6064; - extern u16 D_8018DD4C; - extern s16 D_801F5FF4; - extern s16 D_801F62F8; - 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_801F6014; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801F601C; - } else { - s32 ax = (s32)&((Pair16 *)&D_8018DD4C)[n].x; - s32 ay = (s32)&((Pair16 *)&D_8018DD4C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801F606C) = loc0; - (*(SV4_8017B368 *)&D_801F6064) = loc1; - D_801F62F8 = 1; - D_801F5FF4 = 0x1E; - D_80126990 = (*(SV4_8017B368 *)&D_801F606C).a; - D_80126994 = (*(SV4_8017B368 *)&D_801F606C).b; - D_80126998 = (*(SV4_8017B368 *)&D_801F606C).c; - D_80126984 = (*(SV4_8017B368 *)&D_801F6064).a; - D_80126988 = (*(SV4_8017B368 *)&D_801F6064).b; - D_8012698C = (*(SV4_8017B368 *)&D_801F6064).c; -} - - -INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_8015C32C", func_8017B614); - - - -// @class: plumbing -// @stuck: none — MATCH - - - -void func_8017B7A8(void) -{ - - 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_801F5FF4; - extern s16 D_801F606C; - extern s16 D_801F606E; - extern s16 D_801F6070; - extern s16 D_801F6064; - extern s16 D_801F6066; - extern s16 D_801F6068; - D_8012694C = 1; - D_801F5FF4 = 0; - D_801F606C = (s16) D_80114F30; - D_801F606E = (s16) D_80114F34; - D_801F6070 = (s16) D_80114F38; - D_801F6064 = (s16) D_80114F24; - D_801F6066 = (s16) D_80114F28; - D_801F6068 = (s16) D_80114F2C; -} - - - - -void func_8017B824(void) { - - extern s32 D_801151D4; - extern s16 D_801F6084; - extern s16 D_801F6086; - extern s16 D_801F6088; - extern s16 D_801F608C; - extern s16 D_801F608E; - extern s16 D_801F6090; - D_801F6084 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801F6086 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801F6088 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801F608C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801F608E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801F6090 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - - - -void func_8017B880(void) -{ - - extern s16 D_801F6084; - extern s16 D_801F6086; - extern s16 D_801F6088; - extern s16 D_801F608C; - extern s16 D_801F608E; - extern s16 D_801F6090; - extern s32 D_80114F30; - extern s32 D_80114F34; - extern s32 D_80114F38; - extern s32 D_80114F24; - extern s32 D_80114F28; - extern s32 D_80114F2C; - D_80114F30 = D_801F6084; - D_80114F34 = D_801F6086; - D_80114F38 = D_801F6088; - D_80114F24 = D_801F608C; - D_80114F28 = D_801F608E; - D_80114F2C = D_801F6090; -} - - - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - - extern s16 D_801F6064; - extern s16 D_801F606C; - (*(S8_8017B8E8 *)&D_801F606C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801F6064) = ((S8_8017B8E8 *)src)[1]; -} - - - - -// @class: struct -// @stuck: none — MATCH (63 ins) - - - - -void func_8017B940(void) -{ - - extern u16 D_80126B5E; - extern u16 D_80126B62; - extern u16 D_80126B66; - extern u16 D_801F6074; - extern u16 D_801F6076; - extern u16 D_801F6078; - 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_801F5FF4; - extern short D_801F607C; - extern short D_801F607E; - extern short D_801F6080; - extern s16 D_801F606C; - extern s16 D_801F606E; - extern s16 D_801F6070; - extern s16 D_801F6064; - extern s16 D_801F6066; - extern s16 D_801F6068; - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801F6074); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801F6076); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801F6078); - (*(s16 *)&D_801F607C) = buf[0]; - (*(s16 *)&D_801F607E) = buf[1]; - (*(s16 *)&D_801F6080) = buf[2]; - D_801F606C = D_80114F30 + buf[0]; - D_801F5FF4 = 0; - D_801F606E = D_80114F34 + buf[1]; - D_801F6070 = D_80114F38 + buf[2]; - D_801F6064 = D_80114F24 + buf[0]; - D_801F6066 = D_80114F28 + buf[1]; - D_801F6068 = D_80114F2C + buf[2]; -} - - -INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_8015C32C", func_8017BA3C); - -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_80049CAC(s32 a0, s32 a1); - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - - extern s32 D_801F6014; - extern SV4_8017B368 D_801F601C; - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801F601C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801F6014) = 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_801F601C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - - -void func_8017BC38(int param_1) -{ - - extern void (*D_801F603C[10])(int); - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801F603C; - 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); - -void func_8017BCA0(int param_1) { - - extern s16 D_801F5FF4; - extern s16 D_801F62F8; - func_8017B0E4(param_1, 0xC); - D_801F5FF4 = D_801F5FF4 + 1; - if (D_801F5FF4 >= 0x1F) { - D_801F62F8 = 2; - } -} - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - - extern s16 D_801F5FF4; - extern s16 D_801F62F8; - func_8017B0E4(param_1, 6); - D_801F5FF4 = D_801F5FF4 + 1; - if (0x18 < D_801F5FF4) { - func_8012A4BC(); - D_801F62F8 = 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); - - - -void func_8017BD50(int param_1) -{ - - extern s16 D_801F5FF4; - extern void (*D_801F6038)(void); - extern short D_801F607C; - extern short D_801F607E; - extern short D_801F6080; - extern s16 D_801F62F8; - extern s32 D_80114F24; - extern s32 D_80114F28; - extern s32 D_80114F2C; - extern s32 D_80114F30; - extern s32 D_80114F34; - extern s32 D_80114F38; - func_8017B0E4(param_1, 6); - D_801F5FF4 = D_801F5FF4 + 1; - if (D_801F5FF4 >= 0x19) { - if (D_801F6038 != 0) { - (*D_801F6038)(); - } else { - D_80114F30 = D_80114F30 + D_801F607C; - D_80114F34 = D_80114F34 + D_801F607E; - D_80114F38 = D_80114F38 + D_801F6080; - D_80114F24 = D_80114F24 + D_801F607C; - D_80114F28 = D_80114F28 + D_801F607E; - D_80114F2C = D_80114F2C + D_801F6080; - func_8012A4BC(); - } - D_801F62F8 = 0; - } -} - - - - -void func_8017BE60(void *a0) { - - extern void (*D_8018DDEC[])(void); - D_8018DDEC[*(u8 *)((s32)a0 + 0x4)](); -} - - -void func_8017BE9C(void) { -} - -void func_8017BEA4(void) { -} - -void func_8017BEAC(void) { -} - -void func_8017BEB4(void) { -} - - diff --git a/src/ov_SC07_006/ov_SC07_006_jr_8017AE2C.c b/src/ov_SC07_006/ov_SC07_006_jr_8017AE2C.c new file mode 100644 index 000000000..cd3fdc1ae --- /dev/null +++ b/src/ov_SC07_006/ov_SC07_006_jr_8017AE2C.c @@ -0,0 +1,3876 @@ +#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 { s32 w[8]; } Vec8; +typedef struct { s32 m[3][3]; s32 t[3]; } MATRIX; +typedef struct { s32 vx, vy, vz; } VECTOR; +typedef struct { s16 h[8]; } Buf; +typedef struct { char _b[8]; } M8; /* size 8, alignment 1 -> unaligned copy */ +typedef struct { u16 f0, f2, f4; s16 f6; } Box_80133784; +typedef struct { s16 x, y, z; } Vec3s; +typedef struct { s32 f0; } E4; +typedef struct { u16 f0; s16 f2; } Prim4; +typedef struct { s16 x; s16 y; } Hw4; +typedef struct { s32 f0; u32 *f4; s32 f8; s32 fC; s32 f10; } Rec20; +typedef struct { u8 d[0x60]; } Blk60; +typedef void (*code)(unsigned short *); +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4; +typedef struct { B8_80165140 a; B4 b; s32 used; } Slot; +struct W4 { u32 w; } __attribute__((packed, aligned(1))); +typedef struct { s16 ax, ay, a04, a06, bx, by, b0c, b0e, cx, cy, c14, c16, dx, dy, d1c, d1e, u0, v0, u1, v1, u2, v2, u3, v3; u8 r, g, b, pad33; s32 tag; u8 code, pad39, pad3a, pad3b; s32 pad3c; } Prim_B234; +typedef struct { u8 f0; u8 pad[0xc3]; } Slot_998; +typedef struct { s32 w[8]; } Blk32_998; +typedef struct { short vx, vy, vz, pad; } SVEC_L1; /* 8 bytes */ +typedef struct { int a[8]; } MTX_L1; /* 32 bytes */ +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 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 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 void func_80029444(void); +extern void func_800D1754(void); +extern void func_8014ED28(s32 _arg0); +extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); +extern int func_801288E8(int arg0); +extern int func_80128940(int arg0); +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 s32 func_80128ED8(s32 param_1, s32 *param_2); +extern void func_80128FAC(u16 *arg0); +extern s16 D_8011DB2C; +extern s16 D_8011DB30; +extern s32 D_80126AEC; +extern void func_80129010(void); +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 struct BigCopy D_80126DB8; +extern u8 D_80126948[]; +extern struct BigCopy D_80114EE8; +extern s32 D_80126E60[]; +extern s8 D_801150D6; +extern s8 D_801152C0; +extern u8 D_80127504; +extern void func_800144D4(void); +extern void func_80129C40(s32 _arg0); +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 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_80129CF8(void); +extern void func_8012A018(s32 a, s32 b); +extern void func_80129FF4(void); +extern void func_8012A048(void *a0, s32 a1, u8 a2); +extern void func_8012A018(s32 a0, s32 a1); +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 *memcpy(void *, const void *, unsigned int); +extern void func_8012A094(s32 a0); +extern void func_8012A100(s8 a0); +extern void func_8012A0E0(void); +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 void func_8012A2F4(void); +extern s16 D_80127080; +extern s16 D_801152C2; +extern void func_8012A304(s32 a0, s32 a1); +extern void func_8012A464(void); +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 s32 func_80047D3C(s32 a0); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 func_8012A6D0(void* a0, void* a1); +extern s16 func_8012A79C(s16 *a0, s16 *a1); +extern s16 func_8012A758(void); +extern void func_8012A7D4(void *arg0, void *arg1); +extern void func_8012AAAC(void); +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 void func_8012ACA0(void *arg0); +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 D_80126B58; +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 u16 D_801274E4[]; +extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +extern void 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 void 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 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 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_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(void); +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_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 void func_8012F828(int param_1); +extern void func_80131340(s32 a0); +extern void func_8012F87C(s32 a0); +extern void func_8012F8C8(int param_1); +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 void func_80131B14(void); +extern void func_8012FCC4(int param_1); +extern void func_8012FDA8(int param_1); +extern void func_80131170(s32 a0, s32 a1, s32 a2); +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 func_80130D0C(s32 a0); +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_801F4D80; +extern s32 D_801F4D84; +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 func_80131E38(u8 *a0); +extern void func_80131E7C(s32 a0); +extern void func_80131EE4(void); +extern void func_80131EEC(void *a0); +extern void func_80131F28(void *a0); +extern void func_80131F64(void *a0); +extern void func_80131FA0(void *a0); +extern void func_80131FDC(void *a0); +extern void func_801320D0(void); +extern void func_8001C214(int, int); +extern void func_801320D8(int param_1); +extern void func_80132144(int param_1); +extern void func_801321B0(int param_1); +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(s16 *a0, s16 *a1, s32 a2); +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 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_801345F8(s32 arg); +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 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_801365B8(void *arg0, s32 arg1, s32 arg2); +extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); +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 func_80136C54(void); +extern void func_80136D00(void); +extern void SetLineG2(void *); +extern void func_80136D08(s32 arg0, s32 arg1); +extern u16 D_80126CC4; +extern M2C_UNK func_800153CC(M2C_UNK, u16, M2C_UNK, M2C_UNK, s32, s32); +extern void func_80136DFC(void); +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 void func_80138BE0(s32 a0); +extern void func_80137BD8(s32 a0); +extern void func_8013A380(void); +extern void func_801379FC(void); +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 int func_80137D08(int arg0, int arg1, short arg2); +extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80137DD4(s32 ent, u8 *arg, u8 *work); +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 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 D_80127548[]; +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 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 s16 D_801269F4; +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_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 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); +extern void func_8013CA14(void); +extern void func_8013CABC(void); +extern void func_8013CAE8(void); +extern void func_8013CB20(void); +extern void func_8013CB5C(void); +extern void func_8013CF68(); +extern void func_8013D9B0(); +extern void func_8013D064(void); +extern s32 func_8013D13C(void); +extern void func_8013D164(void); +extern void func_8013D178(void); +extern void func_8013D330(void); +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 void func_8013DBE4(int param_1); +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 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_801754A8(void); +extern s32 func_80014ED4(s32); +extern s32 func_80015018(s32); +extern void func_800190AC(void); +extern void func_80141C04(void); +extern void func_8013E5E8(void); +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_8011511A; +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 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 void func_8013F138(void); +extern void func_800D2624(void); +extern unsigned short D_80115114; +extern unsigned short D_80115118; +extern void func_8013F1BC(void); +extern void func_80141C0C(s32); +extern u16 D_8011511C; +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_8011514E; +extern u8 D_80115152; +extern u8 D_80115158[]; /* macro-canonical (§8e) */ +extern u8 D_8011515C; /* macro-canonical (§8e) */ +extern u8 D_8018B4A8[]; +extern u8 D_8018B4C0[]; +extern u16 D_8018B3C4[]; +extern s32 func_80029178(s32 arg); +extern s32 func_800291B4(s32 arg); +extern void func_8014AA04(s32 a0); +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) */ +extern s32 func_8013F350(void); +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_800D27DC(s32, s32 *, void *, s32, s32); +extern s32 *func_800D29F8(s32, s32, void *, s32, s32); +extern void func_8013FAF8(s16 arg0, s16 arg1); +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); +extern int func_800D2CA8(int, int); +extern void func_800D2D10(int, int, void *, int); +extern int func_80029FE4(void); +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 int func_8002A998(void); +extern int func_8002A9DC(void); +extern int func_8002A728(void); +extern int func_8002A76C(void); +extern int func_80029FD4(void); +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); +extern int func_80141100(int param_1); +extern void func_800291A0(s32, s32); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_801415C0(s32 param_1, s32 param_2); +extern u8 D_80115148[]; +extern u8 D_80115149[]; +extern u8 D_80115158[]; +extern u8 D_8011514D; +extern u8 D_8011515C; +extern s32 func_800D11F0(s32 a0); +extern s32 func_800D1658(s32 a0); +extern s32 func_801416D4(s16 param_1); +extern void func_8001903C(void); +extern void func_801417C4(void); +extern u8 D_800B9A16; +extern u16 D_80115114; +extern void func_801417F8(void); +extern volatile u16 D_8011511A; +extern u16 D_8011512E; /* §17a-1: canonical width (jr_8013F350 TUs decl u16); byte-neutral here (only use is store-0) */ +extern s32 func_80029178(s32 a0); +extern void func_801418F8(void); +extern void func_80141A60(void); +extern void func_80141C0C(s32 param_1); +extern s32 func_80015144(void); +extern unsigned char D_80112C04[]; +extern unsigned char D_80112C50[]; +extern unsigned char D_80112C9C[]; +extern unsigned char D_80112CE8[]; +extern unsigned char D_80112D38[]; +extern unsigned char D_80112D78[]; +extern unsigned char D_80112DBC[]; +extern unsigned char D_80112DF4[]; +extern unsigned char D_80112E14[]; +extern unsigned char D_80112E40[]; +extern unsigned char D_80112E6C[]; +extern unsigned char D_80112EBC[]; +extern unsigned char D_80112F0C[]; +extern unsigned char D_80112F48[]; +extern unsigned char D_80112F9C[]; +extern unsigned char D_80112FDC[]; +extern unsigned char D_8011302C[]; +extern unsigned char D_80113074[]; +extern unsigned char D_801130B8[]; +extern unsigned char D_801130E8[]; +extern unsigned char D_80113138[]; +extern unsigned char D_8011317C[]; +extern unsigned char D_801131A8[]; +extern unsigned char D_801131E8[]; +extern unsigned char D_80113214[]; +extern unsigned char D_80113254[]; +extern unsigned char D_80113278[]; +extern unsigned char D_801132B8[]; +extern unsigned char D_801132E4[]; +extern unsigned char D_80113324[]; +extern unsigned char D_80113360[]; +extern unsigned char D_801133A4[]; +extern unsigned char D_801133F4[]; +extern unsigned char D_80113440[]; +extern unsigned char D_80113474[]; +extern unsigned char D_801134B0[]; +extern unsigned char D_801134FC[]; +extern unsigned char D_80113530[]; +extern unsigned char D_80113554[]; +extern unsigned char D_801135A8[]; +extern unsigned char D_80113600[]; +extern unsigned char D_80113650[]; +extern unsigned char D_80113694[]; +extern unsigned char D_801136DC[]; +extern unsigned char D_80113724[]; +extern unsigned char D_80113744[]; +extern unsigned char D_80113770[]; +extern unsigned char D_80113794[]; +extern unsigned char D_801137D8[]; +extern unsigned char D_8011381C[]; +extern unsigned char D_8011383C[]; +extern unsigned char D_8011386C[]; +extern unsigned char D_801138A4[]; +extern unsigned char D_801138D0[]; +extern unsigned char D_80113900[]; +extern unsigned char D_80113944[]; +extern unsigned char D_80113964[]; +extern unsigned char D_8011399C[]; +extern unsigned char D_801139E8[]; +extern unsigned char D_80113A28[]; +extern unsigned char D_80113A50[]; +extern unsigned char D_80113A84[]; +extern unsigned char D_80113AB0[]; +extern unsigned char D_80113AE0[]; +extern unsigned char D_80113B34[]; +extern unsigned char D_80113B68[]; +extern unsigned char D_80113BA4[]; +extern unsigned char D_80113BC0[]; +extern unsigned char D_80113BF0[]; +extern unsigned char D_80113C20[]; +extern unsigned char D_80113C3C[]; +extern unsigned char D_80113C7C[]; +extern unsigned char * func_80141CA4(void); +extern void func_80142414(s32 a0, s16 a1); +extern void func_80142454(s32 a0); +extern void func_801424E4(short *param_1); +extern void func_801425CC(void *a0); +extern void func_8001CA1C(s32 a0, s32 a1); +extern s32 func_8012AD50(void *a0); +extern void func_80142608(s32 param_1); +extern void func_801426D4(s32 a0); +extern void func_80142740(int param_1); +extern void func_80142778(u8 *a1); +extern void func_801427DC(void); +extern void func_801427E4(void); +extern void func_801427EC(int param_1); +extern s32 func_80142DB8(s32 *a0); +extern s32 func_80142D38(s32 *a0); +extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); +extern void func_801428CC(s32 *a0); +extern void func_8014292C(int param_1); +extern void func_80142978(int param_1); +extern void func_801429C4(int param_1); +extern void func_80142A80(void); +extern void func_80142C7C(void); +extern void func_80142C84(s32 a0); +extern void func_80142C9C(s32 * arg0); +extern void func_80142B2C(void *arg0); +extern void func_80142DC4(int param_1); +extern void func_80142E38(int param_1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_80142EC0(s32 param_1); +extern void func_80142FFC(s32 *a0); +extern void func_8014305C(int param_1); +extern void func_80143188(s32 *a0); +extern int func_8001CA88(int, void *); +extern void func_800233CC(void *, unsigned short); +extern void func_801431E8(s32 param_1); +extern void func_80142C9C(s32 *a0); +extern void func_801432FC(s32 *a0); +extern void func_80143390(s32 *a0); +extern void func_80143458(s32 param_1); +extern void func_8014358C(s32 param_1); +extern s32 rand(void); +extern void func_80143640(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_801437D8(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80143970(s32 a0); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern void func_80143994(s32 a0, s32 a1); +extern void func_801439C0(u8 *a0); +extern s16 D_801152AC; +extern s16 D_801152AA; +extern void func_801439FC(s32 a0); +extern void func_80143B30(void *a0); +extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_80143B6C(s32 arg0, s32 arg1); +extern void func_80143BDC(u16 *a0); +extern void func_80143C38(void *a0); +extern void func_80143C74(s32 a0, s32 a1); +extern void func_80143C98(void *a0); +extern void func_80143E68(void *a0); +extern void func_80143EA4(void); +extern void func_80143EAC(void); +extern void func_80143EB4(void); +extern s32 func_8004787C(s32 a0); +extern void func_80143EBC(s32 a0); +extern void func_80144054(void *a0); +extern void func_801442F8(int param_1); +extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80144364(int param_1); +extern u8 D_800D387C[]; +extern u8 D_800D3888[]; +extern void func_80144558(u8 *param_1); +extern void func_801446A4(int param_1); +extern void func_8014477C(void *param_1); +extern void func_80144880(s32 param_1); +extern void func_80144988(s32 a0); +extern void func_801449C8(void *a0); +extern void func_80144A04(s32 *a0); +extern void func_80144A2C(void *a0); +extern void func_80144A68(s32 *a0); +extern void func_80144A90(void); +extern void func_80144A98(u8 *a0); +extern void func_80144B14(void); +extern void func_80144AEC(s32 *a0); +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 void func_80145B24(void); +extern void func_80145934(void); +extern void func_80145A2C(void); +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 void func_80145BF8(void); +extern void func_80145C54(void); +extern void func_80146014(s32 a0); +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(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 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_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_80146C3C(u8 *a0); +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 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_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 volatile s32 D_80127090; +extern volatile s32 D_80127094; +extern volatile s32 D_80127098; +extern void func_80147F78(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80148038(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 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_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_80148D44(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 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 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 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_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 func_80149FB0(s32 a0); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8014A1B0(s32 a0, s32 a1); +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_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_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 u8 D_80078E78[]; +extern s32 func_8016F1C4(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_8014BD60(s32 a0, s32 a1); +extern void func_8014B084(void); +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +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 void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +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_80019064(void *a0); +extern s32 D_80078E98; +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_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_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 a0, s32 a1, void* a2); +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 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 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 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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +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 void func_8014DF94(s32 arg0); +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); /* canonical (engine_core.h:11555) */ +extern s32 func_8014E284(s32 a0, s16 *arg1, s16 *arg2); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E48C(s32 a0); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +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_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014ED80(struct SubED80 *a0); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014F4C0(u8 *a0); +extern void func_8014F468(void); +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern void func_8014FA04(s32 a0); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern s32 func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_801502EC(s32 e, void *a1, void *a2); +extern s32 func_80150460(s32 e, s32 a1); +extern s32 func_80150170(void *e); +extern s32 func_80150460(s32 a, s32 b); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern void func_801504D8(u16 *a0); +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 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 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B28(int 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_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 void 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 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 func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +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 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 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 func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +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 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 func_80152C80(s32* a0); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +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 func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern u8 D_80062C04[]; +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 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 void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +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_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_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 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 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 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(void *a0); +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 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 a0, s32 a1, s32 a2, s32 a3); +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 func_8014CC28(s32 a0); /* defined */ +extern void 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 void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_80157808(s32 a0); +extern void func_801577C8(int param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +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 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 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 func_80158038(void *); +extern void func_80158000(void *a0); +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 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 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 void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +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 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 int rand(void); +extern void func_80158F00(int param_1); +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 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 u8 D_80110C3C[]; +extern void func_80159120(s32 a0); +extern void func_801592CC(s32 *a0); +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void func_80159698(void *a0); +extern s32 func_801596D4(void *a0); +extern void func_80174B6C(void); +extern void func_8013C938(void); +extern void func_8002850C(s32, s32, s32); +extern void func_80028620(s32, void *); +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 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 func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +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 func_8015A2A0(s32 a0); +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 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 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(void); +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 func_8015C0C4(s32); +extern void func_8015C08C(s32 a0); +extern void func_8014D738(void); +extern s32 func_8015C128(s32 param_1); +extern s32 func_801496D4(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 void func_80149954(s32 a0); +extern s32 func_80149A64(s32*); +extern void func_800CCCC0(s32 a0); +extern void func_80147A84(s32 a0); +extern void func_801473EC(s32*); +extern void func_8014CC28(s32); +extern void func_8014F3E8(s32); +extern void func_80159BE4(s32 a0); +extern void func_8015C6E0(s32*); +extern void func_8015C32C(s32 arg0); +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 func_8015C788(s32); +extern void func_8015C750(s32 a0); +extern s32 func_80161B18(void *a0); +extern s32 func_80161B84(void *a0); +extern void func_80161240(void *a0); +extern void func_80161C24(s32, s32); +extern void func_8015C7E4(u16 *param_1); +extern void func_8015C944(int param_1); +extern void func_8015CA28(u16 *param_1); +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 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 func_8014E6A0(void); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +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 void func_80154150(int, int); +extern void func_80149374(int, int); +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_8015F89C(void *arg0); +extern void func_8015F9A4(void *arg0); +extern int func_8015DD74(int); +extern void func_8015DBD4(void *arg0); +extern int func_8015DC84(int a0); +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 void func_8015E5B0(u8*); +extern void func_8015E344(u16 *param_1); +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern s32 func_8013C9C4(s32 *a0); +extern void func_8015E5B0(u8 *self); +extern void func_8015E698(u16 *param_1); +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 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 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_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_80146DB8(s32*, s32*); +extern void func_80146E90(s32*, s32); +extern s32 func_801725B8(u8*); +extern void func_80019064(void*); +extern void func_801484B0(s32, s32); +extern void func_80148534(s32, s32); +extern void func_8015F448(s32 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_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); +extern void func_80147078(s32 *, s16); +extern void func_80159B70(void *); +extern void func_8015F948(s32 *param_1); +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 void func_8015FD74(int param_1); +extern u8 func_80165700(s32 a0, s32 a1); +extern void func_8015FDCC(s32 a0); +extern void func_8015FE70(u16 *param_1); +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_801602A4(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_80160534(u8 *p); +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_80160A74(s32 *a0); +extern void func_80160920(unsigned short *param_1); +extern void func_801609B8(u16 *param_1); +extern void func_80160A28(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 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_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 void func_80161C98(int param_1, u32 param_2); +extern void func_80161E08(s32); +extern s32 func_80162438(s32); +extern void func_800D1734(void *); +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 void func_8016216C(void); +extern s32 func_801621CC(s32 arg0); +extern void func_801622C4(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 void func_80162760(void); +extern void func_801627C0(void); +extern void func_80162834(void *a0); +extern void func_80162968(s32 a0); +extern s32 func_80162ACC(u8 *a0); +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_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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +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 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 func_80164744(s32 param_1); +extern void func_80164A74(s32 *a0); +extern void func_80164930(s32 a); +extern void func_801647A4(int param_1); +extern void func_80164ACC(); +extern void func_80164864(void *a0); +extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80164ACC(s32 a0); +extern void func_80164BA0(void *a0); +extern void func_8001CD50(s32 a0, s32 a1); +extern void func_80164DD0(s32 a0); +extern void func_80164DB0(void); +extern void func_80164BDC(s32 param_1); +extern s32 func_80164E40(void); +extern void func_80164CD4(u8 *a0); +extern void func_80164D4C(void *arg0); +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 void func_80165240(void *param_1, void *param_2, void *param_3); +extern void func_801651B8(void * param_1); +extern void func_80016ED4(void *a0); +extern s32 func_80017DC4(void *a0, void *a1); +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 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 func_801656D0(s32 a0, s32 a1); +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 u8 D_80078EC2; +extern s32 func_80165A50(s32 _arg0); +extern void func_80165AC8(void); +extern void func_80165A78(s32 arg0); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(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 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_80166018(void *a0); +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 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_801665B4(); +extern void func_80146C3C(); +extern void func_80166438(u8 *a0); +extern void func_80166618(void *a0); +extern void func_80166654(void *a0); +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 void func_80048EAC(void *a0, void *a1); +extern s32 func_801670E4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_801678B4(void *a0); +extern void func_80167A9C(void *a0); +extern void func_80167AD8(void); +extern int func_80029178(int); +extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); +extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); +extern void func_80166F58(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_801681FC(s32 param_1); +extern void func_80168430(s32 param_1); +extern void func_80168640(s32 a0); +extern Blk20 D_800AE620; +extern s32 RotMatrixX(s32 a0, void *a1); +extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80168664(void *arg0); +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_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168AA8(void *a0); +extern void func_80168AE4(s32 a0); +extern void func_80168D58(void *a0); +extern void func_80168F40(void *arg0); +extern void func_8016901C(void *a0); +extern void func_801693CC(void *a0); +extern void func_80169584(s32 param_1); +extern void func_801696D8(s32 a0, s32 a1); +extern void func_80169830(void *a0); +extern s32 func_80169A4C(s32 a0, s32 a1); +extern void func_80169B80(void *a0); +extern void func_80169F00(void *a0); +extern void func_8016A020(void *a0); +extern void func_8016A05C(void *a0); +extern void func_8016A700(void *a0); +extern s32 func_80016A5C(); +extern s32 func_8016A8FC(s32 a0); +extern void func_8016AB30(void *a0); +extern void func_8016B234(); +extern void func_800D22E4(s32 a0); +extern void func_8016AFB0(s32 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 func_8016B4BC(void *a0); +extern int func_8016B9F8(int); +extern int func_8016B834(int, int); +extern void func_8016B91C(int); +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 void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +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 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void func_8016BBA4(void *a0); +extern void func_8016BF50(s32); +extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8016BD78(s32 param_1); +extern void func_8016BF34(void *a0); +extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +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 short func_8016CBC0(void); +extern void func_8016C998(s32 param_1); +extern void func_8016CB84(void *a0); +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 func_8016D1D8(int param_1); +extern void func_8016D428(void *a0); +extern void func_8016D464(u8 *a0); +extern void func_8016D4DC(s32 a0); +extern void func_8016D688(int param_1); +extern void func_8016DBD8(u8 *a0); +extern void func_8016DA30(int param_1); +extern s16 D_801F5B98; +extern s16 D_801F5B9C; +extern u8 D_8018D710[]; +extern u8 D_8018D71C[]; +extern void func_8016DC20(s16 *param_1); +extern void func_8016DEA4(void *a0); +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_8016E460(void *arg0, void *arg1); +extern void func_8016E5B8(void *a0); +extern void func_8016E778(); +extern void func_8016E688(void *a0); +extern void func_8016E6E4(s32 a0); +extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); +extern void func_8016E778(int param_1); +extern s32 D_80115218; +extern void func_8016E918(short param_1, short param_2); +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern void func_8016EB3C(s32 p); +extern void func_8016EBA8(u8 *param_1); +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 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); +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 func_8016F6E0(void *a0); +extern s32 func_80171990(u8 *a0); +extern void func_8016F764(void *a0); +extern void func_8016F71C(u8 *a0); +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 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 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 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 func_8016FA84(void *a0); +extern void func_8016FB10(void *a0); +extern void func_8016FAC0(u8 *a0); +extern void func_8016FB50(void *a0); +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 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 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 func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +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 func_80170150(void *a0); +extern void func_801701C8(u8 *a0); +extern void func_8017018C(u8 *a0); +extern void func_801701C8(u8 * a0); +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 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 func_801703E0(void *a0); +extern void func_8017044C(u8 *a0); +extern void func_8017041C(u8 *a0); +extern void func_8017044C(u8 * a0); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +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 func_801705F8(void *a0); +extern void func_80170670(void *a0); +extern void func_80170634(u8 *a0); +extern void func_801706AC(void *a0); +extern void func_80170718(void *a0); +extern void func_801706E8(u8 *a0); +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 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 func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +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 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 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 func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +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 func_80171120(void *a0); +extern void func_8017118C(u8 *a0); +extern void func_8017115C(u8 *a0); +extern void func_8017118C(u8 * a0); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +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 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_8017248C(s32, s32); +extern s32 ratan2(s32, s32); +extern void func_80172170(s32, s32); +extern void func_80146D90(s32); +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_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 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 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_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 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 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 s32 func_8016F0AC(); +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 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(s32); +extern s32 func_801749A8(s32 a0); +extern void func_80174BBC(void *a0); +extern void func_80174BF4(void *a0); +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 s32 func_80175268(s32); +extern void func_80175184(s32* arg0); +extern s32 func_80175218(void *a0); +extern void func_801751D8(void *a0); +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_8011F7AD; +extern u8 D_8011F7AE; +extern void func_80175414(s32 _arg0); +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 void func_80175590(void *arg0); +extern void func_801757A0(s32); +extern void func_80175624(void *a0); +extern void func_801757E0(int); +extern void func_80175668(void); +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_801775E0(s32 param_1, s32 param_2); +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 void func_80178438(u16 *arg0); +extern void func_801787D4(void); +extern void func_8017869C(s32 a0); +extern s32 D_8011DB08; +extern void func_8017849C(void); +extern void func_8013E4B4(void); +extern s16 D_801270C4; +extern s16 D_801270C2; +extern u8 D_801270C6; +extern u8 D_801270C7; +extern void func_80178744(s32 a0, s32 a1); +extern void func_80178840(); +extern void func_80178840(int param_1); +extern s32 func_801788B8(s32 arg0, s32 arg1); +extern int func_801789AC(void); +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 void func_80178BF8(s32 _unused0, s32 _unused1); +extern M2C_UNK func_80178D40(s32 arg0, s32 arg1); +extern void func_80178CBC(s32 arg0, s32 arg1); +extern void func_80178D18(void); +extern void func_80179B28(s32 a0); +extern void func_80179B74(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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 void func_8017A094(s32 arg0); +extern void func_8017A0C4(s32 arg0); +extern void func_8017A0F4(void); +extern void func_8017A11C(void); +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 s32 func_8017A3B0(void); +extern int func_800D0CA0(int); +extern int func_8001AAA0(void); +extern int func_800D0CE0(void); +extern int func_8017A3D8(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 void func_8012BE98(s32, u16*); +extern s32 func_80012A60(s32 a0, s32 a1); + + +void func_8017AE2C(s32 param_1) { + + extern s16 D_801F62C8; + extern s16 D_801F62CA; + extern s16 D_801F62D4; + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801F62C8; + + 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_801F62D4); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801F62C8+0xC == &D_801F62D4; distinct rtx defeats gcc's address-CSE + so BE98's arg rematerializes instead of sharing the store's reg (byte-gate). */ + if (((s32 (*)(s32, u16 *))func_8012BE98)(pv, (u16 *)((s32)&D_801F62C8 + 0xC)) < 0x101) { + D_801F62C8 = 0; + D_801F62CA = 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_801F62D4); + 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 (((s32 (*)(s32, u16 *))func_8012BE98)(pv, (u16 *)((s32)&D_801F62C8 + 0xC)) < 0x101) { + D_801F62C8 = 0; + D_801F62CA = 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; +} + +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); + +// @class: plumbing +// @stuck: none — MATCH + + +void func_8017B0E4(int param_1, int param_2) +{ + extern s16 D_801F606C; + extern s16 D_801F606E; + extern s16 D_801F6070; + extern s16 D_801F6064; + extern s16 D_801F6066; + extern s16 D_801F6068; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801F606C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801F606E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801F6070, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801F6064, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801F6066, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801F6068, (s32)((s16)param_2)); +} + + +extern void func_8012A418(void); + +void func_8017B1D8(void) { + + extern u16 D_80126B5E; + extern u16 D_80126B62; + extern u16 D_80126B66; + extern s16 D_801F5FF4; + extern u16 D_801F6074; + extern u16 D_801F6076; + extern u16 D_801F6078; + extern s16 D_801F62F8; + func_8012A418(); + D_801F62F8 = 0; + D_801F5FF4 = 0; + D_801F6074 = D_80126B5E; + D_801F6076 = D_80126B62; + D_801F6078 = D_80126B66; +} + + +extern void func_8012A018(s32 a, s32 b); +extern void func_8017B614(void *, s32); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B238; + +s32 func_8017B238(s32 param_1, s32 param_2) +{ + + extern s16 D_801F5FF4; + extern s16 D_801F62F8; + extern void func_8012F214(s32 a0, s32 a1, s32 a2); + extern s32 func_8017BE60(void *a0); + extern u8 D_8018DD4C[]; + extern s16 D_801F606C; + extern s16 D_801F6064; + 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 *)&buf[0] = *(Blk8_8017B238 *)src; + *(Blk8_8017B238 *)&buf[8] = *(Blk8_8017B238 *)(src + 8); + } else { + s32 a1addr = (s32)&D_8018DD4C[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_8018DD4C[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801F606C; + s16 *p78C = &D_801F6064; + *(Blk8_8017B238 *)p794 = *(Blk8_8017B238 *)&buf[0]; + *(Blk8_8017B238 *)p78C = *(Blk8_8017B238 *)&buf[8]; + func_8012A018((s32)func_8017BE60, 0); + D_8012694C = 0; + D_801F62F8 = 1; + D_801F5FF4 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16; /* 16-byte stride array element */ + + + +s32 func_8017B368(s32 param) +{ + + extern s16 D_801F5FF4; + extern s16 D_801F62F8; + extern void func_8017BA3C(s32 param_1, s32 param_2); + extern void func_8012F214(s32 a0, s32 a1, s32 a2); + extern SV4_8017B368 D_801F6014; + extern SV4_8017B368 D_801F601C; + extern s16 D_801F606C; + extern s16 D_801F6064; + extern u16 D_8018DD4C; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801F6014; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801F601C; + } else { + s32 ax = (s32)&((Pair16 *)&D_8018DD4C)[n].x; + s32 ay = (s32)&((Pair16 *)&D_8018DD4C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801F606C) = loc0; + (*(SV4_8017B368 *)&D_801F6064) = loc1; + D_801F62F8 = 1; + D_801F5FF4 = 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_801F6014; + extern SV4_8017B368 D_801F601C; + extern s16 D_801F606C; + extern s16 D_801F6064; + extern u16 D_8018DD4C; + extern s16 D_801F5FF4; + extern s16 D_801F62F8; + 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_801F6014; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801F601C; + } else { + s32 ax = (s32)&((Pair16 *)&D_8018DD4C)[n].x; + s32 ay = (s32)&((Pair16 *)&D_8018DD4C)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801F606C) = loc0; + (*(SV4_8017B368 *)&D_801F6064) = loc1; + D_801F62F8 = 1; + D_801F5FF4 = 0x1E; + D_80126990 = (*(SV4_8017B368 *)&D_801F606C).a; + D_80126994 = (*(SV4_8017B368 *)&D_801F606C).b; + D_80126998 = (*(SV4_8017B368 *)&D_801F606C).c; + D_80126984 = (*(SV4_8017B368 *)&D_801F6064).a; + D_80126988 = (*(SV4_8017B368 *)&D_801F6064).b; + D_8012698C = (*(SV4_8017B368 *)&D_801F6064).c; +} + + +INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_8017AE2C", func_8017B614); + + + +// @class: plumbing +// @stuck: none — MATCH + + + +void func_8017B7A8(void) +{ + + 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_801F5FF4; + extern s16 D_801F606C; + extern s16 D_801F606E; + extern s16 D_801F6070; + extern s16 D_801F6064; + extern s16 D_801F6066; + extern s16 D_801F6068; + D_8012694C = 1; + D_801F5FF4 = 0; + D_801F606C = (s16) D_80114F30; + D_801F606E = (s16) D_80114F34; + D_801F6070 = (s16) D_80114F38; + D_801F6064 = (s16) D_80114F24; + D_801F6066 = (s16) D_80114F28; + D_801F6068 = (s16) D_80114F2C; +} + + + + +void func_8017B824(void) { + + extern s32 D_801151D4; + extern s16 D_801F6084; + extern s16 D_801F6086; + extern s16 D_801F6088; + extern s16 D_801F608C; + extern s16 D_801F608E; + extern s16 D_801F6090; + D_801F6084 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801F6086 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801F6088 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801F608C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801F608E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801F6090 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + + + +void func_8017B880(void) +{ + + extern s16 D_801F6084; + extern s16 D_801F6086; + extern s16 D_801F6088; + extern s16 D_801F608C; + extern s16 D_801F608E; + extern s16 D_801F6090; + extern s32 D_80114F30; + extern s32 D_80114F34; + extern s32 D_80114F38; + extern s32 D_80114F24; + extern s32 D_80114F28; + extern s32 D_80114F2C; + D_80114F30 = D_801F6084; + D_80114F34 = D_801F6086; + D_80114F38 = D_801F6088; + D_80114F24 = D_801F608C; + D_80114F28 = D_801F608E; + D_80114F2C = D_801F6090; +} + + + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + + extern s16 D_801F6064; + extern s16 D_801F606C; + (*(S8_8017B8E8 *)&D_801F606C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801F6064) = ((S8_8017B8E8 *)src)[1]; +} + + + + +// @class: struct +// @stuck: none — MATCH (63 ins) + + + + +void func_8017B940(void) +{ + + extern u16 D_80126B5E; + extern u16 D_80126B62; + extern u16 D_80126B66; + extern u16 D_801F6074; + extern u16 D_801F6076; + extern u16 D_801F6078; + 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_801F5FF4; + extern short D_801F607C; + extern short D_801F607E; + extern short D_801F6080; + extern s16 D_801F606C; + extern s16 D_801F606E; + extern s16 D_801F6070; + extern s16 D_801F6064; + extern s16 D_801F6066; + extern s16 D_801F6068; + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801F6074); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801F6076); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801F6078); + (*(s16 *)&D_801F607C) = buf[0]; + (*(s16 *)&D_801F607E) = buf[1]; + (*(s16 *)&D_801F6080) = buf[2]; + D_801F606C = D_80114F30 + buf[0]; + D_801F5FF4 = 0; + D_801F606E = D_80114F34 + buf[1]; + D_801F6070 = D_80114F38 + buf[2]; + D_801F6064 = D_80114F24 + buf[0]; + D_801F6066 = D_80114F28 + buf[1]; + D_801F6068 = D_80114F2C + buf[2]; +} + + +INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_8017AE2C", func_8017BA3C); + +extern void func_8004914C(void *a0); +extern void func_800491AC(void *a0); +extern void func_80049CAC(s32 a0, s32 a1); + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + + extern s32 D_801F6014; + extern SV4_8017B368 D_801F601C; + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801F601C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801F6014) = 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_801F601C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + + +void func_8017BC38(int param_1) +{ + + extern void (*D_801F603C[10])(int); + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801F603C; + 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); + +void func_8017BCA0(int param_1) { + + extern s16 D_801F5FF4; + extern s16 D_801F62F8; + func_8017B0E4(param_1, 0xC); + D_801F5FF4 = D_801F5FF4 + 1; + if (D_801F5FF4 >= 0x1F) { + D_801F62F8 = 2; + } +} + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + + extern s16 D_801F5FF4; + extern s16 D_801F62F8; + func_8017B0E4(param_1, 6); + D_801F5FF4 = D_801F5FF4 + 1; + if (0x18 < D_801F5FF4) { + func_8012A4BC(); + D_801F62F8 = 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); + + + +void func_8017BD50(int param_1) +{ + + extern s16 D_801F5FF4; + extern void (*D_801F6038)(void); + extern short D_801F607C; + extern short D_801F607E; + extern short D_801F6080; + extern s16 D_801F62F8; + extern s32 D_80114F24; + extern s32 D_80114F28; + extern s32 D_80114F2C; + extern s32 D_80114F30; + extern s32 D_80114F34; + extern s32 D_80114F38; + func_8017B0E4(param_1, 6); + D_801F5FF4 = D_801F5FF4 + 1; + if (D_801F5FF4 >= 0x19) { + if (D_801F6038 != 0) { + (*D_801F6038)(); + } else { + D_80114F30 = D_80114F30 + D_801F607C; + D_80114F34 = D_80114F34 + D_801F607E; + D_80114F38 = D_80114F38 + D_801F6080; + D_80114F24 = D_80114F24 + D_801F607C; + D_80114F28 = D_80114F28 + D_801F607E; + D_80114F2C = D_80114F2C + D_801F6080; + func_8012A4BC(); + } + D_801F62F8 = 0; + } +} + + + + +void func_8017BE60(void *a0) { + + extern void (*D_8018DDEC[])(void); + D_8018DDEC[*(u8 *)((s32)a0 + 0x4)](); +} + + +void func_8017BE9C(void) { +} + +void func_8017BEA4(void) { +} + +void func_8017BEAC(void) { +} + +void func_8017BEB4(void) { +} + + + diff --git a/src/ov_SC07_007/ov_SC07_007_jr_8015C32C.c b/src/ov_SC07_007/ov_SC07_007_jr_8015C32C.c index 24ef75f45..e3e715cb3 100644 --- a/src/ov_SC07_007/ov_SC07_007_jr_8015C32C.c +++ b/src/ov_SC07_007/ov_SC07_007_jr_8015C32C.c @@ -9041,525 +9041,3 @@ DEFINE_func_8017ADE8() /* dedup: shared engine-core @0x8017ade8 (src/shared) */ DEFINE_func_8017AE08() /* dedup: shared engine-core @0x8017ae08 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_8015C32C", func_8017AE2C); - -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801C77D4; - extern s16 D_801C77D6; - extern s16 D_801C77D8; - extern s16 D_801C77CC; - extern s16 D_801C77CE; - extern s16 D_801C77D0; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C77D4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C77D6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C77D8, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C77CC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C77CE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C77D0, (s32)((s16)param_2)); -} - - -extern void func_8012A418(void); - -void func_8017B1D8(void) { - - extern u16 D_80126B5E; - extern u16 D_80126B62; - extern u16 D_80126B66; - extern s16 D_801C775C; - extern u16 D_801C77DC; - extern u16 D_801C77DE; - extern u16 D_801C77E0; - extern s16 D_801C7AC0; - func_8012A418(); - D_801C7AC0 = 0; - D_801C775C = 0; - D_801C77DC = D_80126B5E; - D_801C77DE = D_80126B62; - D_801C77E0 = D_80126B66; -} - - -extern void func_8012A018(s32 a, s32 b); -extern void func_8017B614(void *, s32); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B238; - -s32 func_8017B238(s32 param_1, s32 param_2) -{ - - extern s16 D_801C775C; - extern s16 D_801C7AC0; - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern s32 func_8017BE60(void *a0); - extern u8 D_80186870[]; - extern s16 D_801C77D4; - extern s16 D_801C77CC; - 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 *)&buf[0] = *(Blk8_8017B238 *)src; - *(Blk8_8017B238 *)&buf[8] = *(Blk8_8017B238 *)(src + 8); - } else { - s32 a1addr = (s32)&D_80186870[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80186870[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801C77D4; - s16 *p78C = &D_801C77CC; - *(Blk8_8017B238 *)p794 = *(Blk8_8017B238 *)&buf[0]; - *(Blk8_8017B238 *)p78C = *(Blk8_8017B238 *)&buf[8]; - func_8012A018((s32)func_8017BE60, 0); - D_8012694C = 0; - D_801C7AC0 = 1; - D_801C775C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16; /* 16-byte stride array element */ - - - -s32 func_8017B368(s32 param) -{ - - extern s16 D_801C775C; - extern s16 D_801C7AC0; - extern void func_8017BA3C(s32 param_1, s32 param_2); - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern SV4_8017B368 D_801C777C; - extern SV4_8017B368 D_801C7784; - extern s16 D_801C77D4; - extern s16 D_801C77CC; - extern u16 D_80186870; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801C777C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801C7784; - } else { - s32 ax = (s32)&((Pair16 *)&D_80186870)[n].x; - s32 ay = (s32)&((Pair16 *)&D_80186870)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801C77D4) = loc0; - (*(SV4_8017B368 *)&D_801C77CC) = loc1; - D_801C7AC0 = 1; - D_801C775C = 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_801C777C; - extern SV4_8017B368 D_801C7784; - extern s16 D_801C77D4; - extern s16 D_801C77CC; - extern u16 D_80186870; - extern s16 D_801C775C; - extern s16 D_801C7AC0; - 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_801C777C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801C7784; - } else { - s32 ax = (s32)&((Pair16 *)&D_80186870)[n].x; - s32 ay = (s32)&((Pair16 *)&D_80186870)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801C77D4) = loc0; - (*(SV4_8017B368 *)&D_801C77CC) = loc1; - D_801C7AC0 = 1; - D_801C775C = 0x1E; - D_80126990 = (*(SV4_8017B368 *)&D_801C77D4).a; - D_80126994 = (*(SV4_8017B368 *)&D_801C77D4).b; - D_80126998 = (*(SV4_8017B368 *)&D_801C77D4).c; - D_80126984 = (*(SV4_8017B368 *)&D_801C77CC).a; - D_80126988 = (*(SV4_8017B368 *)&D_801C77CC).b; - D_8012698C = (*(SV4_8017B368 *)&D_801C77CC).c; -} - - -INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_8015C32C", func_8017B614); - - - -// @class: plumbing -// @stuck: none — MATCH - - - -void func_8017B7A8(void) -{ - - 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_801C775C; - extern s16 D_801C77D4; - extern s16 D_801C77D6; - extern s16 D_801C77D8; - extern s16 D_801C77CC; - extern s16 D_801C77CE; - extern s16 D_801C77D0; - D_8012694C = 1; - D_801C775C = 0; - D_801C77D4 = (s16) D_80114F30; - D_801C77D6 = (s16) D_80114F34; - D_801C77D8 = (s16) D_80114F38; - D_801C77CC = (s16) D_80114F24; - D_801C77CE = (s16) D_80114F28; - D_801C77D0 = (s16) D_80114F2C; -} - - - - -void func_8017B824(void) { - - extern s32 D_801151D4; - extern s16 D_801C77EC; - extern s16 D_801C77EE; - extern s16 D_801C77F0; - extern s16 D_801C77F4; - extern s16 D_801C77F6; - extern s16 D_801C77F8; - D_801C77EC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801C77EE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801C77F0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801C77F4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801C77F6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801C77F8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - - - -void func_8017B880(void) -{ - - extern s16 D_801C77EC; - extern s16 D_801C77EE; - extern s16 D_801C77F0; - extern s16 D_801C77F4; - extern s16 D_801C77F6; - extern s16 D_801C77F8; - extern s32 D_80114F30; - extern s32 D_80114F34; - extern s32 D_80114F38; - extern s32 D_80114F24; - extern s32 D_80114F28; - extern s32 D_80114F2C; - D_80114F30 = D_801C77EC; - D_80114F34 = D_801C77EE; - D_80114F38 = D_801C77F0; - D_80114F24 = D_801C77F4; - D_80114F28 = D_801C77F6; - D_80114F2C = D_801C77F8; -} - - - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - - extern s16 D_801C77CC; - extern s16 D_801C77D4; - (*(S8_8017B8E8 *)&D_801C77D4) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801C77CC) = ((S8_8017B8E8 *)src)[1]; -} - - - - -// @class: struct -// @stuck: none — MATCH (63 ins) - - - - -void func_8017B940(void) -{ - - extern u16 D_80126B5E; - extern u16 D_80126B62; - extern u16 D_80126B66; - extern u16 D_801C77DC; - extern u16 D_801C77DE; - extern u16 D_801C77E0; - 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_801C775C; - extern short D_801C77E4; - extern short D_801C77E6; - extern short D_801C77E8; - extern s16 D_801C77D4; - extern s16 D_801C77D6; - extern s16 D_801C77D8; - extern s16 D_801C77CC; - extern s16 D_801C77CE; - extern s16 D_801C77D0; - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C77DC); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C77DE); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C77E0); - (*(s16 *)&D_801C77E4) = buf[0]; - (*(s16 *)&D_801C77E6) = buf[1]; - (*(s16 *)&D_801C77E8) = buf[2]; - D_801C77D4 = D_80114F30 + buf[0]; - D_801C775C = 0; - D_801C77D6 = D_80114F34 + buf[1]; - D_801C77D8 = D_80114F38 + buf[2]; - D_801C77CC = D_80114F24 + buf[0]; - D_801C77CE = D_80114F28 + buf[1]; - D_801C77D0 = D_80114F2C + buf[2]; -} - - -INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_8015C32C", func_8017BA3C); - -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_80049CAC(s32 a0, s32 a1); - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - - extern s32 D_801C777C; - extern SV4_8017B368 D_801C7784; - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C7784)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801C777C) = 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_801C7784) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - - -void func_8017BC38(int param_1) -{ - - extern void (*D_801C77A4[10])(int); - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801C77A4; - 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); - -void func_8017BCA0(int param_1) { - - extern s16 D_801C775C; - extern s16 D_801C7AC0; - func_8017B0E4(param_1, 0xC); - D_801C775C = D_801C775C + 1; - if (D_801C775C >= 0x1F) { - D_801C7AC0 = 2; - } -} - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - - extern s16 D_801C775C; - extern s16 D_801C7AC0; - func_8017B0E4(param_1, 6); - D_801C775C = D_801C775C + 1; - if (0x18 < D_801C775C) { - func_8012A4BC(); - D_801C7AC0 = 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); - - - -void func_8017BD50(int param_1) -{ - - extern s16 D_801C775C; - extern void (*D_801C77A0)(void); - extern short D_801C77E4; - extern short D_801C77E6; - extern short D_801C77E8; - extern s16 D_801C7AC0; - extern s32 D_80114F24; - extern s32 D_80114F28; - extern s32 D_80114F2C; - extern s32 D_80114F30; - extern s32 D_80114F34; - extern s32 D_80114F38; - func_8017B0E4(param_1, 6); - D_801C775C = D_801C775C + 1; - if (D_801C775C >= 0x19) { - if (D_801C77A0 != 0) { - (*D_801C77A0)(); - } else { - D_80114F30 = D_80114F30 + D_801C77E4; - D_80114F34 = D_80114F34 + D_801C77E6; - D_80114F38 = D_80114F38 + D_801C77E8; - D_80114F24 = D_80114F24 + D_801C77E4; - D_80114F28 = D_80114F28 + D_801C77E6; - D_80114F2C = D_80114F2C + D_801C77E8; - func_8012A4BC(); - } - D_801C7AC0 = 0; - } -} - - - - -void func_8017BE60(void *a0) { - - extern void (*D_80186910[])(void); - D_80186910[*(u8 *)((s32)a0 + 0x4)](); -} - - -void func_8017BE9C(void) { -} - -void func_8017BEA4(void) { -} - -void func_8017BEAC(void) { -} - -void func_8017BEB4(void) { -} - - diff --git a/src/ov_SC07_007/ov_SC07_007_jr_8017AE2C.c b/src/ov_SC07_007/ov_SC07_007_jr_8017AE2C.c new file mode 100644 index 000000000..9b4acb2ca --- /dev/null +++ b/src/ov_SC07_007/ov_SC07_007_jr_8017AE2C.c @@ -0,0 +1,3876 @@ +#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 { s32 w[8]; } Vec8; +typedef struct { s32 m[3][3]; s32 t[3]; } MATRIX; +typedef struct { s32 vx, vy, vz; } VECTOR; +typedef struct { s16 h[8]; } Buf; +typedef struct { char _b[8]; } M8; /* size 8, alignment 1 -> unaligned copy */ +typedef struct { u16 f0, f2, f4; s16 f6; } Box_80133784; +typedef struct { s16 x, y, z; } Vec3s; +typedef struct { s32 f0; } E4; +typedef struct { u16 f0; s16 f2; } Prim4; +typedef struct { s16 x; s16 y; } Hw4; +typedef struct { s32 f0; u32 *f4; s32 f8; s32 fC; s32 f10; } Rec20; +typedef struct { u8 d[0x60]; } Blk60; +typedef void (*code)(unsigned short *); +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4; +typedef struct { B8_80165140 a; B4 b; s32 used; } Slot; +struct W4 { u32 w; } __attribute__((packed, aligned(1))); +typedef struct { s16 ax, ay, a04, a06, bx, by, b0c, b0e, cx, cy, c14, c16, dx, dy, d1c, d1e, u0, v0, u1, v1, u2, v2, u3, v3; u8 r, g, b, pad33; s32 tag; u8 code, pad39, pad3a, pad3b; s32 pad3c; } Prim_B234; +typedef struct { u8 f0; u8 pad[0xc3]; } Slot_998; +typedef struct { s32 w[8]; } Blk32_998; +typedef struct { short vx, vy, vz, pad; } SVEC_L1; /* 8 bytes */ +typedef struct { int a[8]; } MTX_L1; /* 32 bytes */ +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 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 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 void func_80029444(void); +extern void func_800D1754(void); +extern void func_8014ED28(s32 _arg0); +extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); +extern int func_801288E8(int arg0); +extern int func_80128940(int arg0); +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 s32 func_80128ED8(s32 param_1, s32 *param_2); +extern void func_80128FAC(u16 *arg0); +extern s16 D_8011DB2C; +extern s16 D_8011DB30; +extern s32 D_80126AEC; +extern void func_80129010(void); +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 struct BigCopy D_80126DB8; +extern u8 D_80126948[]; +extern struct BigCopy D_80114EE8; +extern s32 D_80126E60[]; +extern s8 D_801150D6; +extern s8 D_801152C0; +extern u8 D_80127504; +extern void func_800144D4(void); +extern void func_80129C40(s32 _arg0); +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 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_80129CF8(void); +extern void func_8012A018(s32 a, s32 b); +extern void func_80129FF4(void); +extern void func_8012A048(void *a0, s32 a1, u8 a2); +extern void func_8012A018(s32 a0, s32 a1); +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 *memcpy(void *, const void *, unsigned int); +extern void func_8012A094(s32 a0); +extern void func_8012A100(s8 a0); +extern void func_8012A0E0(void); +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 void func_8012A2F4(void); +extern s16 D_80127080; +extern s16 D_801152C2; +extern void func_8012A304(s32 a0, s32 a1); +extern void func_8012A464(void); +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 s32 func_80047D3C(s32 a0); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 func_8012A6D0(void* a0, void* a1); +extern s16 func_8012A79C(s16 *a0, s16 *a1); +extern s16 func_8012A758(void); +extern void func_8012A7D4(void *arg0, void *arg1); +extern void func_8012AAAC(void); +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 void func_8012ACA0(void *arg0); +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 D_80126B58; +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 u16 D_801274E4[]; +extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +extern void 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 void 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 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 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_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(void); +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_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 void func_8012F828(int param_1); +extern void func_80131340(s32 a0); +extern void func_8012F87C(s32 a0); +extern void func_8012F8C8(int param_1); +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 void func_80131B14(void); +extern void func_8012FCC4(int param_1); +extern void func_8012FDA8(int param_1); +extern void func_80131170(s32 a0, s32 a1, s32 a2); +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 func_80130D0C(s32 a0); +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_801C64E8; +extern s32 D_801C64EC; +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 func_80131E38(u8 *a0); +extern void func_80131E7C(s32 a0); +extern void func_80131EE4(void); +extern void func_80131EEC(void *a0); +extern void func_80131F28(void *a0); +extern void func_80131F64(void *a0); +extern void func_80131FA0(void *a0); +extern void func_80131FDC(void *a0); +extern void func_801320D0(void); +extern void func_8001C214(int, int); +extern void func_801320D8(int param_1); +extern void func_80132144(int param_1); +extern void func_801321B0(int param_1); +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(s16 *a0, s16 *a1, s32 a2); +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 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_801345F8(s32 arg); +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 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_801365B8(void *arg0, s32 arg1, s32 arg2); +extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); +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 func_80136C54(void); +extern void func_80136D00(void); +extern void SetLineG2(void *); +extern void func_80136D08(s32 arg0, s32 arg1); +extern u16 D_80126CC4; +extern M2C_UNK func_800153CC(M2C_UNK, u16, M2C_UNK, M2C_UNK, s32, s32); +extern void func_80136DFC(void); +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 void func_80138BE0(s32 a0); +extern void func_80137BD8(s32 a0); +extern void func_8013A380(void); +extern void func_801379FC(void); +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 int func_80137D08(int arg0, int arg1, short arg2); +extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80137DD4(s32 ent, u8 *arg, u8 *work); +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 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 D_80127548[]; +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 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 s16 D_801269F4; +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_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 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); +extern void func_8013CA14(void); +extern void func_8013CABC(void); +extern void func_8013CAE8(void); +extern void func_8013CB20(void); +extern void func_8013CB5C(void); +extern void func_8013CF68(); +extern void func_8013D9B0(); +extern void func_8013D064(void); +extern s32 func_8013D13C(void); +extern void func_8013D164(void); +extern void func_8013D178(void); +extern void func_8013D330(void); +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 void func_8013DBE4(int param_1); +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 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_801754A8(void); +extern s32 func_80014ED4(s32); +extern s32 func_80015018(s32); +extern void func_800190AC(void); +extern void func_80141C04(void); +extern void func_8013E5E8(void); +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_8011511A; +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 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 void func_8013F138(void); +extern void func_800D2624(void); +extern unsigned short D_80115114; +extern unsigned short D_80115118; +extern void func_8013F1BC(void); +extern void func_80141C0C(s32); +extern u16 D_8011511C; +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_8011514E; +extern u8 D_80115152; +extern u8 D_80115158[]; /* macro-canonical (§8e) */ +extern u8 D_8011515C; /* macro-canonical (§8e) */ +extern u8 D_80183FCC[]; +extern u8 D_80183FE4[]; +extern u16 D_80183EE8[]; +extern s32 func_80029178(s32 arg); +extern s32 func_800291B4(s32 arg); +extern void func_8014AA04(s32 a0); +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) */ +extern s32 func_8013F350(void); +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_800D27DC(s32, s32 *, void *, s32, s32); +extern s32 *func_800D29F8(s32, s32, void *, s32, s32); +extern void func_8013FAF8(s16 arg0, s16 arg1); +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); +extern int func_800D2CA8(int, int); +extern void func_800D2D10(int, int, void *, int); +extern int func_80029FE4(void); +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 int func_8002A998(void); +extern int func_8002A9DC(void); +extern int func_8002A728(void); +extern int func_8002A76C(void); +extern int func_80029FD4(void); +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); +extern int func_80141100(int param_1); +extern void func_800291A0(s32, s32); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_801415C0(s32 param_1, s32 param_2); +extern u8 D_80115148[]; +extern u8 D_80115149[]; +extern u8 D_80115158[]; +extern u8 D_8011514D; +extern u8 D_8011515C; +extern s32 func_800D11F0(s32 a0); +extern s32 func_800D1658(s32 a0); +extern s32 func_801416D4(s16 param_1); +extern void func_8001903C(void); +extern void func_801417C4(void); +extern u8 D_800B9A16; +extern u16 D_80115114; +extern void func_801417F8(void); +extern volatile u16 D_8011511A; +extern u16 D_8011512E; /* §17a-1: canonical width (jr_8013F350 TUs decl u16); byte-neutral here (only use is store-0) */ +extern s32 func_80029178(s32 a0); +extern void func_801418F8(void); +extern void func_80141A60(void); +extern void func_80141C0C(s32 param_1); +extern s32 func_80015144(void); +extern unsigned char D_80112C04[]; +extern unsigned char D_80112C50[]; +extern unsigned char D_80112C9C[]; +extern unsigned char D_80112CE8[]; +extern unsigned char D_80112D38[]; +extern unsigned char D_80112D78[]; +extern unsigned char D_80112DBC[]; +extern unsigned char D_80112DF4[]; +extern unsigned char D_80112E14[]; +extern unsigned char D_80112E40[]; +extern unsigned char D_80112E6C[]; +extern unsigned char D_80112EBC[]; +extern unsigned char D_80112F0C[]; +extern unsigned char D_80112F48[]; +extern unsigned char D_80112F9C[]; +extern unsigned char D_80112FDC[]; +extern unsigned char D_8011302C[]; +extern unsigned char D_80113074[]; +extern unsigned char D_801130B8[]; +extern unsigned char D_801130E8[]; +extern unsigned char D_80113138[]; +extern unsigned char D_8011317C[]; +extern unsigned char D_801131A8[]; +extern unsigned char D_801131E8[]; +extern unsigned char D_80113214[]; +extern unsigned char D_80113254[]; +extern unsigned char D_80113278[]; +extern unsigned char D_801132B8[]; +extern unsigned char D_801132E4[]; +extern unsigned char D_80113324[]; +extern unsigned char D_80113360[]; +extern unsigned char D_801133A4[]; +extern unsigned char D_801133F4[]; +extern unsigned char D_80113440[]; +extern unsigned char D_80113474[]; +extern unsigned char D_801134B0[]; +extern unsigned char D_801134FC[]; +extern unsigned char D_80113530[]; +extern unsigned char D_80113554[]; +extern unsigned char D_801135A8[]; +extern unsigned char D_80113600[]; +extern unsigned char D_80113650[]; +extern unsigned char D_80113694[]; +extern unsigned char D_801136DC[]; +extern unsigned char D_80113724[]; +extern unsigned char D_80113744[]; +extern unsigned char D_80113770[]; +extern unsigned char D_80113794[]; +extern unsigned char D_801137D8[]; +extern unsigned char D_8011381C[]; +extern unsigned char D_8011383C[]; +extern unsigned char D_8011386C[]; +extern unsigned char D_801138A4[]; +extern unsigned char D_801138D0[]; +extern unsigned char D_80113900[]; +extern unsigned char D_80113944[]; +extern unsigned char D_80113964[]; +extern unsigned char D_8011399C[]; +extern unsigned char D_801139E8[]; +extern unsigned char D_80113A28[]; +extern unsigned char D_80113A50[]; +extern unsigned char D_80113A84[]; +extern unsigned char D_80113AB0[]; +extern unsigned char D_80113AE0[]; +extern unsigned char D_80113B34[]; +extern unsigned char D_80113B68[]; +extern unsigned char D_80113BA4[]; +extern unsigned char D_80113BC0[]; +extern unsigned char D_80113BF0[]; +extern unsigned char D_80113C20[]; +extern unsigned char D_80113C3C[]; +extern unsigned char D_80113C7C[]; +extern unsigned char * func_80141CA4(void); +extern void func_80142414(s32 a0, s16 a1); +extern void func_80142454(s32 a0); +extern void func_801424E4(short *param_1); +extern void func_801425CC(void *a0); +extern void func_8001CA1C(s32 a0, s32 a1); +extern s32 func_8012AD50(void *a0); +extern void func_80142608(s32 param_1); +extern void func_801426D4(s32 a0); +extern void func_80142740(int param_1); +extern void func_80142778(u8 *a1); +extern void func_801427DC(void); +extern void func_801427E4(void); +extern void func_801427EC(int param_1); +extern s32 func_80142DB8(s32 *a0); +extern s32 func_80142D38(s32 *a0); +extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); +extern void func_801428CC(s32 *a0); +extern void func_8014292C(int param_1); +extern void func_80142978(int param_1); +extern void func_801429C4(int param_1); +extern void func_80142A80(void); +extern void func_80142C7C(void); +extern void func_80142C84(s32 a0); +extern void func_80142C9C(s32 * arg0); +extern void func_80142B2C(void *arg0); +extern void func_80142DC4(int param_1); +extern void func_80142E38(int param_1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_80142EC0(s32 param_1); +extern void func_80142FFC(s32 *a0); +extern void func_8014305C(int param_1); +extern void func_80143188(s32 *a0); +extern int func_8001CA88(int, void *); +extern void func_800233CC(void *, unsigned short); +extern void func_801431E8(s32 param_1); +extern void func_80142C9C(s32 *a0); +extern void func_801432FC(s32 *a0); +extern void func_80143390(s32 *a0); +extern void func_80143458(s32 param_1); +extern void func_8014358C(s32 param_1); +extern s32 rand(void); +extern void func_80143640(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_801437D8(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80143970(s32 a0); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern void func_80143994(s32 a0, s32 a1); +extern void func_801439C0(u8 *a0); +extern s16 D_801152AC; +extern s16 D_801152AA; +extern void func_801439FC(s32 a0); +extern void func_80143B30(void *a0); +extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_80143B6C(s32 arg0, s32 arg1); +extern void func_80143BDC(u16 *a0); +extern void func_80143C38(void *a0); +extern void func_80143C74(s32 a0, s32 a1); +extern void func_80143C98(void *a0); +extern void func_80143E68(void *a0); +extern void func_80143EA4(void); +extern void func_80143EAC(void); +extern void func_80143EB4(void); +extern s32 func_8004787C(s32 a0); +extern void func_80143EBC(s32 a0); +extern void func_80144054(void *a0); +extern void func_801442F8(int param_1); +extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80144364(int param_1); +extern u8 D_800D387C[]; +extern u8 D_800D3888[]; +extern void func_80144558(u8 *param_1); +extern void func_801446A4(int param_1); +extern void func_8014477C(void *param_1); +extern void func_80144880(s32 param_1); +extern void func_80144988(s32 a0); +extern void func_801449C8(void *a0); +extern void func_80144A04(s32 *a0); +extern void func_80144A2C(void *a0); +extern void func_80144A68(s32 *a0); +extern void func_80144A90(void); +extern void func_80144A98(u8 *a0); +extern void func_80144B14(void); +extern void func_80144AEC(s32 *a0); +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 void func_80145B24(void); +extern void func_80145934(void); +extern void func_80145A2C(void); +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 void func_80145BF8(void); +extern void func_80145C54(void); +extern void func_80146014(s32 a0); +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(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 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_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_80146C3C(u8 *a0); +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 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_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 volatile s32 D_80127090; +extern volatile s32 D_80127094; +extern volatile s32 D_80127098; +extern void func_80147F78(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80148038(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 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_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_80148D44(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 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 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 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_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 func_80149FB0(s32 a0); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8014A1B0(s32 a0, s32 a1); +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_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_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 u8 D_80078E78[]; +extern s32 func_8016F1C4(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_8014BD60(s32 a0, s32 a1); +extern void func_8014B084(void); +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +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 void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +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_80019064(void *a0); +extern s32 D_80078E98; +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_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_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 a0, s32 a1, void* a2); +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 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 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 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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +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 void func_8014DF94(s32 arg0); +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); /* canonical (engine_core.h:11555) */ +extern s32 func_8014E284(s32 a0, s16 *arg1, s16 *arg2); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E48C(s32 a0); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +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_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014ED80(struct SubED80 *a0); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014F4C0(u8 *a0); +extern void func_8014F468(void); +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern void func_8014FA04(s32 a0); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern s32 func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_801502EC(s32 e, void *a1, void *a2); +extern s32 func_80150460(s32 e, s32 a1); +extern s32 func_80150170(void *e); +extern s32 func_80150460(s32 a, s32 b); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern void func_801504D8(u16 *a0); +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 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 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B28(int 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_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 void 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 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 func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +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 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 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 func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +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 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 func_80152C80(s32* a0); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +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 func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern u8 D_80062C04[]; +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 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 void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +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_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_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 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 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 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(void *a0); +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 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 a0, s32 a1, s32 a2, s32 a3); +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 func_8014CC28(s32 a0); /* defined */ +extern void 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 void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_80157808(s32 a0); +extern void func_801577C8(int param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +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 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 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 func_80158038(void *); +extern void func_80158000(void *a0); +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 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 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 void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +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 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 int rand(void); +extern void func_80158F00(int param_1); +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 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 u8 D_80110C3C[]; +extern void func_80159120(s32 a0); +extern void func_801592CC(s32 *a0); +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void func_80159698(void *a0); +extern s32 func_801596D4(void *a0); +extern void func_80174B6C(void); +extern void func_8013C938(void); +extern void func_8002850C(s32, s32, s32); +extern void func_80028620(s32, void *); +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 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 func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +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 func_8015A2A0(s32 a0); +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 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 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(void); +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 func_8015C0C4(s32); +extern void func_8015C08C(s32 a0); +extern void func_8014D738(void); +extern s32 func_8015C128(s32 param_1); +extern s32 func_801496D4(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 void func_80149954(s32 a0); +extern s32 func_80149A64(s32*); +extern void func_800CCCC0(s32 a0); +extern void func_80147A84(s32 a0); +extern void func_801473EC(s32*); +extern void func_8014CC28(s32); +extern void func_8014F3E8(s32); +extern void func_80159BE4(s32 a0); +extern void func_8015C6E0(s32*); +extern void func_8015C32C(s32 arg0); +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 func_8015C788(s32); +extern void func_8015C750(s32 a0); +extern s32 func_80161B18(void *a0); +extern s32 func_80161B84(void *a0); +extern void func_80161240(void *a0); +extern void func_80161C24(s32, s32); +extern void func_8015C7E4(u16 *param_1); +extern void func_8015C944(int param_1); +extern void func_8015CA28(u16 *param_1); +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 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 func_8014E6A0(void); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +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 void func_80154150(int, int); +extern void func_80149374(int, int); +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_8015F89C(void *arg0); +extern void func_8015F9A4(void *arg0); +extern int func_8015DD74(int); +extern void func_8015DBD4(void *arg0); +extern int func_8015DC84(int a0); +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 void func_8015E5B0(u8*); +extern void func_8015E344(u16 *param_1); +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern s32 func_8013C9C4(s32 *a0); +extern void func_8015E5B0(u8 *self); +extern void func_8015E698(u16 *param_1); +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 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 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_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_80146DB8(s32*, s32*); +extern void func_80146E90(s32*, s32); +extern s32 func_801725B8(u8*); +extern void func_80019064(void*); +extern void func_801484B0(s32, s32); +extern void func_80148534(s32, s32); +extern void func_8015F448(s32 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_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); +extern void func_80147078(s32 *, s16); +extern void func_80159B70(void *); +extern void func_8015F948(s32 *param_1); +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 void func_8015FD74(int param_1); +extern u8 func_80165700(s32 a0, s32 a1); +extern void func_8015FDCC(s32 a0); +extern void func_8015FE70(u16 *param_1); +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_801602A4(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_80160534(u8 *p); +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_80160A74(s32 *a0); +extern void func_80160920(unsigned short *param_1); +extern void func_801609B8(u16 *param_1); +extern void func_80160A28(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 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_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 void func_80161C98(int param_1, u32 param_2); +extern void func_80161E08(s32); +extern s32 func_80162438(s32); +extern void func_800D1734(void *); +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 void func_8016216C(void); +extern s32 func_801621CC(s32 arg0); +extern void func_801622C4(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 void func_80162760(void); +extern void func_801627C0(void); +extern void func_80162834(void *a0); +extern void func_80162968(s32 a0); +extern s32 func_80162ACC(u8 *a0); +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_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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +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 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 func_80164744(s32 param_1); +extern void func_80164A74(s32 *a0); +extern void func_80164930(s32 a); +extern void func_801647A4(int param_1); +extern void func_80164ACC(); +extern void func_80164864(void *a0); +extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80164ACC(s32 a0); +extern void func_80164BA0(void *a0); +extern void func_8001CD50(s32 a0, s32 a1); +extern void func_80164DD0(s32 a0); +extern void func_80164DB0(void); +extern void func_80164BDC(s32 param_1); +extern s32 func_80164E40(void); +extern void func_80164CD4(u8 *a0); +extern void func_80164D4C(void *arg0); +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 void func_80165240(void *param_1, void *param_2, void *param_3); +extern void func_801651B8(void * param_1); +extern void func_80016ED4(void *a0); +extern s32 func_80017DC4(void *a0, void *a1); +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 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 func_801656D0(s32 a0, s32 a1); +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 u8 D_80078EC2; +extern s32 func_80165A50(s32 _arg0); +extern void func_80165AC8(void); +extern void func_80165A78(s32 arg0); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(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 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_80166018(void *a0); +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 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_801665B4(); +extern void func_80146C3C(); +extern void func_80166438(u8 *a0); +extern void func_80166618(void *a0); +extern void func_80166654(void *a0); +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 void func_80048EAC(void *a0, void *a1); +extern s32 func_801670E4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_801678B4(void *a0); +extern void func_80167A9C(void *a0); +extern void func_80167AD8(void); +extern int func_80029178(int); +extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); +extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); +extern void func_80166F58(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_801681FC(s32 param_1); +extern void func_80168430(s32 param_1); +extern void func_80168640(s32 a0); +extern Blk20 D_800AE620; +extern s32 RotMatrixX(s32 a0, void *a1); +extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80168664(void *arg0); +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_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168AA8(void *a0); +extern void func_80168AE4(s32 a0); +extern void func_80168D58(void *a0); +extern void func_80168F40(void *arg0); +extern void func_8016901C(void *a0); +extern void func_801693CC(void *a0); +extern void func_80169584(s32 param_1); +extern void func_801696D8(s32 a0, s32 a1); +extern void func_80169830(void *a0); +extern s32 func_80169A4C(s32 a0, s32 a1); +extern void func_80169B80(void *a0); +extern void func_80169F00(void *a0); +extern void func_8016A020(void *a0); +extern void func_8016A05C(void *a0); +extern void func_8016A700(void *a0); +extern s32 func_80016A5C(); +extern s32 func_8016A8FC(s32 a0); +extern void func_8016AB30(void *a0); +extern void func_8016B234(); +extern void func_800D22E4(s32 a0); +extern void func_8016AFB0(s32 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 func_8016B4BC(void *a0); +extern int func_8016B9F8(int); +extern int func_8016B834(int, int); +extern void func_8016B91C(int); +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 void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +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 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void func_8016BBA4(void *a0); +extern void func_8016BF50(s32); +extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8016BD78(s32 param_1); +extern void func_8016BF34(void *a0); +extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +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 short func_8016CBC0(void); +extern void func_8016C998(s32 param_1); +extern void func_8016CB84(void *a0); +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 func_8016D1D8(int param_1); +extern void func_8016D428(void *a0); +extern void func_8016D464(u8 *a0); +extern void func_8016D4DC(s32 a0); +extern void func_8016D688(int param_1); +extern void func_8016DBD8(u8 *a0); +extern void func_8016DA30(int param_1); +extern s16 D_801C7300; +extern s16 D_801C7304; +extern u8 D_80186234[]; +extern u8 D_80186240[]; +extern void func_8016DC20(s16 *param_1); +extern void func_8016DEA4(void *a0); +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_8016E460(void *arg0, void *arg1); +extern void func_8016E5B8(void *a0); +extern void func_8016E778(); +extern void func_8016E688(void *a0); +extern void func_8016E6E4(s32 a0); +extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); +extern void func_8016E778(int param_1); +extern s32 D_80115218; +extern void func_8016E918(short param_1, short param_2); +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern void func_8016EB3C(s32 p); +extern void func_8016EBA8(u8 *param_1); +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 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); +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 func_8016F6E0(void *a0); +extern s32 func_80171990(u8 *a0); +extern void func_8016F764(void *a0); +extern void func_8016F71C(u8 *a0); +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 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 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 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 func_8016FA84(void *a0); +extern void func_8016FB10(void *a0); +extern void func_8016FAC0(u8 *a0); +extern void func_8016FB50(void *a0); +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 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 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 func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +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 func_80170150(void *a0); +extern void func_801701C8(u8 *a0); +extern void func_8017018C(u8 *a0); +extern void func_801701C8(u8 * a0); +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 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 func_801703E0(void *a0); +extern void func_8017044C(u8 *a0); +extern void func_8017041C(u8 *a0); +extern void func_8017044C(u8 * a0); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +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 func_801705F8(void *a0); +extern void func_80170670(void *a0); +extern void func_80170634(u8 *a0); +extern void func_801706AC(void *a0); +extern void func_80170718(void *a0); +extern void func_801706E8(u8 *a0); +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 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 func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +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 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 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 func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +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 func_80171120(void *a0); +extern void func_8017118C(u8 *a0); +extern void func_8017115C(u8 *a0); +extern void func_8017118C(u8 * a0); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +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 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_8017248C(s32, s32); +extern s32 ratan2(s32, s32); +extern void func_80172170(s32, s32); +extern void func_80146D90(s32); +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_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 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 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_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 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 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 s32 func_8016F0AC(); +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 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(s32); +extern s32 func_801749A8(s32 a0); +extern void func_80174BBC(void *a0); +extern void func_80174BF4(void *a0); +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 s32 func_80175268(s32); +extern void func_80175184(s32* arg0); +extern s32 func_80175218(void *a0); +extern void func_801751D8(void *a0); +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_8011F7AD; +extern u8 D_8011F7AE; +extern void func_80175414(s32 _arg0); +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 void func_80175590(void *arg0); +extern void func_801757A0(s32); +extern void func_80175624(void *a0); +extern void func_801757E0(int); +extern void func_80175668(void); +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_801775E0(s32 param_1, s32 param_2); +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 void func_80178438(u16 *arg0); +extern void func_801787D4(void); +extern void func_8017869C(s32 a0); +extern s32 D_8011DB08; +extern void func_8017849C(void); +extern void func_8013E4B4(void); +extern s16 D_801270C4; +extern s16 D_801270C2; +extern u8 D_801270C6; +extern u8 D_801270C7; +extern void func_80178744(s32 a0, s32 a1); +extern void func_80178840(); +extern void func_80178840(int param_1); +extern s32 func_801788B8(s32 arg0, s32 arg1); +extern int func_801789AC(void); +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 void func_80178BF8(s32 _unused0, s32 _unused1); +extern M2C_UNK func_80178D40(s32 arg0, s32 arg1); +extern void func_80178CBC(s32 arg0, s32 arg1); +extern void func_80178D18(void); +extern void func_80179B28(s32 a0); +extern void func_80179B74(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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 void func_8017A094(s32 arg0); +extern void func_8017A0C4(s32 arg0); +extern void func_8017A0F4(void); +extern void func_8017A11C(void); +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 s32 func_8017A3B0(void); +extern int func_800D0CA0(int); +extern int func_8001AAA0(void); +extern int func_800D0CE0(void); +extern int func_8017A3D8(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 void func_8012BE98(s32, u16*); +extern s32 func_80012A60(s32 a0, s32 a1); + + +void func_8017AE2C(s32 param_1) { + + extern s16 D_801C7A90; + extern s16 D_801C7A92; + extern s16 D_801C7A9C; + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801C7A90; + + 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_801C7A9C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801C7A90+0xC == &D_801C7A9C; distinct rtx defeats gcc's address-CSE + so BE98's arg rematerializes instead of sharing the store's reg (byte-gate). */ + if (((s32 (*)(s32, u16 *))func_8012BE98)(pv, (u16 *)((s32)&D_801C7A90 + 0xC)) < 0x101) { + D_801C7A90 = 0; + D_801C7A92 = 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_801C7A9C); + 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 (((s32 (*)(s32, u16 *))func_8012BE98)(pv, (u16 *)((s32)&D_801C7A90 + 0xC)) < 0x101) { + D_801C7A90 = 0; + D_801C7A92 = 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; +} + +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); + +// @class: plumbing +// @stuck: none — MATCH + + +void func_8017B0E4(int param_1, int param_2) +{ + extern s16 D_801C77D4; + extern s16 D_801C77D6; + extern s16 D_801C77D8; + extern s16 D_801C77CC; + extern s16 D_801C77CE; + extern s16 D_801C77D0; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801C77D4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801C77D6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801C77D8, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801C77CC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801C77CE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801C77D0, (s32)((s16)param_2)); +} + + +extern void func_8012A418(void); + +void func_8017B1D8(void) { + + extern u16 D_80126B5E; + extern u16 D_80126B62; + extern u16 D_80126B66; + extern s16 D_801C775C; + extern u16 D_801C77DC; + extern u16 D_801C77DE; + extern u16 D_801C77E0; + extern s16 D_801C7AC0; + func_8012A418(); + D_801C7AC0 = 0; + D_801C775C = 0; + D_801C77DC = D_80126B5E; + D_801C77DE = D_80126B62; + D_801C77E0 = D_80126B66; +} + + +extern void func_8012A018(s32 a, s32 b); +extern void func_8017B614(void *, s32); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B238; + +s32 func_8017B238(s32 param_1, s32 param_2) +{ + + extern s16 D_801C775C; + extern s16 D_801C7AC0; + extern void func_8012F214(s32 a0, s32 a1, s32 a2); + extern s32 func_8017BE60(void *a0); + extern u8 D_80186870[]; + extern s16 D_801C77D4; + extern s16 D_801C77CC; + 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 *)&buf[0] = *(Blk8_8017B238 *)src; + *(Blk8_8017B238 *)&buf[8] = *(Blk8_8017B238 *)(src + 8); + } else { + s32 a1addr = (s32)&D_80186870[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80186870[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801C77D4; + s16 *p78C = &D_801C77CC; + *(Blk8_8017B238 *)p794 = *(Blk8_8017B238 *)&buf[0]; + *(Blk8_8017B238 *)p78C = *(Blk8_8017B238 *)&buf[8]; + func_8012A018((s32)func_8017BE60, 0); + D_8012694C = 0; + D_801C7AC0 = 1; + D_801C775C = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16; /* 16-byte stride array element */ + + + +s32 func_8017B368(s32 param) +{ + + extern s16 D_801C775C; + extern s16 D_801C7AC0; + extern void func_8017BA3C(s32 param_1, s32 param_2); + extern void func_8012F214(s32 a0, s32 a1, s32 a2); + extern SV4_8017B368 D_801C777C; + extern SV4_8017B368 D_801C7784; + extern s16 D_801C77D4; + extern s16 D_801C77CC; + extern u16 D_80186870; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801C777C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801C7784; + } else { + s32 ax = (s32)&((Pair16 *)&D_80186870)[n].x; + s32 ay = (s32)&((Pair16 *)&D_80186870)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801C77D4) = loc0; + (*(SV4_8017B368 *)&D_801C77CC) = loc1; + D_801C7AC0 = 1; + D_801C775C = 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_801C777C; + extern SV4_8017B368 D_801C7784; + extern s16 D_801C77D4; + extern s16 D_801C77CC; + extern u16 D_80186870; + extern s16 D_801C775C; + extern s16 D_801C7AC0; + 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_801C777C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801C7784; + } else { + s32 ax = (s32)&((Pair16 *)&D_80186870)[n].x; + s32 ay = (s32)&((Pair16 *)&D_80186870)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801C77D4) = loc0; + (*(SV4_8017B368 *)&D_801C77CC) = loc1; + D_801C7AC0 = 1; + D_801C775C = 0x1E; + D_80126990 = (*(SV4_8017B368 *)&D_801C77D4).a; + D_80126994 = (*(SV4_8017B368 *)&D_801C77D4).b; + D_80126998 = (*(SV4_8017B368 *)&D_801C77D4).c; + D_80126984 = (*(SV4_8017B368 *)&D_801C77CC).a; + D_80126988 = (*(SV4_8017B368 *)&D_801C77CC).b; + D_8012698C = (*(SV4_8017B368 *)&D_801C77CC).c; +} + + +INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_8017AE2C", func_8017B614); + + + +// @class: plumbing +// @stuck: none — MATCH + + + +void func_8017B7A8(void) +{ + + 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_801C775C; + extern s16 D_801C77D4; + extern s16 D_801C77D6; + extern s16 D_801C77D8; + extern s16 D_801C77CC; + extern s16 D_801C77CE; + extern s16 D_801C77D0; + D_8012694C = 1; + D_801C775C = 0; + D_801C77D4 = (s16) D_80114F30; + D_801C77D6 = (s16) D_80114F34; + D_801C77D8 = (s16) D_80114F38; + D_801C77CC = (s16) D_80114F24; + D_801C77CE = (s16) D_80114F28; + D_801C77D0 = (s16) D_80114F2C; +} + + + + +void func_8017B824(void) { + + extern s32 D_801151D4; + extern s16 D_801C77EC; + extern s16 D_801C77EE; + extern s16 D_801C77F0; + extern s16 D_801C77F4; + extern s16 D_801C77F6; + extern s16 D_801C77F8; + D_801C77EC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801C77EE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801C77F0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801C77F4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801C77F6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801C77F8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + + + +void func_8017B880(void) +{ + + extern s16 D_801C77EC; + extern s16 D_801C77EE; + extern s16 D_801C77F0; + extern s16 D_801C77F4; + extern s16 D_801C77F6; + extern s16 D_801C77F8; + extern s32 D_80114F30; + extern s32 D_80114F34; + extern s32 D_80114F38; + extern s32 D_80114F24; + extern s32 D_80114F28; + extern s32 D_80114F2C; + D_80114F30 = D_801C77EC; + D_80114F34 = D_801C77EE; + D_80114F38 = D_801C77F0; + D_80114F24 = D_801C77F4; + D_80114F28 = D_801C77F6; + D_80114F2C = D_801C77F8; +} + + + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + + extern s16 D_801C77CC; + extern s16 D_801C77D4; + (*(S8_8017B8E8 *)&D_801C77D4) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801C77CC) = ((S8_8017B8E8 *)src)[1]; +} + + + + +// @class: struct +// @stuck: none — MATCH (63 ins) + + + + +void func_8017B940(void) +{ + + extern u16 D_80126B5E; + extern u16 D_80126B62; + extern u16 D_80126B66; + extern u16 D_801C77DC; + extern u16 D_801C77DE; + extern u16 D_801C77E0; + 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_801C775C; + extern short D_801C77E4; + extern short D_801C77E6; + extern short D_801C77E8; + extern s16 D_801C77D4; + extern s16 D_801C77D6; + extern s16 D_801C77D8; + extern s16 D_801C77CC; + extern s16 D_801C77CE; + extern s16 D_801C77D0; + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801C77DC); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801C77DE); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801C77E0); + (*(s16 *)&D_801C77E4) = buf[0]; + (*(s16 *)&D_801C77E6) = buf[1]; + (*(s16 *)&D_801C77E8) = buf[2]; + D_801C77D4 = D_80114F30 + buf[0]; + D_801C775C = 0; + D_801C77D6 = D_80114F34 + buf[1]; + D_801C77D8 = D_80114F38 + buf[2]; + D_801C77CC = D_80114F24 + buf[0]; + D_801C77CE = D_80114F28 + buf[1]; + D_801C77D0 = D_80114F2C + buf[2]; +} + + +INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_8017AE2C", func_8017BA3C); + +extern void func_8004914C(void *a0); +extern void func_800491AC(void *a0); +extern void func_80049CAC(s32 a0, s32 a1); + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + + extern s32 D_801C777C; + extern SV4_8017B368 D_801C7784; + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801C7784)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801C777C) = 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_801C7784) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + + +void func_8017BC38(int param_1) +{ + + extern void (*D_801C77A4[10])(int); + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801C77A4; + 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); + +void func_8017BCA0(int param_1) { + + extern s16 D_801C775C; + extern s16 D_801C7AC0; + func_8017B0E4(param_1, 0xC); + D_801C775C = D_801C775C + 1; + if (D_801C775C >= 0x1F) { + D_801C7AC0 = 2; + } +} + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + + extern s16 D_801C775C; + extern s16 D_801C7AC0; + func_8017B0E4(param_1, 6); + D_801C775C = D_801C775C + 1; + if (0x18 < D_801C775C) { + func_8012A4BC(); + D_801C7AC0 = 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); + + + +void func_8017BD50(int param_1) +{ + + extern s16 D_801C775C; + extern void (*D_801C77A0)(void); + extern short D_801C77E4; + extern short D_801C77E6; + extern short D_801C77E8; + extern s16 D_801C7AC0; + extern s32 D_80114F24; + extern s32 D_80114F28; + extern s32 D_80114F2C; + extern s32 D_80114F30; + extern s32 D_80114F34; + extern s32 D_80114F38; + func_8017B0E4(param_1, 6); + D_801C775C = D_801C775C + 1; + if (D_801C775C >= 0x19) { + if (D_801C77A0 != 0) { + (*D_801C77A0)(); + } else { + D_80114F30 = D_80114F30 + D_801C77E4; + D_80114F34 = D_80114F34 + D_801C77E6; + D_80114F38 = D_80114F38 + D_801C77E8; + D_80114F24 = D_80114F24 + D_801C77E4; + D_80114F28 = D_80114F28 + D_801C77E6; + D_80114F2C = D_80114F2C + D_801C77E8; + func_8012A4BC(); + } + D_801C7AC0 = 0; + } +} + + + + +void func_8017BE60(void *a0) { + + extern void (*D_80186910[])(void); + D_80186910[*(u8 *)((s32)a0 + 0x4)](); +} + + +void func_8017BE9C(void) { +} + +void func_8017BEA4(void) { +} + +void func_8017BEAC(void) { +} + +void func_8017BEB4(void) { +} + + + diff --git a/src/ov_SC07_008/ov_SC07_008_jr_8017A4AC.c b/src/ov_SC07_008/ov_SC07_008_jr_8017A4AC.c index 82b4ec664..8ba43d59d 100644 --- a/src/ov_SC07_008/ov_SC07_008_jr_8017A4AC.c +++ b/src/ov_SC07_008/ov_SC07_008_jr_8017A4AC.c @@ -2945,572 +2945,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC07_008/nonmatchings/ov_SC07_008_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801965AC; - extern s16 D_801965AE; - extern s16 D_801965B0; - extern s16 D_801965A4; - extern s16 D_801965A6; - extern s16 D_801965A8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801965AC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801965AE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801965B0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801965A4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801965A6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801965A8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80196534; -extern u16 D_801965B4; -extern u16 D_801965B6; -extern u16 D_801965B8; -extern s16 D_801966D0; - -void func_8017B1D8(void) { - func_8012A418(); - D_801966D0 = 0; - D_80196534 = 0; - D_801965B4 = D_80126B5E; - D_801965B6 = D_80126B62; - D_801965B8 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_80180C40[]; - extern s16 D_801965AC; - extern s16 D_801965A4; - 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_80180C40[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80180C40[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801965AC; - s16 *p78C = &D_801965A4; - *(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_801966D0 = 1; - D_80196534 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_80196554; - extern SV4_8017B368 D_8019655C; - extern s16 D_801965AC; - extern s16 D_801965A4; - extern u16 D_80180C40; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_80196554; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_8019655C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80180C40)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80180C40)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801965AC) = loc0; - (*(SV4_8017B368 *)&D_801965A4) = loc1; - D_801966D0 = 1; - D_80196534 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC07_008/nonmatchings/ov_SC07_008_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_80180C40[]; - extern s16 D_801965AC; - extern s16 D_801965AE; - extern s16 D_801965B0; - extern s16 D_801965A4; - extern s16 D_801965A6; - extern s16 D_801965A8; - 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_80180C40[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80180C40[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801965AC; - s16 *p78C = &D_801965A4; - *(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_801965AE; - v798 = D_801965B0; - v78C = *p78C; - v78E = D_801965A6; - v790 = D_801965A8; - __asm__ __volatile__(""); - D_801966D0 = 1; - D_80196534 = 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_80196534; -extern s16 D_801965AC; -extern s16 D_801965AE; -extern s16 D_801965B0; -extern s16 D_801965A4; -extern s16 D_801965A6; -extern s16 D_801965A8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_80196534 = 0; - D_801965AC = (s16) D_80114F30; - D_801965AE = (s16) D_80114F34; - D_801965B0 = (s16) D_80114F38; - D_801965A4 = (s16) D_80114F24; - D_801965A6 = (s16) D_80114F28; - D_801965A8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801965C4; -extern s16 D_801965C6; -extern s16 D_801965C8; -extern s16 D_801965CC; -extern s16 D_801965CE; -extern s16 D_801965D0; - -void func_8017B824(void) { - D_801965C4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801965C6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801965C8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801965CC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801965CE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801965D0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801965C4; -extern s16 D_801965C6; -extern s16 D_801965C8; -extern s16 D_801965CC; -extern s16 D_801965CE; -extern s16 D_801965D0; - -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_801965C4; - D_80114F34 = D_801965C6; - D_80114F38 = D_801965C8; - D_80114F24 = D_801965CC; - D_80114F28 = D_801965CE; - D_80114F2C = D_801965D0; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801965AC), src[8..15] -> (*(S8_8017B8E8 *)&D_801965A4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801965AC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801965A4) = ((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_801965B4; -extern u16 D_801965B6; -extern u16 D_801965B8; - -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_80196534; -extern short D_801965BC; -extern short D_801965BE; -extern short D_801965C0; -extern s16 D_801965AC; -extern s16 D_801965AE; -extern s16 D_801965B0; -extern s16 D_801965A4; -extern s16 D_801965A6; -extern s16 D_801965A8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801965B4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801965B6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801965B8); - (*(s16 *)&D_801965BC) = buf[0]; - (*(s16 *)&D_801965BE) = buf[1]; - (*(s16 *)&D_801965C0) = buf[2]; - D_801965AC = D_80114F30 + buf[0]; - D_80196534 = 0; - D_801965AE = D_80114F34 + buf[1]; - D_801965B0 = D_80114F38 + buf[2]; - D_801965A4 = D_80114F24 + buf[0]; - D_801965A6 = D_80114F28 + buf[1]; - D_801965A8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_80196554; -extern SV4 D_8019655C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019655C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_80196554 = 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_8019655C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019655C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_80196554) = 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_8019655C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_8019657C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_8019657C; - 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_80196534; -extern s16 D_801966D0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_80196534 = D_80196534 + 1; - if (D_80196534 >= 0x1F) { - D_801966D0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_80196534; -extern s16 D_801966D0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_80196534 = D_80196534 + 1; - if (0x18 < D_80196534) { - func_8012A4BC(); - D_801966D0 = 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_80196534; -extern void (*D_80196578)(void); -extern short D_801965BC; -extern short D_801965BE; -extern short D_801965C0; -extern s16 D_801966D0; - -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_80196534 = D_80196534 + 1; - if (D_80196534 >= 0x19) { - if (D_80196578 != 0) { - (*D_80196578)(); - } else { - D_80114F30 = D_80114F30 + D_801965BC; - D_80114F34 = D_80114F34 + D_801965BE; - D_80114F38 = D_80114F38 + D_801965C0; - D_80114F24 = D_80114F24 + D_801965BC; - D_80114F28 = D_80114F28 + D_801965BE; - D_80114F2C = D_80114F2C + D_801965C0; - func_8012A4BC(); - } - D_801966D0 = 0; - } -} - - - -extern void (*D_80180CE0[])(void); - -void func_8017BE60(void *a0) { - D_80180CE0[*(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) */ diff --git a/src/ov_SC07_008/ov_SC07_008_jr_8017AE2C.c b/src/ov_SC07_008/ov_SC07_008_jr_8017AE2C.c new file mode 100644 index 000000000..ca6319560 --- /dev/null +++ b/src/ov_SC07_008/ov_SC07_008_jr_8017AE2C.c @@ -0,0 +1,3448 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_8017F838; +extern u8 D_8017F7A8; +extern u8 D_8017F784; +extern u8 D_8017F760; +extern u8 D_8017F814; +extern u8 D_8017F7F0; +extern u8 D_8017F7CC; +extern u8 D_8017F73C; +extern void func_80145934(void); +extern u8 D_8017F8C8; +extern u8 D_8017F8A4; +extern u8 D_8017F880; +extern u8 D_8017F85C; +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_8017ECC0[]; +extern unsigned char D_8017ECF0[]; +extern unsigned char D_8017ED40[]; +extern unsigned char D_8017ED70[]; +extern unsigned char D_8017EDA0[]; +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(void); +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_8017EDF0[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8017EEB8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8017EF40[]; +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_8017EF48; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_80195430; +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_80195434; +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_8017EF78; +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 void 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_8017F020[])(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_8017F044[])(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_8017F034; +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_8017F058[])(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_8017F064[]; +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_8017F074[])(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_8017F08C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8017F07C; +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_8017F0A0[])(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_8017F0BC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8017F0AC; +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_8017F0D0[])(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_8017F0E4[])(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_8017F0F8; +extern void (*D_8017F120[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8017F100; +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_8017F16C[])(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_8017F170[])(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(void *a0); +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_8017F5D4[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_8017F5E4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_80195468; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8017F60C[])(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_8017F5EC; +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_8017F5FC; +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_8017F64C[])(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_8017F654[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8017F620; +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_8017F660[])(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_8017F630; +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_80195470; +extern s32 D_8019547C; +extern s32 D_80195480; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8017F69C[])(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_8017F670[]; +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_80195478; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8017F8EC[])(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_8017F70C[]; +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_8017F990[])(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_8017FAE4[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8017F900; +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_8017FAEC[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8017F910; +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_8017F930; +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_8017FAF4[])(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(void); +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_8017FB1C[])(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_8017FB28[])(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_8017F99C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8017FBCC; +extern void func_8015D380(s32 a0); +extern unsigned char D_8017ECB0[]; +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_8017FBE0[]; +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_8017FC1C[]; +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_8017FC64; +extern u16 D_8017FC66; +extern u16 D_8017FC68; +extern s32 D_8017FC6C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8017FC74; +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_8017F980; +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_8017FCF8[]; +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_8017FDA8[])(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_8017FDD8[]; +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_8017FE3C; +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_80195488[]; +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_8017FE60[])(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_801954E0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8017FEA8[])(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_8017FE98; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_80194D58[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_8017FEB0[])(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_8017FF04[])(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_8017FECC; +extern s16 D_8017FF00; +extern s16 D_8017FEFE; +extern s16 D_8017FEFC; +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_8017FF10[])(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_80195540; +extern u8 D_80195541; +extern u8 D_80195542; +extern u8 D_80195543; +extern u8 D_80195544; +extern u8 D_80195545; +extern u8 D_80195546; +extern u8 D_80195547; +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_8017FF20[])(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_80195580; +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_8017FF64[])(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_8017FFE0[]; +extern u8 D_8018007C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018009C[]; +extern u8 D_801800BC[]; +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_80180158[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801801D4[])(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_80194D68; +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_801801E0[])(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_801801E8[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801802B0[])(void); +extern void func_80166618(void *a0); +extern void (*D_801802C0[])(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_801802D0[])(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_801802DC[])(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_8018023C[]; +extern u8 D_80180250[]; +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_801802F4[])(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_801802FC[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80180304[])(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_8018030C[])(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_80180314[])(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_8018031C[])(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_80180324[])(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_801803D8[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801803E0[])(void); +extern void func_80169F00(void *a0); +extern char D_80180390[]; +extern char D_80180350[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80180418[])(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_80180424[])(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_8018046C[])(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_801804E8[])(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_801958A0; +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_801804DC[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80180520[]; +extern unsigned short D_80180528[]; +extern unsigned short D_80180530[]; +extern unsigned char D_801958A8[]; +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_801958A0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80180538[])(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_801959DC; +extern M2C_UNK D_801959E0; +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_80195968; +extern void (*D_80180568[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801959E4[]; +extern u8 D_801959EC[]; +extern u8 D_8019599C[]; +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_80180570[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018058C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80180594[])(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_801805FC[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801805A0; +extern u8 D_801805AC; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80180630[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80180638[])(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_8018068C[])(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_801806C0[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801806B0[]; +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_801806DC; +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); +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_80180754[])(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_8018075C[])(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_80180764[])(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_8018076C[])(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_80180774[])(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_8018077C[])(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_80180788[])(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_80180794[])(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_801807A0[])(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_801807B0[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801807C0[])(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_801807C8[])(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_801807D0[])(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_801807D8[])(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_801807E0[])(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_801807E8[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801807F0[])(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_801807F8[])(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_80180800[])(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_80180808[])(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_80180810[])(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_80180818[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80180820[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80180828[])(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_80180830[])(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_80180838[])(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_80180840[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80180848[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80180850[])(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_80180858[])(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_80180860[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80180868[])(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_80180870[])(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_801808B4[])(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_80180878; +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_801808E4[])(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_80180920[])(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(s32); +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_80180978[])(); +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_80180988[])(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_80180990[])(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_80180AF8[])(); +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_80180B04[])(); +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_80194FB0; +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 int func_801789AC(void); +extern s16 D_801966D0; +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_80196120; +extern short D_80196744; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_8019654C; +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_80196574; +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_80196530; +extern s32 func_8017A3B0(void); +extern short D_8019656C; +extern short D_80196568; +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_801966A0; +extern s16 D_801966A2; +extern s16 D_801966AC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801966A0; + + 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_801966AC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801966A0+0xC == &D_801966AC; 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_801966A0 + 0xC)) < 0x101) { + D_801966A0 = 0; + D_801966A2 = 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_801966AC); + 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_801966A0 + 0xC)) < 0x101) { + D_801966A0 = 0; + D_801966A2 = 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_801965AC; + extern s16 D_801965AE; + extern s16 D_801965B0; + extern s16 D_801965A4; + extern s16 D_801965A6; + extern s16 D_801965A8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801965AC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801965AE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801965B0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801965A4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801965A6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801965A8, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_80196534; +extern u16 D_801965B4; +extern u16 D_801965B6; +extern u16 D_801965B8; +extern s16 D_801966D0; + +void func_8017B1D8(void) { + func_8012A418(); + D_801966D0 = 0; + D_80196534 = 0; + D_801965B4 = D_80126B5E; + D_801965B6 = D_80126B62; + D_801965B8 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_80180C40[]; + extern s16 D_801965AC; + extern s16 D_801965A4; + 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_80180C40[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80180C40[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801965AC; + s16 *p78C = &D_801965A4; + *(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_801966D0 = 1; + D_80196534 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_80196554; + extern SV4_8017B368 D_8019655C; + extern s16 D_801965AC; + extern s16 D_801965A4; + extern u16 D_80180C40; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_80196554; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_8019655C; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_80180C40)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_80180C40)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801965AC) = loc0; + (*(SV4_8017B368 *)&D_801965A4) = loc1; + D_801966D0 = 1; + D_80196534 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC07_008/nonmatchings/ov_SC07_008_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_80180C40[]; + extern s16 D_801965AC; + extern s16 D_801965AE; + extern s16 D_801965B0; + extern s16 D_801965A4; + extern s16 D_801965A6; + extern s16 D_801965A8; + 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_80180C40[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80180C40[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801965AC; + s16 *p78C = &D_801965A4; + *(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_801965AE; + v798 = D_801965B0; + v78C = *p78C; + v78E = D_801965A6; + v790 = D_801965A8; + __asm__ __volatile__(""); + D_801966D0 = 1; + D_80196534 = 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_80196534; +extern s16 D_801965AC; +extern s16 D_801965AE; +extern s16 D_801965B0; +extern s16 D_801965A4; +extern s16 D_801965A6; +extern s16 D_801965A8; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_80196534 = 0; + D_801965AC = (s16) D_80114F30; + D_801965AE = (s16) D_80114F34; + D_801965B0 = (s16) D_80114F38; + D_801965A4 = (s16) D_80114F24; + D_801965A6 = (s16) D_80114F28; + D_801965A8 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801965C4; +extern s16 D_801965C6; +extern s16 D_801965C8; +extern s16 D_801965CC; +extern s16 D_801965CE; +extern s16 D_801965D0; + +void func_8017B824(void) { + D_801965C4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801965C6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801965C8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801965CC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801965CE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801965D0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801965C4; +extern s16 D_801965C6; +extern s16 D_801965C8; +extern s16 D_801965CC; +extern s16 D_801965CE; +extern s16 D_801965D0; + +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_801965C4; + D_80114F34 = D_801965C6; + D_80114F38 = D_801965C8; + D_80114F24 = D_801965CC; + D_80114F28 = D_801965CE; + D_80114F2C = D_801965D0; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801965AC), src[8..15] -> (*(S8_8017B8E8 *)&D_801965A4) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801965AC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801965A4) = ((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_801965B4; +extern u16 D_801965B6; +extern u16 D_801965B8; + +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_80196534; +extern short D_801965BC; +extern short D_801965BE; +extern short D_801965C0; +extern s16 D_801965AC; +extern s16 D_801965AE; +extern s16 D_801965B0; +extern s16 D_801965A4; +extern s16 D_801965A6; +extern s16 D_801965A8; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801965B4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801965B6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801965B8); + (*(s16 *)&D_801965BC) = buf[0]; + (*(s16 *)&D_801965BE) = buf[1]; + (*(s16 *)&D_801965C0) = buf[2]; + D_801965AC = D_80114F30 + buf[0]; + D_80196534 = 0; + D_801965AE = D_80114F34 + buf[1]; + D_801965B0 = D_80114F38 + buf[2]; + D_801965A4 = D_80114F24 + buf[0]; + D_801965A6 = D_80114F28 + buf[1]; + D_801965A8 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_80196554; +extern SV4 D_8019655C; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_8019655C) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_80196554 = 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_8019655C = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_8019655C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_80196554) = 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_8019655C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_8019657C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_8019657C; + 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_80196534; +extern s16 D_801966D0; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_80196534 = D_80196534 + 1; + if (D_80196534 >= 0x1F) { + D_801966D0 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_80196534; +extern s16 D_801966D0; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_80196534 = D_80196534 + 1; + if (0x18 < D_80196534) { + func_8012A4BC(); + D_801966D0 = 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_80196534; +extern void (*D_80196578)(void); +extern short D_801965BC; +extern short D_801965BE; +extern short D_801965C0; +extern s16 D_801966D0; + +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_80196534 = D_80196534 + 1; + if (D_80196534 >= 0x19) { + if (D_80196578 != 0) { + (*D_80196578)(); + } else { + D_80114F30 = D_80114F30 + D_801965BC; + D_80114F34 = D_80114F34 + D_801965BE; + D_80114F38 = D_80114F38 + D_801965C0; + D_80114F24 = D_80114F24 + D_801965BC; + D_80114F28 = D_80114F28 + D_801965BE; + D_80114F2C = D_80114F2C + D_801965C0; + func_8012A4BC(); + } + D_801966D0 = 0; + } +} + + + +extern void (*D_80180CE0[])(void); + +void func_8017BE60(void *a0) { + D_80180CE0[*(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) */ + diff --git a/src/ov_SC07_009/ov_SC07_009_jr_8017A4AC.c b/src/ov_SC07_009/ov_SC07_009_jr_8017A4AC.c index 2e618ad32..c6edf7620 100644 --- a/src/ov_SC07_009/ov_SC07_009_jr_8017A4AC.c +++ b/src/ov_SC07_009/ov_SC07_009_jr_8017A4AC.c @@ -2946,786 +2946,3 @@ 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) */ - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017AE2C); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801A3C3C; - extern s16 D_801A3C3E; - extern s16 D_801A3C40; - extern s16 D_801A3C34; - extern s16 D_801A3C36; - extern s16 D_801A3C38; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A3C3C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A3C3E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A3C40, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A3C34, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A3C36, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A3C38, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801A3BC4; -extern u16 D_801A3C44; -extern u16 D_801A3C46; -extern u16 D_801A3C48; -extern s16 D_801A3D60; - -void func_8017B1D8(void) { - func_8012A418(); - D_801A3D60 = 0; - D_801A3BC4 = 0; - D_801A3C44 = D_80126B5E; - D_801A3C46 = D_80126B62; - D_801A3C48 = 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. - -typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; - -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_801816E4[]; - extern s16 D_801A3C3C; - extern s16 D_801A3C34; - 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_801816E4[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801816E4[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A3C3C; - s16 *p78C = &D_801A3C34; - *(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_801A3D60 = 1; - D_801A3BC4 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A3BE4; - extern SV4_8017B368 D_801A3BEC; - extern s16 D_801A3C3C; - extern s16 D_801A3C34; - extern u16 D_801816E4; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801A3BE4; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801A3BEC; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_801816E4)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_801816E4)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801A3C3C) = loc0; - (*(SV4_8017B368 *)&D_801A3C34) = loc1; - D_801A3D60 = 1; - D_801A3BC4 = 0; -} - - - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017B490); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -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_801816E4[]; - extern s16 D_801A3C3C; - extern s16 D_801A3C3E; - extern s16 D_801A3C40; - extern s16 D_801A3C34; - extern s16 D_801A3C36; - extern s16 D_801A3C38; - 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_801816E4[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_801816E4[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A3C3C; - s16 *p78C = &D_801A3C34; - *(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_801A3C3E; - v798 = D_801A3C40; - v78C = *p78C; - v78E = D_801A3C36; - v790 = D_801A3C38; - __asm__ __volatile__(""); - D_801A3D60 = 1; - D_801A3BC4 = 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_801A3BC4; -extern s16 D_801A3C3C; -extern s16 D_801A3C3E; -extern s16 D_801A3C40; -extern s16 D_801A3C34; -extern s16 D_801A3C36; -extern s16 D_801A3C38; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801A3BC4 = 0; - D_801A3C3C = (s16) D_80114F30; - D_801A3C3E = (s16) D_80114F34; - D_801A3C40 = (s16) D_80114F38; - D_801A3C34 = (s16) D_80114F24; - D_801A3C36 = (s16) D_80114F28; - D_801A3C38 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801A3C54; -extern s16 D_801A3C56; -extern s16 D_801A3C58; -extern s16 D_801A3C5C; -extern s16 D_801A3C5E; -extern s16 D_801A3C60; - -void func_8017B824(void) { - D_801A3C54 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801A3C56 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801A3C58 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801A3C5C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801A3C5E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801A3C60 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801A3C54; -extern s16 D_801A3C56; -extern s16 D_801A3C58; -extern s16 D_801A3C5C; -extern s16 D_801A3C5E; -extern s16 D_801A3C60; - -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_801A3C54; - D_80114F34 = D_801A3C56; - D_80114F38 = D_801A3C58; - D_80114F24 = D_801A3C5C; - D_80114F28 = D_801A3C5E; - D_80114F2C = D_801A3C60; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801A3C3C), src[8..15] -> (*(S8_8017B8E8 *)&D_801A3C34) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801A3C3C) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801A3C34) = ((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_801A3C44; -extern u16 D_801A3C46; -extern u16 D_801A3C48; - -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_801A3BC4; -extern short D_801A3C4C; -extern short D_801A3C4E; -extern short D_801A3C50; -extern s16 D_801A3C3C; -extern s16 D_801A3C3E; -extern s16 D_801A3C40; -extern s16 D_801A3C34; -extern s16 D_801A3C36; -extern s16 D_801A3C38; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A3C44); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A3C46); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A3C48); - (*(s16 *)&D_801A3C4C) = buf[0]; - (*(s16 *)&D_801A3C4E) = buf[1]; - (*(s16 *)&D_801A3C50) = buf[2]; - D_801A3C3C = D_80114F30 + buf[0]; - D_801A3BC4 = 0; - D_801A3C3E = D_80114F34 + buf[1]; - D_801A3C40 = D_80114F38 + buf[2]; - D_801A3C34 = D_80114F24 + buf[0]; - D_801A3C36 = D_80114F28 + buf[1]; - D_801A3C38 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801A3BE4; -extern SV4 D_801A3BEC; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A3BEC) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801A3BE4 = 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_801A3BEC = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A3BEC)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801A3BE4) = 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_801A3BEC) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801A3C0C[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801A3C0C; - 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_801A3BC4; -extern s16 D_801A3D60; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801A3BC4 = D_801A3BC4 + 1; - if (D_801A3BC4 >= 0x1F) { - D_801A3D60 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801A3BC4; -extern s16 D_801A3D60; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801A3BC4 = D_801A3BC4 + 1; - if (0x18 < D_801A3BC4) { - func_8012A4BC(); - D_801A3D60 = 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_801A3BC4; -extern void (*D_801A3C08)(void); -extern short D_801A3C4C; -extern short D_801A3C4E; -extern short D_801A3C50; -extern s16 D_801A3D60; - -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_801A3BC4 = D_801A3BC4 + 1; - if (D_801A3BC4 >= 0x19) { - if (D_801A3C08 != 0) { - (*D_801A3C08)(); - } else { - D_80114F30 = D_80114F30 + D_801A3C4C; - D_80114F34 = D_80114F34 + D_801A3C4E; - D_80114F38 = D_80114F38 + D_801A3C50; - D_80114F24 = D_80114F24 + D_801A3C4C; - D_80114F28 = D_80114F28 + D_801A3C4E; - D_80114F2C = D_80114F2C + D_801A3C50; - func_8012A4BC(); - } - D_801A3D60 = 0; - } -} - - - -extern void (*D_80181784[])(void); - -void func_8017BE60(void *a0) { - D_80181784[*(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) */ - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017BEBC); - - -extern void (*D_80181804[])(void); - -void func_8017CD9C(void *a0) { - D_80181804[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017CDD8); - -s32 func_8017CE14(void) { - return 1; - } - - - -extern void (*D_8018180C[])(void); - -void func_8017CE1C(void *a0) { - D_8018180C[*(u8 *)((s32)a0 + 0x15)](); -} - - -s32 func_8017CE58(u8 *a0) { - *(s32 *)(a0 + 0x28) = 0xA; - a0[0x15] += 1; - return 0; - } - - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017CE74); - -extern int func_800167F0(int arg); -int func_8017CEC8(void) { - return (func_800167F0(4) & 0xFFFF) != 0; -} - - - -extern void (*D_80181818[])(void); - -void func_8017CEEC(void *a0) { - D_80181818[*(u8 *)((s32)a0 + 0x15)](); -} - - -s32 func_8017CF28(u8 *a0) { - *(s32 *)(a0 + 0x28) = 0xA; - a0[0x15] += 1; - return 0; - } - - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017CF44); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017CFC0); - - -extern void (*D_80181858[])(void); - -void func_8017D024(void *a0) { - D_80181858[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D060); - -void func_8017D0CC(void) { -} - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D0D4); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D150); - -extern s32 func_80171990(u8 *a0); - extern s32 D_80126B58; - void func_8017D178(void) { - ((void (*)(void *))func_80171990)(&D_80126B58); - } - - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D1A0); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D1C8); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D260); - -extern s32 D_8019EE74; -extern s32 D_80126950; -extern void func_80174E9C(s32); - -void func_8017D304(void) { - D_80126950 = 0x16F; - func_80174E9C((s32)&D_8019EE74); -} - - - -extern void (*D_80181878[])(void); - -void func_8017D338(void *a0) { - D_80181878[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D374); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D39C); - -extern s32 func_8017D3E4(void); - -s32 func_8017D3E4(void) { - return 0x91; -} - - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D3EC); - -extern s32 func_8012AD50(void *a0); - void func_8017D4AC(void) { - ((s32 (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D4CC); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D508); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D554); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D5A0); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D5EC); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D634); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D680); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D6CC); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D718); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D760); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D7AC); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D7F8); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D844); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D88C); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D8D8); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D924); - -void func_8017D978(void) { -} - -void func_8017D980(s32 *a0) { - *(s32 *)((s32)a0 + 0x30) = 0; - *(s32 *)((s32)a0 + 0x34) = 0; - *(s32 *)((s32)a0 + 0x38) = 0; - *(s32 *)((s32)a0 + 0x3C) = 0; - } - - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017D994); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017DA0C); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017DA7C); - - -extern void (*D_801819E4[])(void); - -void func_8017DACC(void *a0) { - D_801819E4[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_8012AD50(void *a0); - void func_8017DB08(u8 *param_1) { - *(short *)(param_1 + 0xfc) = 0; - *(unsigned short *)(param_1 + 0x72) |= 0x1000; - ((void (*)(void))func_8012AD50)(); - } - - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017DB34); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017DB80); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017DBCC); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017DC40); - - -extern void (*D_80181A78[])(void); - -void func_8017DCA8(void *a0) { - D_80181A78[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017DCE4); - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017A4AC", func_8017DD18); - - - diff --git a/src/ov_SC07_009/ov_SC07_009_jr_8017AE2C.c b/src/ov_SC07_009/ov_SC07_009_jr_8017AE2C.c new file mode 100644 index 000000000..fe1130d51 --- /dev/null +++ b/src/ov_SC07_009/ov_SC07_009_jr_8017AE2C.c @@ -0,0 +1,3663 @@ +#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. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct Sub_8015CD20 { + u8 pad0[0x12]; + u16 unk12; /* +0x12 */ +}; +struct Ent_8015CD20 { + u16 unk0; /* +0x00 */ + u8 pad2[0x1E]; + struct Sub_8015CD20 *unk20; /* +0x20 */ + u8 pad24[0x94]; + s16 unkB8; /* +0xB8 */ + u8 pad1BA[0x102]; + s8 unk1BC; /* +0x1BC */ + u8 pad1BD[0x77]; + s32 unk234; /* +0x234 */ +}; +typedef struct { + u16 f0; + u8 pad0[0x4e]; + int f50; + u8 pad1[0x14]; +} Ent_80164930_80164930; +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_80165140; +typedef struct { B8_80165140 a; B4_80165140 b; s32 used; } Slot_80165140; +typedef struct { u16 h[6]; } Rec_80166690_80166690; /* 12-byte sub-table record (stride 0xC) */ +typedef struct { + short v0, v1, v2, pad06, w0, w1, w2, pad0E; /* 0x00..0x0F */ + short v3, v4, v5, pad16, w3, w4, w5, pad1E; /* 0x10..0x1F */ + u8 c00, c01, c02, pad23; /* 0x20 */ + u8 c10, c11, c12, pad27; /* 0x24 */ + u8 c20, c21, c22, pad2B; /* 0x28 */ + u8 c30, c31, c32, pad2F; /* 0x2C */ + int tag; /* 0x30 -> struct size 0x34; tag lands at sp+0x40 */ +} Frame_80166690_80166690; +typedef struct { s32 m[8]; } Mat_80167540; /* 0x20 bytes */ +struct Src_80167540 { + u8 pad0[0x34]; + Mat_80167540 mat; /* 0x34 */ +}; +struct Sub2_80167540 { + u8 pad0[0x44]; + s32 unk44; /* 0x44 */ +}; +struct Node_80167540 { + /* 0x0 */ u16 unk0; + u8 pad2[0x4]; + /* 0x6 */ s16 unk6; + u8 pad8[0x2]; + /* 0xA */ s16 unkA; + u8 padC[0x2]; + /* 0xE */ s16 unkE; + u8 pad10[0x10]; + /* 0x20 */ struct Src_80167540 *unk20; + u8 pad24[0x28]; + /* 0x4C */ struct Sub2_80167540 *unk4C; +}; +struct Entity_80167540 { + /* 0x0 */ s16 unk0; + /* 0x2 */ u16 unk2; + u8 pad4[0xC]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + u8 pad14[0x8]; + /* 0x1C */ s32 unk1C; + u8 pad20[0x10]; + /* 0x30 */ s32 unk30; + /* 0x34 */ struct Node_80167540 *unk34; + /* 0x38 */ Mat_80167540 mat; +}; +typedef struct { s16 x, y, z, pad; } SVEC_80167AE0; +struct Fr_80167AE0 { + u8 matrix[0x20]; /* 0x00 -> sp+0x10 */ + SVEC_80167AE0 v[4]; /* 0x20 -> sp+0x30 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x40 -> sp+0x50 */ + u32 code; /* 0x50 -> sp+0x60 */ +}; +typedef struct { + u16 f00, f02, f04, f06; + s16 f08; + u16 f0a, f0c, f0e, f10, f12, f14, f16; + u8 f18, f19, f1a, f1b, f1c, f1d, f1e, f1f, f20, f21, f22, f23; + u32 f24; +} Thing_80168828_80168828; +typedef struct { s16 x, y, z, pad; } SVEC_8016A290; +struct Fr_8016A290 { + SVEC_8016A290 center; /* 0x00 -> sp+0x10 */ + SVEC_8016A290 diff; /* 0x08 -> sp+0x18 */ + s32 pos[3]; /* 0x10 -> sp+0x20 */ + s32 _pad1c; /* 0x1C -> sp+0x2C */ + s16 mtx[32]; /* 0x20 -> sp+0x30 */ + SVEC_8016A290 v[4]; /* 0x60 -> sp+0x70 */ + struct { u8 r, g, b, pad; } col[4]; /* 0x80 -> sp+0x90 */ + u32 code; /* 0x90 -> sp+0xA0 */ +}; +typedef struct SubB_8016A73C { char pad[0x20]; int unk20; } SubB_8016A73C; +typedef struct SubA_8016A73C { char pad[0x34]; SubB_8016A73C *unk34; } SubA_8016A73C; +typedef struct Mat_8016A73C { int w[8]; } Mat_8016A73C; +typedef struct Obj_8016A73C { + short unk0; + short unk2; + short unk4; + short unk6; + short unk8; + short unkA; + short unkC; + short unkE; + char pad10[0x24]; /* 0x10 .. 0x33 */ + SubA_8016A73C *unk34; /* 0x34 */ + Mat_8016A73C mat; /* 0x38 .. 0x57 */ +} Obj_8016A73C; +typedef struct { char b[4]; } W_8016BFD0; +typedef struct { s16 x, y, z; } Vec3_8016BFD0; +typedef struct { + s16 m[9]; /* 0x00 */ + s16 pad; /* 0x12 */ + s32 t[3]; /* 0x14, 0x18, 0x1c */ + s32 rest[8]; /* 0x20..0x3f */ +} Mtx_8016BFD0; +typedef struct { + u8 f0, f1, f2, f3; + struct { s16 a, b, c, d, e, g; } ent[16]; +} Blk_8016CF04_8016CF04; /* 4 + 16*12 = 0xC4 stride */ +typedef struct { short vx, vy, vz, pad; } SVECTOR_8016E7C8; /* 0x08 */ +typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; /* 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; +struct Entry_8016E95C { + u8 f0; + u8 f1; + u8 pad[0x1e]; +}; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { s16 vx, vy, vz, pad; } SV3_80178D40; +typedef struct { u8 pad0[0x12]; u16 unk12; } Obj20_80178D40; +typedef struct { u16 f0; u16 f2; u16 f4; u16 f6; } Blk_80178D40; +typedef struct Actor_80178D40 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + s16 unk8; + u16 unkA; + s16 unkC; + u16 unkE; + u8 pad10[0x20 - 0x10]; + Obj20_80178D40 *unk20; + u8 pad24[0x34 - 0x24]; + s16 unk34; + u8 pad36[0xD4 - 0x36]; + struct Actor_80178D40 *unkD4; + s32 unkD8; + s32 unkDC[7]; + s32 unkF8; + u8 padFC[0x10A - 0xFC]; + s16 unk10A; +} Actor_80178D40; +typedef struct { + s32 op; + union { + s32 w; + void *p; + s16 h[2]; + u16 uh[2]; + } a; +} Cmd_80178D40; +struct S126B58_inner { u16 pad[9]; u16 unk12; }; +struct S126B58 { u8 pad[0x20]; struct S126B58_inner *unk20; }; +struct S734 { s32 unk0; s32 unk4; s32 unk8; s32 unkC; u8 unk10[8]; s32 unk18; + void (*unk1C)(s32, void *, s32); }; +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_801802DC; +extern u8 D_8018024C; +extern u8 D_80180228; +extern u8 D_80180204; +extern u8 D_801802B8; +extern u8 D_80180294; +extern u8 D_80180270; +extern u8 D_801801E0; +extern void func_80145934(void); +extern u8 D_8018036C; +extern u8 D_80180348; +extern u8 D_80180324; +extern u8 D_80180300; +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_8017F764[]; +extern unsigned char D_8017F794[]; +extern unsigned char D_8017F7E4[]; +extern unsigned char D_8017F814[]; +extern unsigned char D_8017F844[]; +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(void); +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_8017F894[])(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); +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(s32); +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 s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +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_8017F95C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_8017F9E4[]; +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_8017F9EC; +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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void 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 void 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 void func_8014D820(s32 a0, void *a1, void *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_801A2AC0; +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_801A2AC4; +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_8017FA1C; +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 void 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_8017FAC4[])(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_8017FAE8[])(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_8017FAD8; +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_8017FAFC[])(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_8017FB08[]; +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_8017FB18[])(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_8017FB30[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8017FB20; +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_8017FB44[])(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_8017FB60[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8017FB50; +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_8017FB74[])(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_8017FB88[])(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_8017FB9C; +extern void (*D_8017FBC4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8017FBA4; +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_8017FC10[])(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_8017FC14[])(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(void *a0); +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_80180078[]; +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 a0, s32 a1, s32 a2, s32 a3); +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_80180088[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void 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_801A2AF8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801800B0[])(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_80180090; +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_801800A0; +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_801800F0[])(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_801800F8[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801800C4; +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_80180104[])(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_801800D4; +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_801A2B00; +extern s32 D_801A2B0C; +extern s32 D_801A2B10; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180140[])(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_80180114[]; +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_801A2B08; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80180390[])(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_801801B0[]; +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_80180434[])(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_80180588[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801803A4; +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_80180590[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_801803B4; +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_801803D4; +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_80180598[])(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(void); +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_801805C0[])(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_801805CC[])(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_80180440[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80180670; +extern void func_8015D380(s32 a0); +extern unsigned char D_8017F754[]; +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_80180684[]; +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_801806C0[]; +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_80180708; +extern u16 D_8018070A; +extern u16 D_8018070C; +extern s32 D_80180710; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80180718; +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_80180424; +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_8018079C[]; +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_8018084C[])(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_8018087C[]; +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_801808E0; +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_801A2B18[]; +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_80180904[])(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_801A2B70[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018094C[])(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_8018093C; +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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801A23E4[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_80180954[])(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_801809A8[])(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_80180970; +extern s16 D_801809A4; +extern s16 D_801809A2; +extern s16 D_801809A0; +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_801809B4[])(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_801A2BD0; +extern u8 D_801A2BD1; +extern u8 D_801A2BD2; +extern u8 D_801A2BD3; +extern u8 D_801A2BD4; +extern u8 D_801A2BD5; +extern u8 D_801A2BD6; +extern u8 D_801A2BD7; +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_801809C4[])(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_801A2C10; +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_80180A08[])(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_80180A84[]; +extern s32 D_80180AA4[]; +extern u8 D_80180B20[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80180B40[]; +extern u8 D_80180B60[]; +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_80180BFC[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80180C78[])(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_801A23F4; +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_80180C84[])(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_80180C8C[])(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(void *a0, void *a1); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80180D54[])(void); +extern void func_80166618(void *a0); +extern void (*D_80180D64[])(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_80180D74[])(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_80180D80[])(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_80180CE0[]; +extern u8 D_80180CF4[]; +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_80180D98[])(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_80180DA0[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80180DA8[])(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_80180DB0[])(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_80180DB8[])(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_80180DC0[])(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_80180DC8[])(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_80180E7C[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80180E84[])(void); +extern void func_80169F00(void *a0); +extern char D_80180E34[]; +extern char D_80180DF4[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80180EBC[])(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_80180EC8[])(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_80180F10[])(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_80180F8C[])(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_801A2F30; +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_80180F80[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80180FC4[]; +extern unsigned short D_80180FCC[]; +extern unsigned short D_80180FD4[]; +extern unsigned char D_801A2F38[]; +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_801A2F30; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80180FDC[])(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_801A306C; +extern M2C_UNK D_801A3070; +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_801A2FF8; +extern void (*D_8018100C[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801A3074[]; +extern u8 D_801A307C[]; +extern u8 D_801A302C[]; +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_80181014[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80181030[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80181038[])(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_801810A0[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80181044; +extern u8 D_80181050; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_801810D4[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_801810DC[])(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_80181130[])(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_80181164[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80181154[]; +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_80181180; +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); +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_801811F8[])(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_80181200[])(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_80181208[])(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_80181210[])(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_80181218[])(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_80181220[])(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_8018122C[])(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_80181238[])(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_80181244[])(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_80181254[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80181264[])(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_8018126C[])(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_80181274[])(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_8018127C[])(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_80181284[])(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_8018128C[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80181294[])(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_8018129C[])(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_801812A4[])(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_801812AC[])(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_801812B4[])(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_801812BC[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_801812C4[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_801812CC[])(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_801812D4[])(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_801812DC[])(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_801812E4[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801812EC[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801812F4[])(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_801812FC[])(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_80181304[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018130C[])(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_80181314[])(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_80181358[])(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_8018131C; +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_80181388[])(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_801813C4[])(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(s32); +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_8018141C[])(); +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_8018142C[])(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_80181434[])(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_8018159C[])(); +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_801815A8[])(); +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_801A263C; +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 int func_801789AC(void); +extern s16 D_801A3D60; +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_801A37B0; +extern short D_801A3DD4; +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(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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_801A3BDC; +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_801A3C04; +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_801A3BC0; +extern s32 func_8017A3B0(void); +extern short D_801A3BFC; +extern short D_801A3BF8; +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_801A3D30; +extern s16 D_801A3D32; +extern s16 D_801A3D3C; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801A3D30; + + 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_801A3D3C); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801A3D30+0xC == &D_801A3D3C; 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_801A3D30 + 0xC)) < 0x101) { + D_801A3D30 = 0; + D_801A3D32 = 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_801A3D3C); + 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_801A3D30 + 0xC)) < 0x101) { + D_801A3D30 = 0; + D_801A3D32 = 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_801A3C3C; + extern s16 D_801A3C3E; + extern s16 D_801A3C40; + extern s16 D_801A3C34; + extern s16 D_801A3C36; + extern s16 D_801A3C38; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A3C3C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A3C3E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A3C40, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A3C34, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A3C36, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A3C38, (s32)((s16)param_2)); +} + + + +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_801A3BC4; +extern u16 D_801A3C44; +extern u16 D_801A3C46; +extern u16 D_801A3C48; +extern s16 D_801A3D60; + +void func_8017B1D8(void) { + func_8012A418(); + D_801A3D60 = 0; + D_801A3BC4 = 0; + D_801A3C44 = D_80126B5E; + D_801A3C46 = D_80126B62; + D_801A3C48 = 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. + +typedef struct { u8 b[8]; } Blk8_8017B238_8017B238; + +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_801816E4[]; + extern s16 D_801A3C3C; + extern s16 D_801A3C34; + 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_801816E4[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801816E4[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A3C3C; + s16 *p78C = &D_801A3C34; + *(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_801A3D60 = 1; + D_801A3BC4 = 0; + } +} + + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16_8017B368; /* 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_801A3BE4; + extern SV4_8017B368 D_801A3BEC; + extern s16 D_801A3C3C; + extern s16 D_801A3C34; + extern u16 D_801816E4; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801A3BE4; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801A3BEC; + } else { + s32 ax = (s32)&((Pair16_8017B368 *)&D_801816E4)[n].x; + s32 ay = (s32)&((Pair16_8017B368 *)&D_801816E4)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801A3C3C) = loc0; + (*(SV4_8017B368 *)&D_801A3C34) = loc1; + D_801A3D60 = 1; + D_801A3BC4 = 0; +} + + + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017B490); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +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_801816E4[]; + extern s16 D_801A3C3C; + extern s16 D_801A3C3E; + extern s16 D_801A3C40; + extern s16 D_801A3C34; + extern s16 D_801A3C36; + extern s16 D_801A3C38; + 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_801816E4[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_801816E4[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A3C3C; + s16 *p78C = &D_801A3C34; + *(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_801A3C3E; + v798 = D_801A3C40; + v78C = *p78C; + v78E = D_801A3C36; + v790 = D_801A3C38; + __asm__ __volatile__(""); + D_801A3D60 = 1; + D_801A3BC4 = 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_801A3BC4; +extern s16 D_801A3C3C; +extern s16 D_801A3C3E; +extern s16 D_801A3C40; +extern s16 D_801A3C34; +extern s16 D_801A3C36; +extern s16 D_801A3C38; + +void func_8017B7A8(void) +{ + D_8012694C = 1; + D_801A3BC4 = 0; + D_801A3C3C = (s16) D_80114F30; + D_801A3C3E = (s16) D_80114F34; + D_801A3C40 = (s16) D_80114F38; + D_801A3C34 = (s16) D_80114F24; + D_801A3C36 = (s16) D_80114F28; + D_801A3C38 = (s16) D_80114F2C; +} + + + + +extern s32 D_801151D4; +extern s16 D_801A3C54; +extern s16 D_801A3C56; +extern s16 D_801A3C58; +extern s16 D_801A3C5C; +extern s16 D_801A3C5E; +extern s16 D_801A3C60; + +void func_8017B824(void) { + D_801A3C54 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801A3C56 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801A3C58 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801A3C5C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801A3C5E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801A3C60 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + +extern s16 D_801A3C54; +extern s16 D_801A3C56; +extern s16 D_801A3C58; +extern s16 D_801A3C5C; +extern s16 D_801A3C5E; +extern s16 D_801A3C60; + +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_801A3C54; + D_80114F34 = D_801A3C56; + D_80114F38 = D_801A3C58; + D_80114F24 = D_801A3C5C; + D_80114F28 = D_801A3C5E; + D_80114F2C = D_801A3C60; +} + + +// @class: struct +// @stuck: none — MATCH + +/* 16-byte unaligned block copy from param to two adjacent align-1 globals. + src[0..7] -> (*(S8_8017B8E8 *)&D_801A3C3C), src[8..15] -> (*(S8_8017B8E8 *)&D_801A3C34) (source order). + An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + (*(S8_8017B8E8 *)&D_801A3C3C) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801A3C34) = ((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_801A3C44; +extern u16 D_801A3C46; +extern u16 D_801A3C48; + +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_801A3BC4; +extern short D_801A3C4C; +extern short D_801A3C4E; +extern short D_801A3C50; +extern s16 D_801A3C3C; +extern s16 D_801A3C3E; +extern s16 D_801A3C40; +extern s16 D_801A3C34; +extern s16 D_801A3C36; +extern s16 D_801A3C38; + +void func_8017B940(void) +{ + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A3C44); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A3C46); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A3C48); + (*(s16 *)&D_801A3C4C) = buf[0]; + (*(s16 *)&D_801A3C4E) = buf[1]; + (*(s16 *)&D_801A3C50) = buf[2]; + D_801A3C3C = D_80114F30 + buf[0]; + D_801A3BC4 = 0; + D_801A3C3E = D_80114F34 + buf[1]; + D_801A3C40 = D_80114F38 + buf[2]; + D_801A3C34 = D_80114F24 + buf[0]; + D_801A3C36 = D_80114F28 + buf[1]; + D_801A3C38 = 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: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ + +extern SV4 D_801A3BE4; +extern SV4 D_801A3BEC; + +void func_8017BA3C(s32 param_1, s32 param_2) +{ + SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX mtx; /* sp+0x18 : MATRIX, t[] at sp+0x2c */ + SV4 v1; /* sp+0x38 : RotTransSV arg0 */ + SV4 svec; /* sp+0x40 : func_8012F214 out */ + SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801A3BEC) */ + SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ + + func_8012F214(param_1, param_2, (s32)&svec); + D_801A3BE4 = 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_801A3BEC = buf1; +} + + +// @class: struct +// @stuck: none — MATCH (65 ins) +#include "common.h" + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A3BEC)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801A3BE4) = 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_801A3BEC) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + +extern void (*D_801A3C0C[10])(int); + +void func_8017BC38(int param_1) +{ + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801A3C0C; + 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_801A3BC4; +extern s16 D_801A3D60; + +void func_8017BCA0(int param_1) { + func_8017B0E4(param_1, 0xC); + D_801A3BC4 = D_801A3BC4 + 1; + if (D_801A3BC4 >= 0x1F) { + D_801A3D60 = 2; + } +} + + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + +extern s16 D_801A3BC4; +extern s16 D_801A3D60; + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + func_8017B0E4(param_1, 6); + D_801A3BC4 = D_801A3BC4 + 1; + if (0x18 < D_801A3BC4) { + func_8012A4BC(); + D_801A3D60 = 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_801A3BC4; +extern void (*D_801A3C08)(void); +extern short D_801A3C4C; +extern short D_801A3C4E; +extern short D_801A3C50; +extern s16 D_801A3D60; + +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_801A3BC4 = D_801A3BC4 + 1; + if (D_801A3BC4 >= 0x19) { + if (D_801A3C08 != 0) { + (*D_801A3C08)(); + } else { + D_80114F30 = D_80114F30 + D_801A3C4C; + D_80114F34 = D_80114F34 + D_801A3C4E; + D_80114F38 = D_80114F38 + D_801A3C50; + D_80114F24 = D_80114F24 + D_801A3C4C; + D_80114F28 = D_80114F28 + D_801A3C4E; + D_80114F2C = D_80114F2C + D_801A3C50; + func_8012A4BC(); + } + D_801A3D60 = 0; + } +} + + + +extern void (*D_80181784[])(void); + +void func_8017BE60(void *a0) { + D_80181784[*(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) */ + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017BEBC); + + +extern void (*D_80181804[])(void); + +void func_8017CD9C(void *a0) { + D_80181804[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017CDD8); + +s32 func_8017CE14(void) { + return 1; + } + + + +extern void (*D_8018180C[])(void); + +void func_8017CE1C(void *a0) { + D_8018180C[*(u8 *)((s32)a0 + 0x15)](); +} + + +s32 func_8017CE58(u8 *a0) { + *(s32 *)(a0 + 0x28) = 0xA; + a0[0x15] += 1; + return 0; + } + + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017CE74); + +extern int func_800167F0(int arg); +int func_8017CEC8(void) { + return (func_800167F0(4) & 0xFFFF) != 0; +} + + + +extern void (*D_80181818[])(void); + +void func_8017CEEC(void *a0) { + D_80181818[*(u8 *)((s32)a0 + 0x15)](); +} + + +s32 func_8017CF28(u8 *a0) { + *(s32 *)(a0 + 0x28) = 0xA; + a0[0x15] += 1; + return 0; + } + + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017CF44); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017CFC0); + + +extern void (*D_80181858[])(void); + +void func_8017D024(void *a0) { + D_80181858[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D060); + +void func_8017D0CC(void) { +} + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D0D4); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D150); + +extern s32 func_80171990(u8 *a0); + extern s32 D_80126B58; + void func_8017D178(void) { + ((void (*)(void *))func_80171990)(&D_80126B58); + } + + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D1A0); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D1C8); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D260); + +extern s32 D_8019EE74; +extern s32 D_80126950; +extern void func_80174E9C(s32); + +void func_8017D304(void) { + D_80126950 = 0x16F; + func_80174E9C((s32)&D_8019EE74); +} + + + +extern void (*D_80181878[])(void); + +void func_8017D338(void *a0) { + D_80181878[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D374); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D39C); + +extern s32 func_8017D3E4(void); + +s32 func_8017D3E4(void) { + return 0x91; +} + + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D3EC); + +extern s32 func_8012AD50(void *a0); + void func_8017D4AC(void) { + ((s32 (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D4CC); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D508); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D554); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D5A0); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D5EC); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D634); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D680); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D6CC); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D718); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D760); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D7AC); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D7F8); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D844); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D88C); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D8D8); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D924); + +void func_8017D978(void) { +} + +void func_8017D980(s32 *a0) { + *(s32 *)((s32)a0 + 0x30) = 0; + *(s32 *)((s32)a0 + 0x34) = 0; + *(s32 *)((s32)a0 + 0x38) = 0; + *(s32 *)((s32)a0 + 0x3C) = 0; + } + + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017D994); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017DA0C); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017DA7C); + + +extern void (*D_801819E4[])(void); + +void func_8017DACC(void *a0) { + D_801819E4[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern s32 func_8012AD50(void *a0); + void func_8017DB08(u8 *param_1) { + *(short *)(param_1 + 0xfc) = 0; + *(unsigned short *)(param_1 + 0x72) |= 0x1000; + ((void (*)(void))func_8012AD50)(); + } + + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017DB34); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017DB80); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017DBCC); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017DC40); + + +extern void (*D_80181A78[])(void); + +void func_8017DCA8(void *a0) { + D_80181A78[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017DCE4); + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017DD18); + + + + diff --git a/src/ov_SC07_010/ov_SC07_010_jr_8015C32C.c b/src/ov_SC07_010/ov_SC07_010_jr_8015C32C.c index c223dea9c..7fc2b6933 100644 --- a/src/ov_SC07_010/ov_SC07_010_jr_8015C32C.c +++ b/src/ov_SC07_010/ov_SC07_010_jr_8015C32C.c @@ -8679,1053 +8679,3 @@ DEFINE_func_8017ADE8() /* dedup: shared engine-core @0x8017ade8 (src/shared) */ DEFINE_func_8017AE08() /* dedup: shared engine-core @0x8017ae08 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017AE2C); - -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801A7CCC; - extern s16 D_801A7CCE; - extern s16 D_801A7CD0; - extern s16 D_801A7CC4; - extern s16 D_801A7CC6; - extern s16 D_801A7CC8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A7CCC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A7CCE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A7CD0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A7CC4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A7CC6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A7CC8, (s32)((s16)param_2)); -} - - -extern void func_8012A418(void); - -void func_8017B1D8(void) { - - extern u16 D_80126B5E; - extern u16 D_80126B62; - extern u16 D_80126B66; - extern s16 D_801A7C54; - extern u16 D_801A7CD4; - extern u16 D_801A7CD6; - extern u16 D_801A7CD8; - extern s16 D_801A94D0; - func_8012A418(); - D_801A94D0 = 0; - D_801A7C54 = 0; - D_801A7CD4 = D_80126B5E; - D_801A7CD6 = D_80126B62; - D_801A7CD8 = D_80126B66; -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017B238); - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16; /* 16-byte stride array element */ - - - -s32 func_8017B368(s32 param) -{ - - extern s16 D_801A7C54; - extern s16 D_801A94D0; - extern void func_8017BA3C(s32 param_1, s32 param_2); - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern SV4_8017B368 D_801A7C74; - extern SV4_8017B368 D_801A7C7C; - extern s16 D_801A7CCC; - extern s16 D_801A7CC4; - extern u16 D_80185900; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801A7C74; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801A7C7C; - } else { - s32 ax = (s32)&((Pair16 *)&D_80185900)[n].x; - s32 ay = (s32)&((Pair16 *)&D_80185900)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801A7CCC) = loc0; - (*(SV4_8017B368 *)&D_801A7CC4) = loc1; - D_801A94D0 = 1; - D_801A7C54 = 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_801A7C74; - extern SV4_8017B368 D_801A7C7C; - extern s16 D_801A7CCC; - extern s16 D_801A7CC4; - extern u16 D_80185900; - extern s16 D_801A7C54; - extern s16 D_801A94D0; - 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_801A7C74; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801A7C7C; - } else { - s32 ax = (s32)&((Pair16 *)&D_80185900)[n].x; - s32 ay = (s32)&((Pair16 *)&D_80185900)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801A7CCC) = loc0; - (*(SV4_8017B368 *)&D_801A7CC4) = loc1; - D_801A94D0 = 1; - D_801A7C54 = 0x1E; - D_80126990 = (*(SV4_8017B368 *)&D_801A7CCC).a; - D_80126994 = (*(SV4_8017B368 *)&D_801A7CCC).b; - D_80126998 = (*(SV4_8017B368 *)&D_801A7CCC).c; - D_80126984 = (*(SV4_8017B368 *)&D_801A7CC4).a; - D_80126988 = (*(SV4_8017B368 *)&D_801A7CC4).b; - D_8012698C = (*(SV4_8017B368 *)&D_801A7CC4).c; -} - - -extern void func_8012A018(s32 a, s32 b); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -s32 func_8017B614(s32 param_1, s32 param_2) -{ - - extern s32 D_80126990; - extern s32 D_80126994; - extern s16 D_801A7C54; - extern s16 D_801A94D0; - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern void func_80129CF8(void); - extern s32 func_8017BE60(void *a0); - extern u8 D_80185900[]; - extern s16 D_801A7CCC; - extern s16 D_801A7CCE; - extern s16 D_801A7CD0; - extern s16 D_801A7CC4; - extern s16 D_801A7CC6; - extern s16 D_801A7CC8; - 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_80185900[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80185900[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801A7CCC; - s16 *p78C = &D_801A7CC4; - *(Blk8_8017B614 *)p794 = *(Blk8_8017B614 *)&buf[0]; - *(Blk8_8017B614 *)p78C = *(Blk8_8017B614 *)&buf[8]; - func_8012A018((s32)func_8017BE60, 0); - { - s32 v794, v796, v798, v78C, v78E, v790; - D_8012694C = 0; - v794 = *p794; - v796 = D_801A7CCE; - v798 = D_801A7CD0; - v78C = *p78C; - v78E = D_801A7CC6; - v790 = D_801A7CC8; - __asm__ __volatile__(""); - D_801A94D0 = 1; - D_801A7C54 = 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 - - - -void func_8017B7A8(void) -{ - - 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_801A7C54; - extern s16 D_801A7CCC; - extern s16 D_801A7CCE; - extern s16 D_801A7CD0; - extern s16 D_801A7CC4; - extern s16 D_801A7CC6; - extern s16 D_801A7CC8; - D_8012694C = 1; - D_801A7C54 = 0; - D_801A7CCC = (s16) D_80114F30; - D_801A7CCE = (s16) D_80114F34; - D_801A7CD0 = (s16) D_80114F38; - D_801A7CC4 = (s16) D_80114F24; - D_801A7CC6 = (s16) D_80114F28; - D_801A7CC8 = (s16) D_80114F2C; -} - - - - -void func_8017B824(void) { - - extern s32 D_801151D4; - extern s16 D_801A7CE4; - extern s16 D_801A7CE6; - extern s16 D_801A7CE8; - extern s16 D_801A7CEC; - extern s16 D_801A7CEE; - extern s16 D_801A7CF0; - D_801A7CE4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801A7CE6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801A7CE8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801A7CEC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801A7CEE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801A7CF0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - - - -void func_8017B880(void) -{ - - extern s16 D_801A7CE4; - extern s16 D_801A7CE6; - extern s16 D_801A7CE8; - extern s16 D_801A7CEC; - extern s16 D_801A7CEE; - extern s16 D_801A7CF0; - extern s32 D_80114F30; - extern s32 D_80114F34; - extern s32 D_80114F38; - extern s32 D_80114F24; - extern s32 D_80114F28; - extern s32 D_80114F2C; - D_80114F30 = D_801A7CE4; - D_80114F34 = D_801A7CE6; - D_80114F38 = D_801A7CE8; - D_80114F24 = D_801A7CEC; - D_80114F28 = D_801A7CEE; - D_80114F2C = D_801A7CF0; -} - - - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - - extern s16 D_801A7CC4; - extern s16 D_801A7CCC; - (*(S8_8017B8E8 *)&D_801A7CCC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801A7CC4) = ((S8_8017B8E8 *)src)[1]; -} - - - - -// @class: struct -// @stuck: none — MATCH (63 ins) - - - - -void func_8017B940(void) -{ - - extern u16 D_80126B5E; - extern u16 D_80126B62; - extern u16 D_80126B66; - extern u16 D_801A7CD4; - extern u16 D_801A7CD6; - extern u16 D_801A7CD8; - 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_801A7C54; - extern short D_801A7CDC; - extern short D_801A7CDE; - extern short D_801A7CE0; - extern s16 D_801A7CCC; - extern s16 D_801A7CCE; - extern s16 D_801A7CD0; - extern s16 D_801A7CC4; - extern s16 D_801A7CC6; - extern s16 D_801A7CC8; - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A7CD4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A7CD6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A7CD8); - (*(s16 *)&D_801A7CDC) = buf[0]; - (*(s16 *)&D_801A7CDE) = buf[1]; - (*(s16 *)&D_801A7CE0) = buf[2]; - D_801A7CCC = D_80114F30 + buf[0]; - D_801A7C54 = 0; - D_801A7CCE = D_80114F34 + buf[1]; - D_801A7CD0 = D_80114F38 + buf[2]; - D_801A7CC4 = D_80114F24 + buf[0]; - D_801A7CC6 = D_80114F28 + buf[1]; - D_801A7CC8 = D_80114F2C + buf[2]; -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017BA3C); - -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_80049CAC(s32 a0, s32 a1); - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - - extern s32 D_801A7C74; - extern SV4_8017B368 D_801A7C7C; - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A7C7C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801A7C74) = 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_801A7C7C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - - -void func_8017BC38(int param_1) -{ - - extern void (*D_801A7C9C[10])(int); - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801A7C9C; - 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); - -void func_8017BCA0(int param_1) { - - extern s16 D_801A7C54; - extern s16 D_801A94D0; - func_8017B0E4(param_1, 0xC); - D_801A7C54 = D_801A7C54 + 1; - if (D_801A7C54 >= 0x1F) { - D_801A94D0 = 2; - } -} - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - - extern s16 D_801A7C54; - extern s16 D_801A94D0; - func_8017B0E4(param_1, 6); - D_801A7C54 = D_801A7C54 + 1; - if (0x18 < D_801A7C54) { - func_8012A4BC(); - D_801A94D0 = 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); - - - -void func_8017BD50(int param_1) -{ - - extern s16 D_801A7C54; - extern void (*D_801A7C98)(void); - extern short D_801A7CDC; - extern short D_801A7CDE; - extern short D_801A7CE0; - extern s16 D_801A94D0; - extern s32 D_80114F24; - extern s32 D_80114F28; - extern s32 D_80114F2C; - extern s32 D_80114F30; - extern s32 D_80114F34; - extern s32 D_80114F38; - func_8017B0E4(param_1, 6); - D_801A7C54 = D_801A7C54 + 1; - if (D_801A7C54 >= 0x19) { - if (D_801A7C98 != 0) { - (*D_801A7C98)(); - } else { - D_80114F30 = D_80114F30 + D_801A7CDC; - D_80114F34 = D_80114F34 + D_801A7CDE; - D_80114F38 = D_80114F38 + D_801A7CE0; - D_80114F24 = D_80114F24 + D_801A7CDC; - D_80114F28 = D_80114F28 + D_801A7CDE; - D_80114F2C = D_80114F2C + D_801A7CE0; - func_8012A4BC(); - } - D_801A94D0 = 0; - } -} - - - - -void func_8017BE60(void *a0) { - - extern void (*D_801859A0[])(void); - D_801859A0[*(u8 *)((s32)a0 + 0x4)](); -} - - -void func_8017BE9C(void) { -} - -void func_8017BEA4(void) { -} - -void func_8017BEAC(void) { -} - -void func_8017BEB4(void) { -} - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017BEBC); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017C294); - -int func_8017C338(short *param_1, short *param_2, short *param_3, int param_4) { - register int i2o __asm__("$5"); - register int i4o __asm__("$9"); - short sVar1; int rx, rz, uVar5; - i4o = param_2[1]; - __asm__ __volatile__("" : : "r"(i4o)); - i2o = param_1[1]; uVar5 = 0; - if (i2o >= i4o) { - rx = param_1[0] - i2o * (param_2[0] - param_1[0]); - rz = param_1[2] - i2o * (param_2[2] - param_1[2]); - } else { - register int den __asm__("$3"); - int p2x = param_2[0], p2z = param_2[2]; - den = i2o - i4o; - rx = p2x + i4o * (p2x - param_1[0]) / den; - rz = p2z + i4o * (p2z - param_1[2]) / den; - } - if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } - else i2o = -0x7fff; - *param_3 = (short)i2o; - if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } - else i2o = -0x7fff; - param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; - if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } - if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } - if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } - if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } - return uVar5; -} - - -extern void ReadGeomOffset(s32 *a0, s32 *a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8004921C(s32 a0, s32 a1); -void func_8017C530(s32 a0, s32 a1) { - s32 ofx; - s32 ofy; - s32 sxy; - s32 p; - ReadGeomOffset(&ofx, &ofy); - func_8004921C(0, 0); - RotTransPers(a0, a1, &sxy, &p); - func_8004921C(ofx, ofy); -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017C59C); - - - -void func_8017D468(void *a0) { - - extern void (*D_801859FC[])(void); - D_801859FC[*(u8 *)((s32)a0 + 0x15)](); -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017D4A4); - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017D4F8(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - - -void func_8017D51C(void *a0) { - - extern void (*D_80185A04[])(void); - D_80185A04[*(u8 *)((s32)a0 + 0x15)](); -} - - -s32 func_8017D558(void *a0) { - *(s32 *)((s32)a0 + 0x28) = 0xa; - *(u8 *)((s32)a0 + 0x15) = *(u8 *)((s32)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_8017D574(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; -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017D5F0); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017D654); - - - -void func_8017D688(void *a0) { - - extern void (*D_80185BF8[])(void); - D_80185BF8[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017D6C4); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017D708); - - -extern s32 func_8017DCC8(void); - extern void func_80171928(void *a0); - void func_8017D7E4(void *a0) { - if (((s32 (*)(s32))func_8017DCC8)((s32)a0) == 4) { - ((void (*)(s32))func_80171928)((s32)a0); - } - } - - - - -void func_8017D820(void *a0) { - - extern void (*D_80185C24[])(void); - D_80185C24[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017D85C); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017D898); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017D91C); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017D974); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017D9CC); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017DA30); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017DAD0); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017DB14); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017DC10); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017DC68); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017DC90); - -void func_8017DCB8(s32 a0) { - - extern s32 D_801A7CF8; - D_801A7CF8 = a0; -} - - - - -s32 func_8017DCC8(void) { - - extern s32 D_801A7CF8; - return D_801A7CF8; -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017DCD8); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017DDA0); - - - -void func_8017DE68(void *a0) { - - extern void (*D_80185C6C[])(void); - D_80185C6C[*(u8 *)((s32)a0 + 0x4)](); -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017DEA4); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017DEEC); - - - -void func_8017E084(void *a0) { - - extern void (*D_80185CE8[])(void); - D_80185CE8[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017E0C0); - -void func_8017E168(void) { -} - - - -void func_8017E170(void *a0) { - - extern void (*D_80185CF0[])(void); - D_80185CF0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017E1AC); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017E234); - -void func_8017E290(void) { -} - - - -void func_8017E298(void *a0) { - - extern void (*D_80185CFC[])(void); - D_80185CFC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017E2D4); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017E374); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017E3EC); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017E4D0); - -void func_8017E518(void) { -} - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017E520); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017E5B8); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017E70C); - - - -void func_8017E854(void *a0) { - - extern void (*D_80185DB0[])(void); - D_80185DB0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017E890); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017E900); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017E914); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017E97C); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017E99C); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017EAF4); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017EBB8); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017EC6C); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017ED54); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017ED74); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017EE24); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017EE7C); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017EE9C); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017EF4C); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017EFA4); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017EFC4); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017F094); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017F0EC); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017F10C); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017F1CC); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017F214); - -extern void func_8017F2BC(void); -void func_8017F29C(void) { - func_8017F2BC(); -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017F2BC); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017F2FC); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017F31C); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017F3D8); - -extern s32 func_8017F51C(void *a0, void *a1); -extern s32 func_8017F478(u8 *a0); -void func_8017F438(void *a0) { - - extern void *D_80185E44; - if (func_8017F51C(a0, &D_80185E44)) { - func_8017F478((u8 *)a0); - } -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017F478); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017F4A8); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017F51C); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017F54C); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017F5A4); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017F5FC); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017F638); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017F778); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017F798); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017F860); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017FA24); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017FA50); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017FA94); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017FBB8); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017FBD8); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017FC54); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017FD54); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017FED8); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017FF68); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8017FFB4); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80180138); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_801802CC); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80180378); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_801803E8); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8018042C); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80180480); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80180558); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80180598); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_801805E4); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8018062C); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80180674); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80180694); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_801806E0); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8018078C); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80180834); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80180894); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_801808F0); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80180944); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80180A50); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80180A98); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80180BEC); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80180CD4); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80180D30); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80180DC4); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80180E68); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_801810F8); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_801811C8); - -void func_80181204(A801593E4 *a0) { - S801593E4 *v1 = a0->p20; - v1->field12 = (v1->field12 + 0x44) & 0xFFF; -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80181224); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80181270); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80181304); - - -extern s32 func_8017DCC8(void); - extern void func_8012C098(void *a0); - void func_80181394(void *a0) { - if (((s32 (*)(s32))func_8017DCC8)((s32)a0) == 12) { - ((void (*)(s32))func_8012C098)((s32)a0); - } - } - - -extern s32 func_8001739C(s32 *a0); -void func_801813D0(void) { - - extern s32 D_80185FA8; - func_8001739C(&D_80185FA8); -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_801813F8); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8018140C); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80181534); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80181578); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80181620); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_8018165C); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_801816D4); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80181728); - -void func_801817C8(void) { -} - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_801817D0); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80181B2C); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80181B98); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80181C54); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80181CDC); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80181D48); - - - -void func_80181E20(void *a0) { - - extern void (*D_80186090[])(void); - D_80186090[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80181E5C); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80181EEC); - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8015C32C", func_80181F40); - diff --git a/src/ov_SC07_010/ov_SC07_010_jr_8017AE2C.c b/src/ov_SC07_010/ov_SC07_010_jr_8017AE2C.c new file mode 100644 index 000000000..372cef011 --- /dev/null +++ b/src/ov_SC07_010/ov_SC07_010_jr_8017AE2C.c @@ -0,0 +1,3848 @@ +#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 { s32 a, b, c; } Rec12; +typedef struct { s32 a, b; s8 c; } __attribute__((packed, aligned(1))) Rec9; +typedef struct { s32 f0; } E4; +typedef struct { u16 f0; s16 f2; } Prim4; +typedef struct { s16 x; s16 y; } Hw4; +typedef struct { s32 f0; u32 *f4; s32 f8; s32 fC; s32 f10; } Rec20; +typedef struct { u8 d[0x60]; } Blk60; +typedef struct { s16 unk0, unk2, unk4, unk6; } Vec8; +typedef void (*code)(unsigned short *); +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4; +typedef struct { B8_80165140 a; B4 b; s32 used; } Slot; +struct W4 { u32 w; } __attribute__((packed, aligned(1))); +typedef struct { s16 ax, ay, a04, a06, bx, by, b0c, b0e, cx, cy, c14, c16, dx, dy, d1c, d1e, u0, v0, u1, v1, u2, v2, u3, v3; u8 r, g, b, pad33; s32 tag; u8 code, pad39, pad3a, pad3b; s32 pad3c; } Prim_B234; +typedef struct { u8 f0; u8 pad[0xc3]; } Slot_998; +typedef struct { s32 w[8]; } Blk32_998; +typedef struct { short vx, vy, vz, pad; } SVEC_L1; /* 8 bytes */ +typedef struct { int a[8]; } MTX_L1; /* 32 bytes */ +extern void func_80016714(void *a0, s32 a1); +extern void func_8013C98C(void); +extern void func_80019064(void *a0); +extern void func_8013C9C4(void * arg0); +extern void func_8013CA14(void); +extern void func_8013CABC(void); +extern void func_8013CAE8(void); +extern void func_8013CB20(void); +extern void func_8013CB5C(void); +extern s16 currentLocationId; +extern void func_8013DBE4(); +extern void func_8013D9B0(); +extern void func_8013D330(void); +extern void func_8013D178(void); +extern void func_8013CF68(void); +extern void func_8013CB84(void); +extern void func_8013CF68(); +extern void func_8013D064(void); +extern s32 func_8013D13C(void); +extern void func_8013D164(void); +extern void func_8013D53C(void); +extern void func_8013DD68(void); +extern void func_8013D8FC(void); +extern void func_8013D3D4(int param_1, int param_2); +extern void func_800599B8(s32 a0, s32 a1); +extern void func_8013D9B0(int param_1); +extern void func_8013DBE4(int param_1); +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 s16 D_80126CB0; +extern s32 func_8013E298(s16 *a0); +extern s16 D_80126CAC; +extern short D_80126CAE; +extern int func_8013E2C4(short *a0); +extern void *D_801274CC; +extern s32 func_8013E410(void); +extern s32 func_8013E448(s32 a0); +extern void func_8012C724(s32 a0, s32 a1); +extern void func_8013E370(void); +extern u8 D_801202A0[]; +extern s32 (*D_801274D0)(s32); +extern s32 D_801274D8; +extern s32 D_801274DC; +extern s32 func_800132BC(s32 a0, s32 a1); +extern s32 func_8013E448(s32 param_1); +extern void func_800D24A0(s32 a0); +extern void func_80141788(void); +extern void *D_8011DB24; +extern void func_8013E558(void); +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_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); +extern void func_8013E5E8(void); +extern void func_8013E67C(void); +extern void func_8013E83C(void); +extern s32 func_80029504(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_80137B80(void); +extern void func_8013E958(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern short D_800B9A02; +extern u8 D_801151C8[]; +extern s32 D_801151D0; +extern u16 D_8011511A; +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 void func_80139954(void); +extern void func_801376E8(int a0, int a1); +extern unsigned char *func_80141CA4(void); +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 s32 func_800D0488(s16 a0); +extern void func_800D2624(void); +extern void func_8013EF88(void); +extern void func_8013F138(void); +extern unsigned short D_80115114; +extern unsigned short D_80115118; +extern void func_8013F1BC(void); +extern void func_80141C0C(s32); +extern u16 D_8011511C; +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_8011514E; +extern u8 D_80115152; +extern u8 D_80115158[]; /* macro-canonical (§8e) */ +extern u8 D_8011515C; /* macro-canonical (§8e) */ +extern u8 D_8018305C[]; +extern u8 D_80183074[]; +extern u16 D_80182F78[]; +extern s32 func_80029178(s32 arg); +extern s32 func_800291B4(s32 arg); +extern void func_8014AA04(s32 a0); +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) */ +extern s32 func_8013F350(void); +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 void func_8013FAF8(s16 arg0, s16 arg1); +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); +extern int func_800D2CA8(int, int); +extern void func_800D2D10(int, int, void *, int); +extern int func_80029FE4(void); +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); +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); +extern int func_80141100(int param_1); +extern void func_800291A0(s32, s32); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_801415C0(s32 param_1, s32 param_2); +extern u8 D_80115148[]; +extern u8 D_80115149[]; +extern u8 D_80115158[]; +extern u8 D_8011514D; +extern u8 D_8011515C; +extern s32 func_800D11F0(s32 a0); +extern s32 func_800D1658(s32 a0); +extern s32 func_801416D4(s16 param_1); +extern void func_8001903C(void); +extern void func_801417C4(void); +extern u8 D_800B9A16; +extern u16 D_80115114; +extern void func_801417F8(void); +extern volatile u16 D_8011511A; +extern u16 D_8011512E; /* §17a-1: canonical width (jr_8013F350 TUs decl u16); byte-neutral here (only use is store-0) */ +extern s32 func_80029178(s32 a0); +extern void func_801418F8(void); +extern void func_80141A60(void); +extern void func_80141C0C(s32 param_1); +extern s32 func_80015144(void); +extern unsigned char D_80112C04[]; +extern unsigned char D_80112C50[]; +extern unsigned char D_80112C9C[]; +extern unsigned char D_80112CE8[]; +extern unsigned char D_80112D38[]; +extern unsigned char D_80112D78[]; +extern unsigned char D_80112DBC[]; +extern unsigned char D_80112DF4[]; +extern unsigned char D_80112E14[]; +extern unsigned char D_80112E40[]; +extern unsigned char D_80112E6C[]; +extern unsigned char D_80112EBC[]; +extern unsigned char D_80112F0C[]; +extern unsigned char D_80112F48[]; +extern unsigned char D_80112F9C[]; +extern unsigned char D_80112FDC[]; +extern unsigned char D_8011302C[]; +extern unsigned char D_80113074[]; +extern unsigned char D_801130B8[]; +extern unsigned char D_801130E8[]; +extern unsigned char D_80113138[]; +extern unsigned char D_8011317C[]; +extern unsigned char D_801131A8[]; +extern unsigned char D_801131E8[]; +extern unsigned char D_80113214[]; +extern unsigned char D_80113254[]; +extern unsigned char D_80113278[]; +extern unsigned char D_801132B8[]; +extern unsigned char D_801132E4[]; +extern unsigned char D_80113324[]; +extern unsigned char D_80113360[]; +extern unsigned char D_801133A4[]; +extern unsigned char D_801133F4[]; +extern unsigned char D_80113440[]; +extern unsigned char D_80113474[]; +extern unsigned char D_801134B0[]; +extern unsigned char D_801134FC[]; +extern unsigned char D_80113530[]; +extern unsigned char D_80113554[]; +extern unsigned char D_801135A8[]; +extern unsigned char D_80113600[]; +extern unsigned char D_80113650[]; +extern unsigned char D_80113694[]; +extern unsigned char D_801136DC[]; +extern unsigned char D_80113724[]; +extern unsigned char D_80113744[]; +extern unsigned char D_80113770[]; +extern unsigned char D_80113794[]; +extern unsigned char D_801137D8[]; +extern unsigned char D_8011381C[]; +extern unsigned char D_8011383C[]; +extern unsigned char D_8011386C[]; +extern unsigned char D_801138A4[]; +extern unsigned char D_801138D0[]; +extern unsigned char D_80113900[]; +extern unsigned char D_80113944[]; +extern unsigned char D_80113964[]; +extern unsigned char D_8011399C[]; +extern unsigned char D_801139E8[]; +extern unsigned char D_80113A28[]; +extern unsigned char D_80113A50[]; +extern unsigned char D_80113A84[]; +extern unsigned char D_80113AB0[]; +extern unsigned char D_80113AE0[]; +extern unsigned char D_80113B34[]; +extern unsigned char D_80113B68[]; +extern unsigned char D_80113BA4[]; +extern unsigned char D_80113BC0[]; +extern unsigned char D_80113BF0[]; +extern unsigned char D_80113C20[]; +extern unsigned char D_80113C3C[]; +extern unsigned char D_80113C7C[]; +extern unsigned char * func_80141CA4(void); +extern s32 func_8012C588(s32 a0, s32 a1); +extern void func_80142414(s32 a0, s16 a1); +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s32 func_8012C51C(void *a0, s32 a1); +extern void func_80142454(s32 a0); +extern void func_8012C218(void *a0); +extern void func_801424E4(short *param_1); +extern void func_801425CC(void *a0); +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 void func_80142608(s32 param_1); +extern void func_801426D4(s32 a0); +extern s32 func_8012BEE8(s32 a0); +extern void func_80142740(int param_1); +extern void func_80142778(u8 *a1); +extern void func_801427DC(void); +extern void func_801427E4(void); +extern void func_801427EC(int param_1); +extern s32 func_80142DB8(s32 *a0); +extern s32 func_80142D38(s32 *a0); +extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); +extern void func_801428CC(s32 *a0); +extern void func_8014292C(int param_1); +extern void func_80142978(int param_1); +extern void func_801429C4(int param_1); +extern void func_80142A80(void); +extern void func_80142C7C(void); +extern void func_80142C84(s32 a0); +extern void func_8012CBF4(s32 a0); +extern void func_80142C9C(s32 * arg0); +extern void func_80142B2C(void *arg0); +extern void func_80142DC4(int param_1); +extern void func_80142E38(int param_1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_80142EC0(s32 param_1); +extern void func_80142FFC(s32 *a0); +extern void func_8014305C(int param_1); +extern void func_80143188(s32 *a0); +extern void *memcpy(void *, const void *, u32); +extern int func_8001CA88(int, void *); +extern s32 func_8012E504(s32 a0, s32 a1); +extern void func_800233CC(void *, unsigned short); +extern void func_801431E8(s32 param_1); +extern s32 func_8012C044(s32 a0); +extern void func_80142C9C(s32 *a0); +extern s32 func_8012BF10(s32 a0, s32 a1); +extern void func_8012AD44(s32 *a0, s16 a1); +extern void func_801432FC(s32 *a0); +extern void func_80143390(s32 *a0); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern void func_80143458(s32 param_1); +extern void func_8014358C(s32 param_1); +extern u8 *func_8012913C(s32 a0); +extern s32 rand(void); +extern void func_80143640(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_801437D8(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80143970(s32 a0); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern void func_80143994(s32 a0, s32 a1); +extern void func_801439C0(u8 *a0); +extern s32 func_80134510(s32 arg); +extern s32 ratan2(s32 a0, s32 a1); +extern s16 D_801152AC; +extern s16 D_801152AA; +extern u8 D_801152A8[]; +extern void func_801439FC(s32 a0); +extern void func_80143B30(void *a0); +extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_80143B6C(s32 arg0, s32 arg1); +extern void func_80143BDC(u16 *a0); +extern void func_80143C38(void *a0); +extern void func_80143C74(s32 a0, s32 a1); +extern void func_80143C98(void *a0); +extern void func_80143CD4(s32 a0); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern void func_80143D28(s32 param_1); +extern void func_80143E68(void *a0); +extern void func_80143EA4(void); +extern void func_80143EAC(void); +extern void func_80143EB4(void); +extern s32 func_8004787C(s32 a0); +extern void func_80143EBC(s32 a0); +extern void func_80144054(void *a0); +extern void *func_80010A08(s32); +extern void func_8004914C(void *a0); +extern void func_800491AC(void *a0); +extern s32 RotTransPers(s32, s32, s32 *, s32 *); +extern s32 func_80047948(s32 a0); +extern s32 AddPrim(s32, void *); +extern void func_80144090(s32 param_1); +extern void func_801442F8(int param_1); +extern void func_8012C194(void); +extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80144364(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8012B200(u8 *a0); +extern u8 D_800D387C[]; +extern u8 D_800D3888[]; +extern void func_80144558(u8 *param_1); +extern void func_801446A4(int param_1); +extern void func_8014477C(void *param_1); +extern void func_80144880(s32 param_1); +extern void func_80144988(s32 a0); +extern void func_801449C8(void *a0); +extern void func_80144A04(s32 *a0); +extern void func_80144A2C(void *a0); +extern void func_80144A68(s32 *a0); +extern void func_80144A90(void); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_80144A98(u8 *a0); +extern void func_80144B14(void); +extern void func_80144AEC(s32 *a0); +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 void func_80145B24(void); +extern void func_80145934(void); +extern void func_80145A2C(void); +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 void func_80145BF8(void); +extern void func_80145C54(void); +extern void func_80146014(s32 a0); +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(void); +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 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_80146C3C(u8 *a0); +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 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 volatile s32 D_80127090; +extern volatile s32 D_80127094; +extern volatile s32 D_80127098; +extern void func_80147F78(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80148038(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_80148D44(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); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +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 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 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_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 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +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_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_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 u8 D_80078E78[]; +extern s32 func_8016F1C4(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_8014BD60(s32 a0, s32 a1); +extern void func_8014B084(void); +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +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 void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +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 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_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_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 s32 func_80133784(s32 a0, void *a1, s32 a2); +extern void func_8014C1C8(s32 a0, s32 a1, void* a2); +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 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 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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +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 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 void func_8014DF94(s32 arg0); +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); /* canonical (engine_core.h:11555) */ +extern s32 func_8014E284(s32 a0, s16 *arg1, s16 *arg2); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E48C(s32 a0); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +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 u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014ED80(struct SubED80 *a0); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014F4C0(u8 *a0); +extern void func_8014F468(void); +extern u8 D_800D3918[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern void func_8014FA04(s32 a0); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern s32 func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_80135D20(s32 a0, s32 a1, void *a2); +extern s32 func_8014FFDC(s32 e, void *a1, void *a2); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_801502EC(s32 e, void *a1, void *a2); +extern s32 func_80150460(s32 e, s32 a1); +extern s32 func_80150170(void *e); +extern s32 func_80150460(s32 a, s32 b); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern void func_801504D8(u16 *a0); +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 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 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B28(int 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 u8 D_80126948[]; +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 void 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 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 func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +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 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 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 func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +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 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 func_80152C80(s32* a0); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +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 func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern u8 D_80062C04[]; +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 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 func_8014ED28(s32 _arg0); +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 void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +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 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 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 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 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(void *a0); +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 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 a0, s32 a1, s32 a2, s32 a3); +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 func_8014CC28(s32 a0); /* defined */ +extern void 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 void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_80157808(s32 a0); +extern void func_801577C8(int param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +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 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 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 func_80158038(void *); +extern void func_80158000(void *a0); +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 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 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 void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +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 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 int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80158F00(int param_1); +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 u8 D_80110C3C[]; +extern void func_80159120(s32 a0); +extern void func_801592CC(s32 *a0); +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +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_8002850C(s32, s32, s32); +extern void func_80028620(s32, void *); +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 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 func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +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 func_8015A2A0(s32 a0); +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 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 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(void); +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 func_8015C0C4(s32); +extern void func_8015C08C(s32 a0); +extern void func_8014D738(void); +extern s32 func_8015C128(s32 param_1); +extern s32 func_801496D4(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 void func_80149954(s32 a0); +extern s32 func_80149A64(s32*); +extern void func_800CCCC0(s32 a0); +extern void func_80147A84(s32 a0); +extern void func_801473EC(s32*); +extern void func_8014CC28(s32); +extern void func_8014F3E8(s32); +extern void func_80159BE4(s32 a0); +extern void func_8015C6E0(s32*); +extern void func_8015C32C(s32 arg0); +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 func_8015C788(s32); +extern void func_8015C750(s32 a0); +extern s32 func_80161B18(void *a0); +extern s32 func_80161B84(void *a0); +extern void func_80161240(void *a0); +extern void func_80161C24(s32, s32); +extern void func_8015C7E4(u16 *param_1); +extern void func_8015C944(int param_1); +extern void func_8015CA28(u16 *param_1); +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 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 func_8014E6A0(void); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +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 void func_80154150(int, int); +extern void func_80149374(int, int); +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_8015F89C(void *arg0); +extern void func_8015F9A4(void *arg0); +extern int func_8015DD74(int); +extern void func_8015DBD4(void *arg0); +extern int func_8015DC84(int a0); +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 void func_8015E5B0(u8*); +extern void func_8015E344(u16 *param_1); +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8015E5B0(u8 *self); +extern void func_8015E698(u16 *param_1); +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 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 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_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_80146DB8(s32*, s32*); +extern void func_80146E90(s32*, s32); +extern s32 func_801725B8(u8*); +extern void func_80019064(void*); +extern void func_801484B0(s32, s32); +extern void func_80148534(s32, s32); +extern void func_8015F448(s32 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_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); +extern void func_80147078(s32 *, s16); +extern void func_80159B70(void *); +extern void func_8015F948(s32 *param_1); +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 void func_8015FD74(int param_1); +extern u8 func_80165700(s32 a0, s32 a1); +extern void func_8015FDCC(s32 a0); +extern void func_8015FE70(u16 *param_1); +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 u16 D_801270C0; +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_801602A4(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_80160534(u8 *p); +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_80160A74(s32 *a0); +extern void func_80160920(unsigned short *param_1); +extern void func_801609B8(u16 *param_1); +extern void func_80160A28(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 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_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 void func_80161C98(int param_1, u32 param_2); +extern void func_80161E08(s32); +extern s32 func_80162438(s32); +extern void func_800D1734(void *); +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 void func_8016216C(void); +extern s32 func_801621CC(s32 arg0); +extern void func_801622C4(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 void func_80162760(void); +extern void func_801627C0(void); +extern void func_80162834(void *a0); +extern void func_80162968(s32 a0); +extern s32 func_80162ACC(u8 *a0); +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_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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +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 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 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 void func_801647A4(int param_1); +extern void func_80164ACC(); +extern void func_80164864(void *a0); +extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80164ACC(s32 a0); +extern void func_80164BA0(void *a0); +extern void func_8001CD50(s32 a0, s32 a1); +extern void func_80164DD0(s32 a0); +extern void func_80164DB0(void); +extern void func_80164BDC(s32 param_1); +extern s32 func_80164E40(void); +extern void func_80164CD4(u8 *a0); +extern void func_80164D4C(void *arg0); +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 void func_80165240(void *param_1, void *param_2, void *param_3); +extern void func_801651B8(void * param_1); +extern void func_80016ED4(void *a0); +extern s32 func_80017DC4(void *a0, void *a1); +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 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 func_801656D0(s32 a0, s32 a1); +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 u8 D_80078EC2; +extern s32 func_80165A50(s32 _arg0); +extern void func_80165AC8(void); +extern void func_80165A78(s32 arg0); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(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 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_80166018(void *a0); +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 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_801665B4(); +extern void func_80146C3C(); +extern void func_80166438(u8 *a0); +extern void func_80166618(void *a0); +extern void func_80166654(void *a0); +extern s32 func_80166994(); +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 void func_80048EAC(void *a0, void *a1); +extern s32 func_801670E4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_801678B4(void *a0); +extern void func_80167A9C(void *a0); +extern void func_80167AD8(void); +extern int func_80029178(int); +extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); +extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); +extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); +extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); +extern void func_80166F58(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_801681FC(s32 param_1); +extern void func_80168430(s32 param_1); +extern void func_80168640(s32 a0); +extern Blk20 D_800AE620; +extern s32 RotMatrixX(s32 a0, void *a1); +extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80168664(void *arg0); +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_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168AA8(void *a0); +extern void func_80168AE4(s32 a0); +extern void func_80168D58(void *a0); +extern void func_80168F40(void *arg0); +extern void func_8016901C(void *a0); +extern void func_80169058(s32 a0); +extern void func_801693CC(void *a0); +extern void func_80169584(s32 param_1); +extern void func_801696D8(s32 a0, s32 a1); +extern void func_80169830(void *a0); +extern void func_8016986C(s32 a0); +extern s32 func_80169A4C(s32 a0, s32 a1); +extern void func_80169B80(void *a0); +extern void func_80169F00(void *a0); +extern void func_8016A020(void *a0); +extern void func_8016A05C(void *a0); +extern void func_8016A700(void *a0); +extern s32 func_80016A5C(); +extern s32 func_8016A8FC(s32 a0); +extern void func_8016AB30(void *a0); +extern void func_8016B234(); +extern void func_800D22E4(s32 a0); +extern void func_8016AFB0(s32 a0); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +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 func_8016B4BC(void *a0); +extern int func_8016B9F8(int); +extern int func_8016B834(int, int); +extern void func_8016B91C(int); +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 void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +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 void func_8012EFB8(s32 a0); +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void func_8016BBA4(void *a0); +extern void func_8016BF50(s32); +extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8016BD78(s32 param_1); +extern void func_8016BF34(void *a0); +extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +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 short func_8016CBC0(void); +extern void func_8016C998(s32 param_1); +extern void func_8016CB84(void *a0); +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 func_8016D428(void *a0); +extern void func_8016D464(u8 *a0); +extern void func_8016D4DC(s32 a0); +extern void func_8016D688(int param_1); +extern void func_8016DBD8(u8 *a0); +extern void func_8016DA30(int param_1); +extern void func_8016DEA4(void *a0); +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_8016E460(void *arg0, void *arg1); +extern void func_8016E5B8(void *a0); +extern void func_8016E778(); +extern void func_8016E688(void *a0); +extern void func_8016E6E4(s32 a0); +extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); +extern void func_8016E778(int param_1); +extern s32 D_80115218; +extern void func_8016E8F0(void); +extern void func_8016E918(short param_1, short param_2); +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern void func_8016EB3C(s32 p); +extern void func_8016EBA8(u8 *param_1); +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 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); +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 func_8016F6E0(void *a0); +extern s32 func_80171990(u8 *a0); +extern void func_8016F764(void *a0); +extern void func_8016F71C(u8 *a0); +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 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 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 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 func_8016FA84(void *a0); +extern void func_8016FB10(void *a0); +extern void func_8016FAC0(u8 *a0); +extern void func_8016FB50(void *a0); +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 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 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 func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +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 func_80170150(void *a0); +extern void func_801701C8(u8 *a0); +extern void func_8017018C(u8 *a0); +extern void func_801701C8(u8 * a0); +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 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 func_801703E0(void *a0); +extern void func_8017044C(u8 *a0); +extern void func_8017041C(u8 *a0); +extern void func_8017044C(u8 * a0); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +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 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 func_801706AC(void *a0); +extern void func_80170718(void *a0); +extern void func_801706E8(u8 *a0); +extern void func_80129FF4(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 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 func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +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 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 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 func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +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 func_80171120(void *a0); +extern void func_8017118C(u8 *a0); +extern void func_8017115C(u8 *a0); +extern void func_8017118C(u8 * a0); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +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 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_8017248C(s32, s32); +extern s32 ratan2(s32, s32); +extern void func_80172170(s32, s32); +extern void func_80146D90(s32); +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_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 s32 func_80172CA0(void *a0); +extern void func_80172C50(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 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_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 s32 func_8014C118(void*, s32, s32); +extern s32 func_80173B4C(void*); +extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern void func_80173BC0(u8 *a0); +extern void func_80173B88(u8 *a0); +extern s16 D_80126B3A; +extern s16 D_8011F9C8; +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 s32 func_8016F0AC(); +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(s32); +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 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 s32 func_80175268(s32); +extern void func_80175184(s32* arg0); +extern s32 func_80175218(void *a0); +extern void func_801751D8(void *a0); +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_8011F7AD; +extern u8 D_8011F7AE; +extern void func_80175414(s32 _arg0); +extern void func_80175494(void); +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 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 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_801775E0(s32 param_1, s32 param_2); +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 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 s32 D_8011DB08; +extern void func_8017849C(void); +extern void func_8013E4B4(void); +extern s16 D_801270C4; +extern s16 D_801270C2; +extern u8 D_801270C6; +extern u8 D_801270C7; +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 void func_8012E8E0(s32 a0, s32 a1); +extern void func_8012B2CC(s32 a0); +extern s32 func_801788B8(s32 arg0, s32 arg1); +extern int func_801789AC(void); +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 void func_80178BF8(s32 _unused0, s32 _unused1); +extern M2C_UNK func_80178D40(s32 arg0, s32 arg1); +extern void func_80178CBC(s32 arg0, s32 arg1); +extern void func_80178D18(void); +extern void func_80179B28(s32 a0); +extern void func_80179B74(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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 void func_8017A094(s32 arg0); +extern void func_8017A0C4(s32 arg0); +extern void func_8017A0F4(void); +extern void func_8017A11C(void); +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 s32 func_8017A3B0(void); +extern int func_800D0CA0(int); +extern int func_8001AAA0(void); +extern int func_800D0CE0(void); +extern int func_8017A3D8(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_801A94A0; +extern s16 D_801A94A2; +extern s16 D_801A94AC; + +void func_8017AE2C(s32 param_1) { + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_801A94A0; + + 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_801A94AC); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_801A94A0+0xC == &D_801A94AC; 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_801A94A0 + 0xC)) < 0x101) { + D_801A94A0 = 0; + D_801A94A2 = 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_801A94AC); + 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_801A94A0 + 0xC)) < 0x101) { + D_801A94A0 = 0; + D_801A94A2 = 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; +} + +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); + +// @class: plumbing +// @stuck: none — MATCH + + +void func_8017B0E4(int param_1, int param_2) +{ + extern s16 D_801A7CCC; + extern s16 D_801A7CCE; + extern s16 D_801A7CD0; + extern s16 D_801A7CC4; + extern s16 D_801A7CC6; + extern s16 D_801A7CC8; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801A7CCC, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801A7CCE, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801A7CD0, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801A7CC4, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801A7CC6, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801A7CC8, (s32)((s16)param_2)); +} + + +extern void func_8012A418(void); + +void func_8017B1D8(void) { + + extern u16 D_80126B5E; + extern u16 D_80126B62; + extern u16 D_80126B66; + extern s16 D_801A7C54; + extern u16 D_801A7CD4; + extern u16 D_801A7CD6; + extern u16 D_801A7CD8; + extern s16 D_801A94D0; + func_8012A418(); + D_801A94D0 = 0; + D_801A7C54 = 0; + D_801A7CD4 = D_80126B5E; + D_801A7CD6 = D_80126B62; + D_801A7CD8 = D_80126B66; +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017B238); + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16; /* 16-byte stride array element */ + + + +s32 func_8017B368(s32 param) +{ + + extern s16 D_801A7C54; + extern s16 D_801A94D0; + extern void func_8017BA3C(s32 param_1, s32 param_2); + extern void func_8012F214(s32 a0, s32 a1, s32 a2); + extern SV4_8017B368 D_801A7C74; + extern SV4_8017B368 D_801A7C7C; + extern s16 D_801A7CCC; + extern s16 D_801A7CC4; + extern u16 D_80185900; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_801A7C74; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801A7C7C; + } else { + s32 ax = (s32)&((Pair16 *)&D_80185900)[n].x; + s32 ay = (s32)&((Pair16 *)&D_80185900)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801A7CCC) = loc0; + (*(SV4_8017B368 *)&D_801A7CC4) = loc1; + D_801A94D0 = 1; + D_801A7C54 = 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_801A7C74; + extern SV4_8017B368 D_801A7C7C; + extern s16 D_801A7CCC; + extern s16 D_801A7CC4; + extern u16 D_80185900; + extern s16 D_801A7C54; + extern s16 D_801A94D0; + 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_801A7C74; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_801A7C7C; + } else { + s32 ax = (s32)&((Pair16 *)&D_80185900)[n].x; + s32 ay = (s32)&((Pair16 *)&D_80185900)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_801A7CCC) = loc0; + (*(SV4_8017B368 *)&D_801A7CC4) = loc1; + D_801A94D0 = 1; + D_801A7C54 = 0x1E; + D_80126990 = (*(SV4_8017B368 *)&D_801A7CCC).a; + D_80126994 = (*(SV4_8017B368 *)&D_801A7CCC).b; + D_80126998 = (*(SV4_8017B368 *)&D_801A7CCC).c; + D_80126984 = (*(SV4_8017B368 *)&D_801A7CC4).a; + D_80126988 = (*(SV4_8017B368 *)&D_801A7CC4).b; + D_8012698C = (*(SV4_8017B368 *)&D_801A7CC4).c; +} + + +extern void func_8012A018(s32 a, s32 b); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +s32 func_8017B614(s32 param_1, s32 param_2) +{ + + extern s32 D_80126990; + extern s32 D_80126994; + extern s16 D_801A7C54; + extern s16 D_801A94D0; + extern void func_8012F214(s32 a0, s32 a1, s32 a2); + extern void func_80129CF8(void); + extern s32 func_8017BE60(void *a0); + extern u8 D_80185900[]; + extern s16 D_801A7CCC; + extern s16 D_801A7CCE; + extern s16 D_801A7CD0; + extern s16 D_801A7CC4; + extern s16 D_801A7CC6; + extern s16 D_801A7CC8; + 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_80185900[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80185900[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_801A7CCC; + s16 *p78C = &D_801A7CC4; + *(Blk8_8017B614 *)p794 = *(Blk8_8017B614 *)&buf[0]; + *(Blk8_8017B614 *)p78C = *(Blk8_8017B614 *)&buf[8]; + func_8012A018((s32)func_8017BE60, 0); + { + s32 v794, v796, v798, v78C, v78E, v790; + D_8012694C = 0; + v794 = *p794; + v796 = D_801A7CCE; + v798 = D_801A7CD0; + v78C = *p78C; + v78E = D_801A7CC6; + v790 = D_801A7CC8; + __asm__ __volatile__(""); + D_801A94D0 = 1; + D_801A7C54 = 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 + + + +void func_8017B7A8(void) +{ + + 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_801A7C54; + extern s16 D_801A7CCC; + extern s16 D_801A7CCE; + extern s16 D_801A7CD0; + extern s16 D_801A7CC4; + extern s16 D_801A7CC6; + extern s16 D_801A7CC8; + D_8012694C = 1; + D_801A7C54 = 0; + D_801A7CCC = (s16) D_80114F30; + D_801A7CCE = (s16) D_80114F34; + D_801A7CD0 = (s16) D_80114F38; + D_801A7CC4 = (s16) D_80114F24; + D_801A7CC6 = (s16) D_80114F28; + D_801A7CC8 = (s16) D_80114F2C; +} + + + + +void func_8017B824(void) { + + extern s32 D_801151D4; + extern s16 D_801A7CE4; + extern s16 D_801A7CE6; + extern s16 D_801A7CE8; + extern s16 D_801A7CEC; + extern s16 D_801A7CEE; + extern s16 D_801A7CF0; + D_801A7CE4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_801A7CE6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_801A7CE8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_801A7CEC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_801A7CEE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_801A7CF0 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + + + +void func_8017B880(void) +{ + + extern s16 D_801A7CE4; + extern s16 D_801A7CE6; + extern s16 D_801A7CE8; + extern s16 D_801A7CEC; + extern s16 D_801A7CEE; + extern s16 D_801A7CF0; + extern s32 D_80114F30; + extern s32 D_80114F34; + extern s32 D_80114F38; + extern s32 D_80114F24; + extern s32 D_80114F28; + extern s32 D_80114F2C; + D_80114F30 = D_801A7CE4; + D_80114F34 = D_801A7CE6; + D_80114F38 = D_801A7CE8; + D_80114F24 = D_801A7CEC; + D_80114F28 = D_801A7CEE; + D_80114F2C = D_801A7CF0; +} + + + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + + extern s16 D_801A7CC4; + extern s16 D_801A7CCC; + (*(S8_8017B8E8 *)&D_801A7CCC) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_801A7CC4) = ((S8_8017B8E8 *)src)[1]; +} + + + + +// @class: struct +// @stuck: none — MATCH (63 ins) + + + + +void func_8017B940(void) +{ + + extern u16 D_80126B5E; + extern u16 D_80126B62; + extern u16 D_80126B66; + extern u16 D_801A7CD4; + extern u16 D_801A7CD6; + extern u16 D_801A7CD8; + 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_801A7C54; + extern short D_801A7CDC; + extern short D_801A7CDE; + extern short D_801A7CE0; + extern s16 D_801A7CCC; + extern s16 D_801A7CCE; + extern s16 D_801A7CD0; + extern s16 D_801A7CC4; + extern s16 D_801A7CC6; + extern s16 D_801A7CC8; + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801A7CD4); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801A7CD6); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801A7CD8); + (*(s16 *)&D_801A7CDC) = buf[0]; + (*(s16 *)&D_801A7CDE) = buf[1]; + (*(s16 *)&D_801A7CE0) = buf[2]; + D_801A7CCC = D_80114F30 + buf[0]; + D_801A7C54 = 0; + D_801A7CCE = D_80114F34 + buf[1]; + D_801A7CD0 = D_80114F38 + buf[2]; + D_801A7CC4 = D_80114F24 + buf[0]; + D_801A7CC6 = D_80114F28 + buf[1]; + D_801A7CC8 = D_80114F2C + buf[2]; +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017BA3C); + +extern void func_8004914C(void *a0); +extern void func_800491AC(void *a0); +extern void func_80049CAC(s32 a0, s32 a1); + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + + extern s32 D_801A7C74; + extern SV4_8017B368 D_801A7C7C; + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_801A7C7C)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_801A7C74) = 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_801A7C7C) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + + +void func_8017BC38(int param_1) +{ + + extern void (*D_801A7C9C[10])(int); + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_801A7C9C; + 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); + +void func_8017BCA0(int param_1) { + + extern s16 D_801A7C54; + extern s16 D_801A94D0; + func_8017B0E4(param_1, 0xC); + D_801A7C54 = D_801A7C54 + 1; + if (D_801A7C54 >= 0x1F) { + D_801A94D0 = 2; + } +} + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + + extern s16 D_801A7C54; + extern s16 D_801A94D0; + func_8017B0E4(param_1, 6); + D_801A7C54 = D_801A7C54 + 1; + if (0x18 < D_801A7C54) { + func_8012A4BC(); + D_801A94D0 = 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); + + + +void func_8017BD50(int param_1) +{ + + extern s16 D_801A7C54; + extern void (*D_801A7C98)(void); + extern short D_801A7CDC; + extern short D_801A7CDE; + extern short D_801A7CE0; + extern s16 D_801A94D0; + extern s32 D_80114F24; + extern s32 D_80114F28; + extern s32 D_80114F2C; + extern s32 D_80114F30; + extern s32 D_80114F34; + extern s32 D_80114F38; + func_8017B0E4(param_1, 6); + D_801A7C54 = D_801A7C54 + 1; + if (D_801A7C54 >= 0x19) { + if (D_801A7C98 != 0) { + (*D_801A7C98)(); + } else { + D_80114F30 = D_80114F30 + D_801A7CDC; + D_80114F34 = D_80114F34 + D_801A7CDE; + D_80114F38 = D_80114F38 + D_801A7CE0; + D_80114F24 = D_80114F24 + D_801A7CDC; + D_80114F28 = D_80114F28 + D_801A7CDE; + D_80114F2C = D_80114F2C + D_801A7CE0; + func_8012A4BC(); + } + D_801A94D0 = 0; + } +} + + + + +void func_8017BE60(void *a0) { + + extern void (*D_801859A0[])(void); + D_801859A0[*(u8 *)((s32)a0 + 0x4)](); +} + + +void func_8017BE9C(void) { +} + +void func_8017BEA4(void) { +} + +void func_8017BEAC(void) { +} + +void func_8017BEB4(void) { +} + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017BEBC); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017C294); + +int func_8017C338(short *param_1, short *param_2, short *param_3, int param_4) { + register int i2o __asm__("$5"); + register int i4o __asm__("$9"); + short sVar1; int rx, rz, uVar5; + i4o = param_2[1]; + __asm__ __volatile__("" : : "r"(i4o)); + i2o = param_1[1]; uVar5 = 0; + if (i2o >= i4o) { + rx = param_1[0] - i2o * (param_2[0] - param_1[0]); + rz = param_1[2] - i2o * (param_2[2] - param_1[2]); + } else { + register int den __asm__("$3"); + int p2x = param_2[0], p2z = param_2[2]; + den = i2o - i4o; + rx = p2x + i4o * (p2x - param_1[0]) / den; + rz = p2z + i4o * (p2z - param_1[2]) / den; + } + if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } + else i2o = -0x7fff; + *param_3 = (short)i2o; + if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } + else i2o = -0x7fff; + param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; + if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } + if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } + if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } + if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } + return uVar5; +} + + +extern void ReadGeomOffset(s32 *a0, s32 *a1); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +extern void func_8004921C(s32 a0, s32 a1); +void func_8017C530(s32 a0, s32 a1) { + s32 ofx; + s32 ofy; + s32 sxy; + s32 p; + ReadGeomOffset(&ofx, &ofy); + func_8004921C(0, 0); + RotTransPers(a0, a1, &sxy, &p); + func_8004921C(ofx, ofy); +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017C59C); + + + +void func_8017D468(void *a0) { + + extern void (*D_801859FC[])(void); + D_801859FC[*(u8 *)((s32)a0 + 0x15)](); +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017D4A4); + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017D4F8(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + + +void func_8017D51C(void *a0) { + + extern void (*D_80185A04[])(void); + D_80185A04[*(u8 *)((s32)a0 + 0x15)](); +} + + +s32 func_8017D558(void *a0) { + *(s32 *)((s32)a0 + 0x28) = 0xa; + *(u8 *)((s32)a0 + 0x15) = *(u8 *)((s32)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_8017D574(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; +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017D5F0); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017D654); + + + +void func_8017D688(void *a0) { + + extern void (*D_80185BF8[])(void); + D_80185BF8[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017D6C4); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017D708); + + +extern s32 func_8017DCC8(void); + extern void func_80171928(void *a0); + void func_8017D7E4(void *a0) { + if (((s32 (*)(s32))func_8017DCC8)((s32)a0) == 4) { + ((void (*)(s32))func_80171928)((s32)a0); + } + } + + + + +void func_8017D820(void *a0) { + + extern void (*D_80185C24[])(void); + D_80185C24[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017D85C); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017D898); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017D91C); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017D974); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017D9CC); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017DA30); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017DAD0); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017DB14); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017DC10); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017DC68); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017DC90); + +void func_8017DCB8(s32 a0) { + + extern s32 D_801A7CF8; + D_801A7CF8 = a0; +} + + + + +s32 func_8017DCC8(void) { + + extern s32 D_801A7CF8; + return D_801A7CF8; +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017DCD8); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017DDA0); + + + +void func_8017DE68(void *a0) { + + extern void (*D_80185C6C[])(void); + D_80185C6C[*(u8 *)((s32)a0 + 0x4)](); +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017DEA4); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017DEEC); + + + +void func_8017E084(void *a0) { + + extern void (*D_80185CE8[])(void); + D_80185CE8[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017E0C0); + +void func_8017E168(void) { +} + + + +void func_8017E170(void *a0) { + + extern void (*D_80185CF0[])(void); + D_80185CF0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017E1AC); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017E234); + +void func_8017E290(void) { +} + + + +void func_8017E298(void *a0) { + + extern void (*D_80185CFC[])(void); + D_80185CFC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017E2D4); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017E374); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017E3EC); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017E4D0); + +void func_8017E518(void) { +} + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017E520); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017E5B8); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017E70C); + + + +void func_8017E854(void *a0) { + + extern void (*D_80185DB0[])(void); + D_80185DB0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017E890); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017E900); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017E914); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017E97C); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017E99C); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017EAF4); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017EBB8); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017EC6C); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017ED54); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017ED74); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017EE24); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017EE7C); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017EE9C); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017EF4C); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017EFA4); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017EFC4); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017F094); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017F0EC); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017F10C); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017F1CC); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017F214); + +extern void func_8017F2BC(void); +void func_8017F29C(void) { + func_8017F2BC(); +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017F2BC); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017F2FC); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017F31C); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017F3D8); + +extern s32 func_8017F51C(void *a0, void *a1); +extern s32 func_8017F478(u8 *a0); +void func_8017F438(void *a0) { + + extern void *D_80185E44; + if (func_8017F51C(a0, &D_80185E44)) { + func_8017F478((u8 *)a0); + } +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017F478); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017F4A8); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017F51C); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017F54C); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017F5A4); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017F5FC); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017F638); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017F778); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017F798); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017F860); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017FA24); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017FA50); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017FA94); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017FBB8); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017FBD8); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017FC54); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017FD54); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017FED8); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017FF68); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017FFB4); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80180138); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_801802CC); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80180378); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_801803E8); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8018042C); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80180480); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80180558); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80180598); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_801805E4); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8018062C); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80180674); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80180694); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_801806E0); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8018078C); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80180834); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80180894); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_801808F0); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80180944); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80180A50); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80180A98); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80180BEC); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80180CD4); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80180D30); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80180DC4); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80180E68); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_801810F8); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_801811C8); + +void func_80181204(A801593E4 *a0) { + S801593E4 *v1 = a0->p20; + v1->field12 = (v1->field12 + 0x44) & 0xFFF; +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80181224); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80181270); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80181304); + + +extern s32 func_8017DCC8(void); + extern void func_8012C098(void *a0); + void func_80181394(void *a0) { + if (((s32 (*)(s32))func_8017DCC8)((s32)a0) == 12) { + ((void (*)(s32))func_8012C098)((s32)a0); + } + } + + +extern s32 func_8001739C(s32 *a0); +void func_801813D0(void) { + + extern s32 D_80185FA8; + func_8001739C(&D_80185FA8); +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_801813F8); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8018140C); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80181534); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80181578); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80181620); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8018165C); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_801816D4); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80181728); + +void func_801817C8(void) { +} + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_801817D0); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80181B2C); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80181B98); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80181C54); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80181CDC); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80181D48); + + + +void func_80181E20(void *a0) { + + extern void (*D_80186090[])(void); + D_80186090[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80181E5C); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80181EEC); + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80181F40); + + diff --git a/src/ov_SC07_011/ov_SC07_011_jr_8015C32C.c b/src/ov_SC07_011/ov_SC07_011_jr_8015C32C.c index 8db2f7c8f..926eed199 100644 --- a/src/ov_SC07_011/ov_SC07_011_jr_8015C32C.c +++ b/src/ov_SC07_011/ov_SC07_011_jr_8015C32C.c @@ -9066,555 +9066,3 @@ DEFINE_func_8017ADE8() /* dedup: shared engine-core @0x8017ade8 (src/shared) */ DEFINE_func_8017AE08() /* dedup: shared engine-core @0x8017ae08 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_8015C32C", func_8017AE2C); - -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_80190364; - extern s16 D_80190366; - extern s16 D_80190368; - extern s16 D_8019035C; - extern s16 D_8019035E; - extern s16 D_80190360; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80190364, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80190366, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80190368, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019035C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019035E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80190360, (s32)((s16)param_2)); -} - - -extern void func_8012A418(void); - -void func_8017B1D8(void) { - - extern u16 D_80126B5E; - extern u16 D_80126B62; - extern u16 D_80126B66; - extern s16 D_801902EC; - extern u16 D_8019036C; - extern u16 D_8019036E; - extern u16 D_80190370; - extern s16 D_80190488; - func_8012A418(); - D_80190488 = 0; - D_801902EC = 0; - D_8019036C = D_80126B5E; - D_8019036E = D_80126B62; - D_80190370 = D_80126B66; -} - - -INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_8015C32C", func_8017B238); - - -// @class: struct -// @stuck: none — MATCH (74 ins) - -typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ -typedef struct { SV4_8017B368 x, y; } Pair16; /* 16-byte stride array element */ - - - -s32 func_8017B368(s32 param) -{ - - extern s16 D_801902EC; - extern s16 D_80190488; - extern void func_8017BA3C(s32 param_1, s32 param_2); - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern SV4_8017B368 D_8019030C; - extern SV4_8017B368 D_80190314; - extern s16 D_80190364; - extern s16 D_8019035C; - extern u16 D_80181FC0; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_8019030C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_80190314; - } else { - s32 ax = (s32)&((Pair16 *)&D_80181FC0)[n].x; - s32 ay = (s32)&((Pair16 *)&D_80181FC0)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_80190364) = loc0; - (*(SV4_8017B368 *)&D_8019035C) = loc1; - D_80190488 = 1; - D_801902EC = 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_8019030C; - extern SV4_8017B368 D_80190314; - extern s16 D_80190364; - extern s16 D_8019035C; - extern u16 D_80181FC0; - extern s16 D_801902EC; - extern s16 D_80190488; - 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_8019030C; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_80190314; - } else { - s32 ax = (s32)&((Pair16 *)&D_80181FC0)[n].x; - s32 ay = (s32)&((Pair16 *)&D_80181FC0)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_80190364) = loc0; - (*(SV4_8017B368 *)&D_8019035C) = loc1; - D_80190488 = 1; - D_801902EC = 0x1E; - D_80126990 = (*(SV4_8017B368 *)&D_80190364).a; - D_80126994 = (*(SV4_8017B368 *)&D_80190364).b; - D_80126998 = (*(SV4_8017B368 *)&D_80190364).c; - D_80126984 = (*(SV4_8017B368 *)&D_8019035C).a; - D_80126988 = (*(SV4_8017B368 *)&D_8019035C).b; - D_8012698C = (*(SV4_8017B368 *)&D_8019035C).c; -} - - -extern void func_8012A018(s32 a, s32 b); - -// @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. - -typedef struct { u8 b[8]; } Blk8_8017B614; - - - -s32 func_8017B614(s32 param_1, s32 param_2) -{ - - extern s32 D_80126990; - extern s32 D_80126994; - extern s16 D_801902EC; - extern s16 D_80190488; - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern void func_80129CF8(void); - extern s32 func_8017BE60(void *a0); - extern u8 D_80181FC0[]; - extern s16 D_80190364; - extern s16 D_80190366; - extern s16 D_80190368; - extern s16 D_8019035C; - extern s16 D_8019035E; - extern s16 D_80190360; - 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_80181FC0[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80181FC0[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_80190364; - s16 *p78C = &D_8019035C; - *(Blk8_8017B614 *)p794 = *(Blk8_8017B614 *)&buf[0]; - *(Blk8_8017B614 *)p78C = *(Blk8_8017B614 *)&buf[8]; - func_8012A018((s32)func_8017BE60, 0); - { - s32 v794, v796, v798, v78C, v78E, v790; - D_8012694C = 0; - v794 = *p794; - v796 = D_80190366; - v798 = D_80190368; - v78C = *p78C; - v78E = D_8019035E; - v790 = D_80190360; - __asm__ __volatile__(""); - D_80190488 = 1; - D_801902EC = 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 - - - -void func_8017B7A8(void) -{ - - 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_801902EC; - extern s16 D_80190364; - extern s16 D_80190366; - extern s16 D_80190368; - extern s16 D_8019035C; - extern s16 D_8019035E; - extern s16 D_80190360; - D_8012694C = 1; - D_801902EC = 0; - D_80190364 = (s16) D_80114F30; - D_80190366 = (s16) D_80114F34; - D_80190368 = (s16) D_80114F38; - D_8019035C = (s16) D_80114F24; - D_8019035E = (s16) D_80114F28; - D_80190360 = (s16) D_80114F2C; -} - - - - -void func_8017B824(void) { - - extern s32 D_801151D4; - extern s16 D_8019037C; - extern s16 D_8019037E; - extern s16 D_80190380; - extern s16 D_80190384; - extern s16 D_80190386; - extern s16 D_80190388; - D_8019037C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_8019037E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_80190380 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_80190384 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_80190386 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_80190388 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - - - -void func_8017B880(void) -{ - - extern s16 D_8019037C; - extern s16 D_8019037E; - extern s16 D_80190380; - extern s16 D_80190384; - extern s16 D_80190386; - extern s16 D_80190388; - extern s32 D_80114F30; - extern s32 D_80114F34; - extern s32 D_80114F38; - extern s32 D_80114F24; - extern s32 D_80114F28; - extern s32 D_80114F2C; - D_80114F30 = D_8019037C; - D_80114F34 = D_8019037E; - D_80114F38 = D_80190380; - D_80114F24 = D_80190384; - D_80114F28 = D_80190386; - D_80114F2C = D_80190388; -} - - - -typedef struct { unsigned char b[8]; } S8_8017B8E8; - - -s32 func_8017B8E8(s32 src) { - - extern s16 D_8019035C; - extern s16 D_80190364; - (*(S8_8017B8E8 *)&D_80190364) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_8019035C) = ((S8_8017B8E8 *)src)[1]; -} - - - - -// @class: struct -// @stuck: none — MATCH (63 ins) - - - - -void func_8017B940(void) -{ - - extern u16 D_80126B5E; - extern u16 D_80126B62; - extern u16 D_80126B66; - extern u16 D_8019036C; - extern u16 D_8019036E; - extern u16 D_80190370; - 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_801902EC; - extern short D_80190374; - extern short D_80190376; - extern short D_80190378; - extern s16 D_80190364; - extern s16 D_80190366; - extern s16 D_80190368; - extern s16 D_8019035C; - extern s16 D_8019035E; - extern s16 D_80190360; - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019036C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019036E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80190370); - (*(s16 *)&D_80190374) = buf[0]; - (*(s16 *)&D_80190376) = buf[1]; - (*(s16 *)&D_80190378) = buf[2]; - D_80190364 = D_80114F30 + buf[0]; - D_801902EC = 0; - D_80190366 = D_80114F34 + buf[1]; - D_80190368 = D_80114F38 + buf[2]; - D_8019035C = D_80114F24 + buf[0]; - D_8019035E = D_80114F28 + buf[1]; - D_80190360 = D_80114F2C + buf[2]; -} - - -INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_8015C32C", func_8017BA3C); - -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_80049CAC(s32 a0, s32 a1); - -typedef struct { s16 a, b, c, d; } SV4_8017BB34; -typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - - extern s32 D_8019030C; - extern SV4_8017B368 D_80190314; - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80190314)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_8019030C) = 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_80190314) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - - -void func_8017BC38(int param_1) -{ - - extern void (*D_80190334[10])(int); - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_80190334; - 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); - -void func_8017BCA0(int param_1) { - - extern s16 D_801902EC; - extern s16 D_80190488; - func_8017B0E4(param_1, 0xC); - D_801902EC = D_801902EC + 1; - if (D_801902EC >= 0x1F) { - D_80190488 = 2; - } -} - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - - extern s16 D_801902EC; - extern s16 D_80190488; - func_8017B0E4(param_1, 6); - D_801902EC = D_801902EC + 1; - if (0x18 < D_801902EC) { - func_8012A4BC(); - D_80190488 = 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); - - - -void func_8017BD50(int param_1) -{ - - extern s16 D_801902EC; - extern void (*D_80190330)(void); - extern short D_80190374; - extern short D_80190376; - extern short D_80190378; - extern s16 D_80190488; - extern s32 D_80114F24; - extern s32 D_80114F28; - extern s32 D_80114F2C; - extern s32 D_80114F30; - extern s32 D_80114F34; - extern s32 D_80114F38; - func_8017B0E4(param_1, 6); - D_801902EC = D_801902EC + 1; - if (D_801902EC >= 0x19) { - if (D_80190330 != 0) { - (*D_80190330)(); - } else { - D_80114F30 = D_80114F30 + D_80190374; - D_80114F34 = D_80114F34 + D_80190376; - D_80114F38 = D_80114F38 + D_80190378; - D_80114F24 = D_80114F24 + D_80190374; - D_80114F28 = D_80114F28 + D_80190376; - D_80114F2C = D_80114F2C + D_80190378; - func_8012A4BC(); - } - D_80190488 = 0; - } -} - - - - -void func_8017BE60(void *a0) { - - extern void (*D_80182060[])(void); - D_80182060[*(u8 *)((s32)a0 + 0x4)](); -} - - -void func_8017BE9C(void) { -} - -void func_8017BEA4(void) { -} - -void func_8017BEAC(void) { -} - -void func_8017BEB4(void) { -} - - diff --git a/src/ov_SC07_011/ov_SC07_011_jr_8017AE2C.c b/src/ov_SC07_011/ov_SC07_011_jr_8017AE2C.c new file mode 100644 index 000000000..f8c38bf09 --- /dev/null +++ b/src/ov_SC07_011/ov_SC07_011_jr_8017AE2C.c @@ -0,0 +1,3909 @@ +#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 { s32 w[8]; } Vec8; +typedef struct { s32 m[3][3]; s32 t[3]; } MATRIX; +typedef struct { s32 vx, vy, vz; } VECTOR; +typedef struct { s16 h[8]; } Buf; +typedef struct { char _b[8]; } M8; /* size 8, alignment 1 -> unaligned copy */ +typedef struct { u16 f0, f2, f4; s16 f6; } Box_80133784; +typedef struct { s16 x, y, z; } Vec3s; +typedef struct { s32 f0; } E4; +typedef struct { u16 f0; s16 f2; } Prim4; +typedef struct { s16 x; s16 y; } Hw4; +typedef struct { s32 f0; u32 *f4; s32 f8; s32 fC; s32 f10; } Rec20; +typedef struct { u8 d[0x60]; } Blk60; +typedef void (*code)(unsigned short *); +typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_80165140; +typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4; +typedef struct { B8_80165140 a; B4 b; s32 used; } Slot; +struct W4 { u32 w; } __attribute__((packed, aligned(1))); +typedef struct { s16 ax, ay, a04, a06, bx, by, b0c, b0e, cx, cy, c14, c16, dx, dy, d1c, d1e, u0, v0, u1, v1, u2, v2, u3, v3; u8 r, g, b, pad33; s32 tag; u8 code, pad39, pad3a, pad3b; s32 pad3c; } Prim_B234; +typedef struct { u8 f0; u8 pad[0xc3]; } Slot_998; +typedef struct { s32 w[8]; } Blk32_998; +typedef struct { short vx, vy, vz, pad; } SVEC_L1; /* 8 bytes */ +typedef struct { int a[8]; } MTX_L1; /* 32 bytes */ +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 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 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 void func_80029444(void); +extern void func_800D1754(void); +extern void func_8014ED28(s32 _arg0); +extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); +extern int func_801288E8(int arg0); +extern int func_80128940(int arg0); +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 s32 func_80128ED8(s32 param_1, s32 *param_2); +extern void func_80128FAC(u16 *arg0); +extern s16 D_8011DB2C; +extern s16 D_8011DB30; +extern s32 D_80126AEC; +extern void func_80129010(void); +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 struct BigCopy D_80126DB8; +extern u8 D_80126948[]; +extern struct BigCopy D_80114EE8; +extern s32 D_80126E60[]; +extern s8 D_801150D6; +extern s8 D_801152C0; +extern u8 D_80127504; +extern void func_800144D4(void); +extern void func_80129C40(s32 _arg0); +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 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_80129CF8(void); +extern void func_8012A018(s32 a, s32 b); +extern void func_80129FF4(void); +extern void func_8012A048(void *a0, s32 a1, u8 a2); +extern void func_8012A018(s32 a0, s32 a1); +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 *memcpy(void *, const void *, unsigned int); +extern void func_8012A094(s32 a0); +extern void func_8012A100(s8 a0); +extern void func_8012A0E0(void); +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 void func_8012A2F4(void); +extern s16 D_80127080; +extern s16 D_801152C2; +extern void func_8012A304(s32 a0, s32 a1); +extern void func_8012A464(void); +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 s32 func_80047D3C(s32 a0); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 func_8012A6D0(void* a0, void* a1); +extern s16 func_8012A79C(s16 *a0, s16 *a1); +extern s16 func_8012A758(void); +extern void func_8012A7D4(void *arg0, void *arg1); +extern void func_8012AAAC(void); +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 void func_8012ACA0(void *arg0); +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 D_80126B58; +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 u16 D_801274E4[]; +extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +extern void 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 void 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 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 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_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(void); +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_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 void func_8012F828(int param_1); +extern void func_80131340(s32 a0); +extern void func_8012F87C(s32 a0); +extern void func_8012F8C8(int param_1); +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 void func_80131B14(void); +extern void func_8012FCC4(int param_1); +extern void func_8012FDA8(int param_1); +extern void func_80131170(s32 a0, s32 a1, s32 a2); +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 func_80130D0C(s32 a0); +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_8018F078; +extern s32 D_8018F07C; +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 func_80131E38(u8 *a0); +extern void func_80131E7C(s32 a0); +extern void func_80131EE4(void); +extern void func_80131EEC(void *a0); +extern void func_80131F28(void *a0); +extern void func_80131F64(void *a0); +extern void func_80131FA0(void *a0); +extern void func_80131FDC(void *a0); +extern void func_801320D0(void); +extern void func_8001C214(int, int); +extern void func_801320D8(int param_1); +extern void func_80132144(int param_1); +extern void func_801321B0(int param_1); +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(s16 *a0, s16 *a1, s32 a2); +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 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_801345F8(s32 arg); +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 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_801365B8(void *arg0, s32 arg1, s32 arg2); +extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); +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 func_80136C54(void); +extern void func_80136D00(void); +extern void SetLineG2(void *); +extern void func_80136D08(s32 arg0, s32 arg1); +extern u16 D_80126CC4; +extern M2C_UNK func_800153CC(M2C_UNK, u16, M2C_UNK, M2C_UNK, s32, s32); +extern void func_80136DFC(void); +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 void func_80138BE0(s32 a0); +extern void func_80137BD8(s32 a0); +extern void func_8013A380(void); +extern void func_801379FC(void); +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 int func_80137D08(int arg0, int arg1, short arg2); +extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80137DD4(s32 ent, u8 *arg, u8 *work); +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 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 D_80127548[]; +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 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 s16 D_801269F4; +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_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 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); +extern void func_80019064(void *a0); +extern void func_8013C9C4(void * arg0); +extern void func_8013CA14(void); +extern void func_8013CABC(void); +extern void func_8013CAE8(void); +extern void func_8013CB20(void); +extern void func_8013CB5C(void); +extern void func_8013CF68(); +extern void func_8013D9B0(); +extern void func_8013D064(void); +extern s32 func_8013D13C(void); +extern void func_8013D164(void); +extern void func_8013D178(void); +extern void func_8013D330(void); +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 void func_8013DBE4(int param_1); +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 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_801754A8(void); +extern s32 func_80014ED4(s32); +extern s32 func_80015018(s32); +extern void func_800190AC(void); +extern void func_80141C04(void); +extern void func_8013E5E8(void); +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_8011511A; +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 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 void func_8013F138(void); +extern void func_800D2624(void); +extern unsigned short D_80115114; +extern unsigned short D_80115118; +extern void func_8013F1BC(void); +extern void func_80141C0C(s32); +extern u16 D_8011511C; +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_8011514E; +extern u8 D_80115152; +extern u8 D_80115158[]; /* macro-canonical (§8e) */ +extern u8 D_8011515C; /* macro-canonical (§8e) */ +extern u8 D_8017F71C[]; +extern u8 D_8017F734[]; +extern u16 D_8017F638[]; +extern s32 func_80029178(s32 arg); +extern s32 func_800291B4(s32 arg); +extern void func_8014AA04(s32 a0); +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) */ +extern s32 func_8013F350(void); +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_800D27DC(s32, s32 *, void *, s32, s32); +extern s32 *func_800D29F8(s32, s32, void *, s32, s32); +extern void func_8013FAF8(s16 arg0, s16 arg1); +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); +extern int func_800D2CA8(int, int); +extern void func_800D2D10(int, int, void *, int); +extern int func_80029FE4(void); +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 int func_8002A998(void); +extern int func_8002A9DC(void); +extern int func_8002A728(void); +extern int func_8002A76C(void); +extern int func_80029FD4(void); +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); +extern int func_80141100(int param_1); +extern void func_800291A0(s32, s32); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_801415C0(s32 param_1, s32 param_2); +extern u8 D_80115148[]; +extern u8 D_80115149[]; +extern u8 D_80115158[]; +extern u8 D_8011514D; +extern u8 D_8011515C; +extern s32 func_800D11F0(s32 a0); +extern s32 func_800D1658(s32 a0); +extern s32 func_801416D4(s16 param_1); +extern void func_8001903C(void); +extern void func_801417C4(void); +extern u8 D_800B9A16; +extern u16 D_80115114; +extern void func_801417F8(void); +extern volatile u16 D_8011511A; +extern u16 D_8011512E; /* §17a-1: canonical width (jr_8013F350 TUs decl u16); byte-neutral here (only use is store-0) */ +extern s32 func_80029178(s32 a0); +extern void func_801418F8(void); +extern void func_80141A60(void); +extern void func_80141C0C(s32 param_1); +extern s32 func_80015144(void); +extern unsigned char D_80112C04[]; +extern unsigned char D_80112C50[]; +extern unsigned char D_80112C9C[]; +extern unsigned char D_80112CE8[]; +extern unsigned char D_80112D38[]; +extern unsigned char D_80112D78[]; +extern unsigned char D_80112DBC[]; +extern unsigned char D_80112DF4[]; +extern unsigned char D_80112E14[]; +extern unsigned char D_80112E40[]; +extern unsigned char D_80112E6C[]; +extern unsigned char D_80112EBC[]; +extern unsigned char D_80112F0C[]; +extern unsigned char D_80112F48[]; +extern unsigned char D_80112F9C[]; +extern unsigned char D_80112FDC[]; +extern unsigned char D_8011302C[]; +extern unsigned char D_80113074[]; +extern unsigned char D_801130B8[]; +extern unsigned char D_801130E8[]; +extern unsigned char D_80113138[]; +extern unsigned char D_8011317C[]; +extern unsigned char D_801131A8[]; +extern unsigned char D_801131E8[]; +extern unsigned char D_80113214[]; +extern unsigned char D_80113254[]; +extern unsigned char D_80113278[]; +extern unsigned char D_801132B8[]; +extern unsigned char D_801132E4[]; +extern unsigned char D_80113324[]; +extern unsigned char D_80113360[]; +extern unsigned char D_801133A4[]; +extern unsigned char D_801133F4[]; +extern unsigned char D_80113440[]; +extern unsigned char D_80113474[]; +extern unsigned char D_801134B0[]; +extern unsigned char D_801134FC[]; +extern unsigned char D_80113530[]; +extern unsigned char D_80113554[]; +extern unsigned char D_801135A8[]; +extern unsigned char D_80113600[]; +extern unsigned char D_80113650[]; +extern unsigned char D_80113694[]; +extern unsigned char D_801136DC[]; +extern unsigned char D_80113724[]; +extern unsigned char D_80113744[]; +extern unsigned char D_80113770[]; +extern unsigned char D_80113794[]; +extern unsigned char D_801137D8[]; +extern unsigned char D_8011381C[]; +extern unsigned char D_8011383C[]; +extern unsigned char D_8011386C[]; +extern unsigned char D_801138A4[]; +extern unsigned char D_801138D0[]; +extern unsigned char D_80113900[]; +extern unsigned char D_80113944[]; +extern unsigned char D_80113964[]; +extern unsigned char D_8011399C[]; +extern unsigned char D_801139E8[]; +extern unsigned char D_80113A28[]; +extern unsigned char D_80113A50[]; +extern unsigned char D_80113A84[]; +extern unsigned char D_80113AB0[]; +extern unsigned char D_80113AE0[]; +extern unsigned char D_80113B34[]; +extern unsigned char D_80113B68[]; +extern unsigned char D_80113BA4[]; +extern unsigned char D_80113BC0[]; +extern unsigned char D_80113BF0[]; +extern unsigned char D_80113C20[]; +extern unsigned char D_80113C3C[]; +extern unsigned char D_80113C7C[]; +extern unsigned char * func_80141CA4(void); +extern void func_80142414(s32 a0, s16 a1); +extern void func_80142454(s32 a0); +extern void func_801424E4(short *param_1); +extern void func_801425CC(void *a0); +extern void func_8001CA1C(s32 a0, s32 a1); +extern s32 func_8012AD50(void *a0); +extern void func_80142608(s32 param_1); +extern void func_801426D4(s32 a0); +extern void func_80142740(int param_1); +extern void func_80142778(u8 *a1); +extern void func_801427DC(void); +extern void func_801427E4(void); +extern void func_801427EC(int param_1); +extern s32 func_80142DB8(s32 *a0); +extern s32 func_80142D38(s32 *a0); +extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); +extern void func_801428CC(s32 *a0); +extern void func_8014292C(int param_1); +extern void func_80142978(int param_1); +extern void func_801429C4(int param_1); +extern void func_80142A80(void); +extern void func_80142C7C(void); +extern void func_80142C84(s32 a0); +extern void func_80142C9C(s32 * arg0); +extern void func_80142B2C(void *arg0); +extern void func_80142DC4(int param_1); +extern void func_80142E38(int param_1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_80142EC0(s32 param_1); +extern void func_80142FFC(s32 *a0); +extern void func_8014305C(int param_1); +extern void func_80143188(s32 *a0); +extern int func_8001CA88(int, void *); +extern void func_800233CC(void *, unsigned short); +extern void func_801431E8(s32 param_1); +extern void func_80142C9C(s32 *a0); +extern void func_801432FC(s32 *a0); +extern void func_80143390(s32 *a0); +extern void func_80143458(s32 param_1); +extern void func_8014358C(s32 param_1); +extern s32 rand(void); +extern void func_80143640(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_801437D8(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80143970(s32 a0); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern void func_80143994(s32 a0, s32 a1); +extern void func_801439C0(u8 *a0); +extern s16 D_801152AC; +extern s16 D_801152AA; +extern void func_801439FC(s32 a0); +extern void func_80143B30(void *a0); +extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_80143B6C(s32 arg0, s32 arg1); +extern void func_80143BDC(u16 *a0); +extern void func_80143C38(void *a0); +extern void func_80143C74(s32 a0, s32 a1); +extern void func_80143C98(void *a0); +extern void func_80143E68(void *a0); +extern void func_80143EA4(void); +extern void func_80143EAC(void); +extern void func_80143EB4(void); +extern s32 func_8004787C(s32 a0); +extern void func_80143EBC(s32 a0); +extern void func_80144054(void *a0); +extern void func_801442F8(int param_1); +extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80144364(int param_1); +extern u8 D_800D387C[]; +extern u8 D_800D3888[]; +extern void func_80144558(u8 *param_1); +extern void func_801446A4(int param_1); +extern void func_8014477C(void *param_1); +extern void func_80144880(s32 param_1); +extern void func_80144988(s32 a0); +extern void func_801449C8(void *a0); +extern void func_80144A04(s32 *a0); +extern void func_80144A2C(void *a0); +extern void func_80144A68(s32 *a0); +extern void func_80144A90(void); +extern void func_80144A98(u8 *a0); +extern void func_80144B14(void); +extern void func_80144AEC(s32 *a0); +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 void func_80145B24(void); +extern void func_80145934(void); +extern void func_80145A2C(void); +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 void func_80145BF8(void); +extern void func_80145C54(void); +extern void func_80146014(s32 a0); +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(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 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_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_80146C3C(u8 *a0); +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 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_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 volatile s32 D_80127090; +extern volatile s32 D_80127094; +extern volatile s32 D_80127098; +extern void func_80147F78(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80148038(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 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_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_80148D44(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 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 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 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_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 func_80149FB0(s32 a0); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8014A1B0(s32 a0, s32 a1); +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_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_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 u8 D_80078E78[]; +extern s32 func_8016F1C4(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_8014BD60(s32 a0, s32 a1); +extern void func_8014B084(void); +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +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 void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +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 s32 D_80078E98; +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_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_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 a0, s32 a1, void* a2); +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 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 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 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 void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +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 void func_8014DF94(s32 arg0); +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); /* canonical (engine_core.h:11555) */ +extern s32 func_8014E284(s32 a0, s16 *arg1, s16 *arg2); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E48C(s32 a0); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +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_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014ED80(struct SubED80 *a0); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014F4C0(u8 *a0); +extern void func_8014F468(void); +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern void func_8014FA04(s32 a0); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern s32 func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_801502EC(s32 e, void *a1, void *a2); +extern s32 func_80150460(s32 e, s32 a1); +extern s32 func_80150170(void *e); +extern s32 func_80150460(s32 a, s32 b); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern void func_801504D8(u16 *a0); +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 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 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B28(int 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_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 void 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 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 func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +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 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 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 func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +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 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 func_80152C80(s32* a0); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +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 func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern u8 D_80062C04[]; +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 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 void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +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_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_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 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 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 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(void *a0); +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 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 a0, s32 a1, s32 a2, s32 a3); +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 func_8014CC28(s32 a0); /* defined */ +extern void 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 void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_80157808(s32 a0); +extern void func_801577C8(int param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +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 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 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 func_80158038(void *); +extern void func_80158000(void *a0); +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 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 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 void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +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 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 int rand(void); +extern void func_80158F00(int param_1); +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 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 u8 D_80110C3C[]; +extern void func_80159120(s32 a0); +extern void func_801592CC(s32 *a0); +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void func_80159698(void *a0); +extern s32 func_801596D4(void *a0); +extern void func_80174B6C(void); +extern void func_8013C938(void); +extern void func_8002850C(s32, s32, s32); +extern void func_80028620(s32, void *); +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 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 func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +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 func_8015A2A0(s32 a0); +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 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 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(void); +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 func_8015C0C4(s32); +extern void func_8015C08C(s32 a0); +extern void func_8014D738(void); +extern s32 func_8015C128(s32 param_1); +extern s32 func_801496D4(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 void func_80149954(s32 a0); +extern s32 func_80149A64(s32*); +extern void func_800CCCC0(s32 a0); +extern void func_80147A84(s32 a0); +extern void func_801473EC(s32*); +extern void func_8014CC28(s32); +extern void func_8014F3E8(s32); +extern void func_80159BE4(s32 a0); +extern void func_8015C6E0(s32*); +extern void func_8015C32C(s32 arg0); +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 func_8015C788(s32); +extern void func_8015C750(s32 a0); +extern s32 func_80161B18(void *a0); +extern s32 func_80161B84(void *a0); +extern void func_80161240(void *a0); +extern void func_80161C24(s32, s32); +extern void func_8015C7E4(u16 *param_1); +extern void func_8015C944(int param_1); +extern void func_8015CA28(u16 *param_1); +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 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 func_8014E6A0(void); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +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 void func_80154150(int, int); +extern void func_80149374(int, int); +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_8015F89C(void *arg0); +extern void func_8015F9A4(void *arg0); +extern int func_8015DD74(int); +extern void func_8015DBD4(void *arg0); +extern int func_8015DC84(int a0); +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 void func_8015E5B0(u8*); +extern void func_8015E344(u16 *param_1); +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8015E5B0(u8 *self); +extern void func_8015E698(u16 *param_1); +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 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 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_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_80146DB8(s32*, s32*); +extern void func_80146E90(s32*, s32); +extern s32 func_801725B8(u8*); +extern void func_80019064(void*); +extern void func_801484B0(s32, s32); +extern void func_80148534(s32, s32); +extern void func_8015F448(s32 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_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); +extern void func_80147078(s32 *, s16); +extern void func_80159B70(void *); +extern void func_8015F948(s32 *param_1); +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 void func_8015FD74(int param_1); +extern u8 func_80165700(s32 a0, s32 a1); +extern void func_8015FDCC(s32 a0); +extern void func_8015FE70(u16 *param_1); +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_801602A4(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_80160534(u8 *p); +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_80160A74(s32 *a0); +extern void func_80160920(unsigned short *param_1); +extern void func_801609B8(u16 *param_1); +extern void func_80160A28(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 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_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 void func_80161C98(int param_1, u32 param_2); +extern void func_80161E08(s32); +extern s32 func_80162438(s32); +extern void func_800D1734(void *); +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 void func_8016216C(void); +extern s32 func_801621CC(s32 arg0); +extern void func_801622C4(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 void func_80162760(void); +extern void func_801627C0(void); +extern void func_80162834(void *a0); +extern void func_80162968(s32 a0); +extern s32 func_80162ACC(u8 *a0); +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_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, s32 a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +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 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 func_80164744(s32 param_1); +extern void func_80164A74(s32 *a0); +extern void func_80164930(s32 a); +extern void func_801647A4(int param_1); +extern void func_80164ACC(); +extern void func_80164864(void *a0); +extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80164ACC(s32 a0); +extern void func_80164BA0(void *a0); +extern void func_8001CD50(s32 a0, s32 a1); +extern void func_80164DD0(s32 a0); +extern void func_80164DB0(void); +extern void func_80164BDC(s32 param_1); +extern s32 func_80164E40(void); +extern void func_80164CD4(u8 *a0); +extern void func_80164D4C(void *arg0); +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 void func_80165240(void *param_1, void *param_2, void *param_3); +extern void func_801651B8(void * param_1); +extern void func_80016ED4(void *a0); +extern s32 func_80017DC4(void *a0, void *a1); +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 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 func_801656D0(s32 a0, s32 a1); +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 u8 D_80078EC2; +extern s32 func_80165A50(s32 _arg0); +extern void func_80165AC8(void); +extern void func_80165A78(s32 arg0); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(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 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_80166018(void *a0); +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 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_801665B4(); +extern void func_80146C3C(); +extern void func_80166438(u8 *a0); +extern void func_80166618(void *a0); +extern void func_80166654(void *a0); +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 void func_80048EAC(void *a0, void *a1); +extern s32 func_801670E4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_801678B4(void *a0); +extern void func_80167A9C(void *a0); +extern void func_80167AD8(void); +extern int func_80029178(int); +extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); +extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); +extern void func_80166F58(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_801681FC(s32 param_1); +extern void func_80168430(s32 param_1); +extern void func_80168640(s32 a0); +extern Blk20 D_800AE620; +extern s32 RotMatrixX(s32 a0, void *a1); +extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80168664(void *arg0); +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_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168AA8(void *a0); +extern void func_80168AE4(s32 a0); +extern void func_80168D58(void *a0); +extern void func_80168F40(void *arg0); +extern void func_8016901C(void *a0); +extern void func_801693CC(void *a0); +extern void func_80169584(s32 param_1); +extern void func_801696D8(s32 a0, s32 a1); +extern void func_80169830(void *a0); +extern s32 func_80169A4C(s32 a0, s32 a1); +extern void func_80169B80(void *a0); +extern void func_80169F00(void *a0); +extern void func_8016A020(void *a0); +extern void func_8016A05C(void *a0); +extern void func_8016A700(void *a0); +extern s32 func_80016A5C(); +extern s32 func_8016A8FC(s32 a0); +extern void func_8016AB30(void *a0); +extern void func_8016B234(); +extern void func_800D22E4(s32 a0); +extern void func_8016AFB0(s32 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 func_8016B4BC(void *a0); +extern int func_8016B9F8(int); +extern int func_8016B834(int, int); +extern void func_8016B91C(int); +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 void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +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 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void func_8016BBA4(void *a0); +extern void func_8016BF50(s32); +extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8016BD78(s32 param_1); +extern void func_8016BF34(void *a0); +extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +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 short func_8016CBC0(void); +extern void func_8016C998(s32 param_1); +extern void func_8016CB84(void *a0); +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 func_8016D1D8(int param_1); +extern void func_8016D428(void *a0); +extern void func_8016D464(u8 *a0); +extern void func_8016D4DC(s32 a0); +extern void func_8016D688(int param_1); +extern void func_8016DBD8(u8 *a0); +extern void func_8016DA30(int param_1); +extern s16 D_8018FE90; +extern s16 D_8018FE94; +extern u8 D_80181984[]; +extern u8 D_80181990[]; +extern void func_8016DC20(s16 *param_1); +extern void func_8016DEA4(void *a0); +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_8016E460(void *arg0, void *arg1); +extern void func_8016E5B8(void *a0); +extern void func_8016E778(); +extern void func_8016E688(void *a0); +extern void func_8016E6E4(s32 a0); +extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); +extern void func_8016E778(int param_1); +extern s32 D_80115218; +extern void func_8016E918(short param_1, short param_2); +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern void func_8016EB3C(s32 p); +extern void func_8016EBA8(u8 *param_1); +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 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); +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 func_8016F6E0(void *a0); +extern s32 func_80171990(u8 *a0); +extern void func_8016F764(void *a0); +extern void func_8016F71C(u8 *a0); +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 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 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 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 func_8016FA84(void *a0); +extern void func_8016FB10(void *a0); +extern void func_8016FAC0(u8 *a0); +extern void func_8016FB50(void *a0); +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 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 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 func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +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 func_80170150(void *a0); +extern void func_801701C8(u8 *a0); +extern void func_8017018C(u8 *a0); +extern void func_801701C8(u8 * a0); +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 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 func_801703E0(void *a0); +extern void func_8017044C(u8 *a0); +extern void func_8017041C(u8 *a0); +extern void func_8017044C(u8 * a0); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +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 func_801705F8(void *a0); +extern void func_80170670(void *a0); +extern void func_80170634(u8 *a0); +extern void func_801706AC(void *a0); +extern void func_80170718(void *a0); +extern void func_801706E8(u8 *a0); +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 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 func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +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 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 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 func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +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 func_80171120(void *a0); +extern void func_8017118C(u8 *a0); +extern void func_8017115C(u8 *a0); +extern void func_8017118C(u8 * a0); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +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 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_8017248C(s32, s32); +extern s32 ratan2(s32, s32); +extern void func_80172170(s32, s32); +extern void func_80146D90(s32); +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_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 s32 func_80172CA0(void *a0); +extern void func_80172C50(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 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_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 s32 func_8014C118(void*, s32, s32); +extern s32 func_80173B4C(void*); +extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern void func_80173BC0(u8 *a0); +extern void func_80173B88(u8 *a0); +extern s16 D_80126B3A; +extern s16 D_8011F9C8; +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 s32 func_8016F0AC(); +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 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(s32); +extern s32 func_801749A8(s32 a0); +extern void func_80174BBC(void *a0); +extern void func_80174BF4(void *a0); +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 s32 func_80175268(s32); +extern void func_80175184(s32* arg0); +extern s32 func_80175218(void *a0); +extern void func_801751D8(void *a0); +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_8011F7AD; +extern u8 D_8011F7AE; +extern void func_80175414(s32 _arg0); +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 void func_80175590(void *arg0); +extern void func_801757A0(s32); +extern void func_80175624(void *a0); +extern void func_801757E0(int); +extern void func_80175668(void); +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_801775E0(s32 param_1, s32 param_2); +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 void func_80178438(u16 *arg0); +extern void func_801787D4(void); +extern void func_8017869C(s32 a0); +extern s32 D_8011DB08; +extern void func_8017849C(void); +extern void func_8013E4B4(void); +extern s16 D_801270C4; +extern s16 D_801270C2; +extern u8 D_801270C6; +extern u8 D_801270C7; +extern void func_80178744(s32 a0, s32 a1); +extern void func_80178840(); +extern void func_80178840(int param_1); +extern s32 func_801788B8(s32 arg0, s32 arg1); +extern int func_801789AC(void); +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 void func_80178BF8(s32 _unused0, s32 _unused1); +extern M2C_UNK func_80178D40(s32 arg0, s32 arg1); +extern void func_80178CBC(s32 arg0, s32 arg1); +extern void func_80178D18(void); +extern void func_80179B28(s32 a0); +extern void func_80179B74(s16 *a0); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179B74(short *); +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(short *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 void func_8017A094(s32 arg0); +extern void func_8017A0C4(s32 arg0); +extern void func_8017A0F4(void); +extern void func_8017A11C(void); +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 s32 func_8017A3B0(void); +extern int func_800D0CA0(int); +extern int func_8001AAA0(void); +extern int func_800D0CE0(void); +extern int func_8017A3D8(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 void func_8012BE98(s32, u16*); +extern s32 func_80012A60(s32 a0, s32 a1); + + +void func_8017AE2C(s32 param_1) { + + extern s16 D_80190458; + extern s16 D_8019045A; + extern s16 D_80190464; + register s32 pv __asm__("$16") = param_1; + register s16 *g __asm__("$17") = &D_80190458; + + 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_80190464); + func_8012B178(pv, 0xFFFA0000); + func_8012AD80(pv); + *(u16 *)(pv + 0xA) -= 8; + func_8012B030((u8 *)pv); + /* &D_80190458+0xC == &D_80190464; distinct rtx defeats gcc's address-CSE + so BE98's arg rematerializes instead of sharing the store's reg (byte-gate). */ + if (((s32 (*)(s32, u16 *))func_8012BE98)(pv, (u16 *)((s32)&D_80190458 + 0xC)) < 0x101) { + D_80190458 = 0; + D_8019045A = 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_80190464); + 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 (((s32 (*)(s32, u16 *))func_8012BE98)(pv, (u16 *)((s32)&D_80190458 + 0xC)) < 0x101) { + D_80190458 = 0; + D_8019045A = 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; +} + +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); + +// @class: plumbing +// @stuck: none — MATCH + + +void func_8017B0E4(int param_1, int param_2) +{ + extern s16 D_80190364; + extern s16 D_80190366; + extern s16 D_80190368; + extern s16 D_8019035C; + extern s16 D_8019035E; + extern s16 D_80190360; + + *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_80190364, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_80190366, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_80190368, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_8019035C, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_8019035E, (s32)((s16)param_2)); + *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_80190360, (s32)((s16)param_2)); +} + + +extern void func_8012A418(void); + +void func_8017B1D8(void) { + + extern u16 D_80126B5E; + extern u16 D_80126B62; + extern u16 D_80126B66; + extern s16 D_801902EC; + extern u16 D_8019036C; + extern u16 D_8019036E; + extern u16 D_80190370; + extern s16 D_80190488; + func_8012A418(); + D_80190488 = 0; + D_801902EC = 0; + D_8019036C = D_80126B5E; + D_8019036E = D_80126B62; + D_80190370 = D_80126B66; +} + + +INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_8017AE2C", func_8017B238); + + +// @class: struct +// @stuck: none — MATCH (74 ins) + +typedef struct { s16 a, b, c, d; } SV4_8017B368; /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ +typedef struct { SV4_8017B368 x, y; } Pair16; /* 16-byte stride array element */ + + + +s32 func_8017B368(s32 param) +{ + + extern s16 D_801902EC; + extern s16 D_80190488; + extern void func_8017BA3C(s32 param_1, s32 param_2); + extern void func_8012F214(s32 a0, s32 a1, s32 a2); + extern SV4_8017B368 D_8019030C; + extern SV4_8017B368 D_80190314; + extern s16 D_80190364; + extern s16 D_8019035C; + extern u16 D_80181FC0; + + SV4_8017B368 loc0; + SV4_8017B368 loc1; + u32 n = (u32)&D_8019030C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_80190314; + } else { + s32 ax = (s32)&((Pair16 *)&D_80181FC0)[n].x; + s32 ay = (s32)&((Pair16 *)&D_80181FC0)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_80190364) = loc0; + (*(SV4_8017B368 *)&D_8019035C) = loc1; + D_80190488 = 1; + D_801902EC = 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_8019030C; + extern SV4_8017B368 D_80190314; + extern s16 D_80190364; + extern s16 D_8019035C; + extern u16 D_80181FC0; + extern s16 D_801902EC; + extern s16 D_80190488; + 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_8019030C; + + ((void (*)(void))func_8017BA3C)(); + + if (n >= 0xB) { + loc0 = *(SV4_8017B368 *)n; + loc1 = D_80190314; + } else { + s32 ax = (s32)&((Pair16 *)&D_80181FC0)[n].x; + s32 ay = (s32)&((Pair16 *)&D_80181FC0)[n].y; + func_8012F214(param, ax, (s32)&loc0); + func_8012F214(param, ay, (s32)&loc1); + } + + (*(SV4_8017B368 *)&D_80190364) = loc0; + (*(SV4_8017B368 *)&D_8019035C) = loc1; + D_80190488 = 1; + D_801902EC = 0x1E; + D_80126990 = (*(SV4_8017B368 *)&D_80190364).a; + D_80126994 = (*(SV4_8017B368 *)&D_80190364).b; + D_80126998 = (*(SV4_8017B368 *)&D_80190364).c; + D_80126984 = (*(SV4_8017B368 *)&D_8019035C).a; + D_80126988 = (*(SV4_8017B368 *)&D_8019035C).b; + D_8012698C = (*(SV4_8017B368 *)&D_8019035C).c; +} + + +extern void func_8012A018(s32 a, s32 b); + +// @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. + +typedef struct { u8 b[8]; } Blk8_8017B614; + + + +s32 func_8017B614(s32 param_1, s32 param_2) +{ + + extern s32 D_80126990; + extern s32 D_80126994; + extern s16 D_801902EC; + extern s16 D_80190488; + extern void func_8012F214(s32 a0, s32 a1, s32 a2); + extern void func_80129CF8(void); + extern s32 func_8017BE60(void *a0); + extern u8 D_80181FC0[]; + extern s16 D_80190364; + extern s16 D_80190366; + extern s16 D_80190368; + extern s16 D_8019035C; + extern s16 D_8019035E; + extern s16 D_80190360; + 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_80181FC0[((u32)param_2) * 0x10]; + s32 a2addr = (s32)&D_80181FC0[((u32)param_2) * 0x10 + 8]; + func_8012F214(param_1, a1addr, (s32)&buf[0]); + func_8012F214(param_1, a2addr, (s32)&buf[8]); + } + { + s16 *p794 = &D_80190364; + s16 *p78C = &D_8019035C; + *(Blk8_8017B614 *)p794 = *(Blk8_8017B614 *)&buf[0]; + *(Blk8_8017B614 *)p78C = *(Blk8_8017B614 *)&buf[8]; + func_8012A018((s32)func_8017BE60, 0); + { + s32 v794, v796, v798, v78C, v78E, v790; + D_8012694C = 0; + v794 = *p794; + v796 = D_80190366; + v798 = D_80190368; + v78C = *p78C; + v78E = D_8019035E; + v790 = D_80190360; + __asm__ __volatile__(""); + D_80190488 = 1; + D_801902EC = 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 + + + +void func_8017B7A8(void) +{ + + 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_801902EC; + extern s16 D_80190364; + extern s16 D_80190366; + extern s16 D_80190368; + extern s16 D_8019035C; + extern s16 D_8019035E; + extern s16 D_80190360; + D_8012694C = 1; + D_801902EC = 0; + D_80190364 = (s16) D_80114F30; + D_80190366 = (s16) D_80114F34; + D_80190368 = (s16) D_80114F38; + D_8019035C = (s16) D_80114F24; + D_8019035E = (s16) D_80114F28; + D_80190360 = (s16) D_80114F2C; +} + + + + +void func_8017B824(void) { + + extern s32 D_801151D4; + extern s16 D_8019037C; + extern s16 D_8019037E; + extern s16 D_80190380; + extern s16 D_80190384; + extern s16 D_80190386; + extern s16 D_80190388; + D_8019037C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); + D_8019037E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); + D_80190380 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); + D_80190384 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); + D_80190386 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); + D_80190388 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); +} + + + +// @class: schedule +// @stuck: none — MATCH + + + +void func_8017B880(void) +{ + + extern s16 D_8019037C; + extern s16 D_8019037E; + extern s16 D_80190380; + extern s16 D_80190384; + extern s16 D_80190386; + extern s16 D_80190388; + extern s32 D_80114F30; + extern s32 D_80114F34; + extern s32 D_80114F38; + extern s32 D_80114F24; + extern s32 D_80114F28; + extern s32 D_80114F2C; + D_80114F30 = D_8019037C; + D_80114F34 = D_8019037E; + D_80114F38 = D_80190380; + D_80114F24 = D_80190384; + D_80114F28 = D_80190386; + D_80114F2C = D_80190388; +} + + + +typedef struct { unsigned char b[8]; } S8_8017B8E8; + + +s32 func_8017B8E8(s32 src) { + + extern s16 D_8019035C; + extern s16 D_80190364; + (*(S8_8017B8E8 *)&D_80190364) = ((S8_8017B8E8 *)src)[0]; + (*(S8_8017B8E8 *)&D_8019035C) = ((S8_8017B8E8 *)src)[1]; +} + + + + +// @class: struct +// @stuck: none — MATCH (63 ins) + + + + +void func_8017B940(void) +{ + + extern u16 D_80126B5E; + extern u16 D_80126B62; + extern u16 D_80126B66; + extern u16 D_8019036C; + extern u16 D_8019036E; + extern u16 D_80190370; + 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_801902EC; + extern short D_80190374; + extern short D_80190376; + extern short D_80190378; + extern s16 D_80190364; + extern s16 D_80190366; + extern s16 D_80190368; + extern s16 D_8019035C; + extern s16 D_8019035E; + extern s16 D_80190360; + s32 buf[3]; + + D_8012694C = 2; + buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_8019036C); + buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_8019036E); + buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_80190370); + (*(s16 *)&D_80190374) = buf[0]; + (*(s16 *)&D_80190376) = buf[1]; + (*(s16 *)&D_80190378) = buf[2]; + D_80190364 = D_80114F30 + buf[0]; + D_801902EC = 0; + D_80190366 = D_80114F34 + buf[1]; + D_80190368 = D_80114F38 + buf[2]; + D_8019035C = D_80114F24 + buf[0]; + D_8019035E = D_80114F28 + buf[1]; + D_80190360 = D_80114F2C + buf[2]; +} + + +INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_8017AE2C", func_8017BA3C); + +extern void func_8004914C(void *a0); +extern void func_800491AC(void *a0); +extern void func_80049CAC(s32 a0, s32 a1); + +typedef struct { s16 a, b, c, d; } SV4_8017BB34; +typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017BB34; + + + +s32 func_8017BB34(s32 param_1, s32 param_2) +{ + + extern s32 D_8019030C; + extern SV4_8017B368 D_80190314; + SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ + MTX_8017BB34 mtx; /* sp+0x18 : MATRIX, 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_80190314)) */ + SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ + + svec = *(SV4_8017BB34 *)param_2; + (*(SV4_8017BB34*)&D_8019030C) = 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_80190314) = buf1; +} + + + + +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 + + +void func_8017BC38(int param_1) +{ + + extern void (*D_80190334[10])(int); + register int i __asm__("$17"); + register void (**p)(int) __asm__("$16"); + + i = 0; + p = D_80190334; + 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); + +void func_8017BCA0(int param_1) { + + extern s16 D_801902EC; + extern s16 D_80190488; + func_8017B0E4(param_1, 0xC); + D_801902EC = D_801902EC + 1; + if (D_801902EC >= 0x1F) { + D_80190488 = 2; + } +} + + + +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) + + +extern void func_8017B0E4(int, int); +extern void func_8012A4BC(void); + +void func_8017BCF4(int param_1) +{ + + extern s16 D_801902EC; + extern s16 D_80190488; + func_8017B0E4(param_1, 6); + D_801902EC = D_801902EC + 1; + if (0x18 < D_801902EC) { + func_8012A4BC(); + D_80190488 = 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); + + + +void func_8017BD50(int param_1) +{ + + extern s16 D_801902EC; + extern void (*D_80190330)(void); + extern short D_80190374; + extern short D_80190376; + extern short D_80190378; + extern s16 D_80190488; + extern s32 D_80114F24; + extern s32 D_80114F28; + extern s32 D_80114F2C; + extern s32 D_80114F30; + extern s32 D_80114F34; + extern s32 D_80114F38; + func_8017B0E4(param_1, 6); + D_801902EC = D_801902EC + 1; + if (D_801902EC >= 0x19) { + if (D_80190330 != 0) { + (*D_80190330)(); + } else { + D_80114F30 = D_80114F30 + D_80190374; + D_80114F34 = D_80114F34 + D_80190376; + D_80114F38 = D_80114F38 + D_80190378; + D_80114F24 = D_80114F24 + D_80190374; + D_80114F28 = D_80114F28 + D_80190376; + D_80114F2C = D_80114F2C + D_80190378; + func_8012A4BC(); + } + D_80190488 = 0; + } +} + + + + +void func_8017BE60(void *a0) { + + extern void (*D_80182060[])(void); + D_80182060[*(u8 *)((s32)a0 + 0x4)](); +} + + +void func_8017BE9C(void) { +} + +void func_8017BEA4(void) { +} + +void func_8017BEAC(void) { +} + +void func_8017BEB4(void) { +} + + +