From 831cc14b02090d158ba1de3a86b3026c0564d1b1 Mon Sep 17 00:00:00 2001 From: McMarius11 Date: Mon, 30 Mar 2026 16:55:40 +0200 Subject: [PATCH] Decompile 33 functions across 4 source files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit blood.c (game_161520.c): 58 → 38 GLOBAL_ASM (-20 functions) - func_1513416C, func_151346D0, func_151346EC, func_1513470C, func_1513472C, func_1513477C, func_151348F0, func_15134CD4, func_151352EC, func_1513530C, func_15135658, func_15135670, func_15136A1C, func_15135424, func_15137E10, func_151368A8, func_151380B4, func_1513532C, func_151353A8, func_1513B0B8, func_15136A50, func_15134CEC, func_15134DAC, func_1513555C, func_151355B8, func_15135480, func_15134908 game_16EE20.c: 71 → 62 GLOBAL_ASM (-9 functions) - func_15142A5C, func_15143044, func_15143E64, func_15144A74 and 5 others from previous sessions game_1944C0.c: 37 → 35 GLOBAL_ASM (-2 functions) game_981E0.c: 59 → 57 GLOBAL_ASM (-2 functions) Also adds: - auto_funcs.h / auto_vars.h for undefined symbol declarations - struct102 field extensions (unk40-unk1D4) - Build fixes for mips64-linux-gnu cross toolchain - Helper tools: score_functions.py, gen_expected.sh, gen_progress.py Co-Authored-By: Claude Opus 4.6 (1M context) --- conker/Makefile | 14 +- conker/diff_settings.py | 2 + conker/include/auto_funcs.h | 139 + conker/include/auto_vars.h | 6574 +++++++++++++++++++++++++++++++ conker/include/functions.h | 12 + conker/include/macro.inc | 6 + conker/include/structs.h | 21 + conker/include/variables.h | 10 + conker/src/game_161520.c | 260 +- conker/src/game_16EE20.c | 50 +- conker/src/game_1944C0.c | 14 +- conker/src/game_981E0.c | 19 +- conker/tools/gen_expected.sh | 53 + conker/tools/gen_progress.py | 107 + conker/tools/score_functions.py | 359 ++ 15 files changed, 7604 insertions(+), 36 deletions(-) create mode 100644 conker/include/auto_funcs.h create mode 100644 conker/include/auto_vars.h create mode 100755 conker/tools/gen_expected.sh create mode 100644 conker/tools/gen_progress.py create mode 100755 conker/tools/score_functions.py diff --git a/conker/Makefile b/conker/Makefile index 039058b..3299445 100644 --- a/conker/Makefile +++ b/conker/Makefile @@ -108,7 +108,7 @@ CFLAGS += -D_LANGUAGE_C -D_FINALROM -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 CFLAGS += -woff 649,838 CFLAGS += $(INCLUDE_CFLAGS) -LDFLAGS = -T $(BUILD_DIR)/$(LD_SCRIPT) -Map $(TARGET).map -T undefined_syms.$(VERSION).txt -T undefined_funcs.$(VERSION).txt -T undefined_syms_auto.txt -T undefined_funcs_auto.txt --no-check-sections +LDFLAGS = -melf32btsmip -T $(BUILD_DIR)/$(LD_SCRIPT) -Map $(TARGET).map -T undefined_syms.$(VERSION).txt -T undefined_funcs.$(VERSION).txt -T undefined_syms_auto.txt -T undefined_funcs_auto.txt --no-check-sections ### Overrides @@ -211,7 +211,7 @@ $(BUILD_DIR)/%.s.o: %.s $(AS) $(ASFLAGS) -o $@ $< $(BUILD_DIR)/%.bin.o: %.bin - $(LD) -r -b binary -o $@ $< + $(LD) -melf32btsmip -r -b binary -o $@ $< $(TARGET).bin: $(TARGET).elf $(OBJCOPY) $(OBJCOPYFLAGS) -O binary $< $@ @@ -300,6 +300,14 @@ progress.debugger.csv: $(TARGET).elf $(PYTHON) ../tools/progress.py . $(TARGET).map .debugger --version $(VERSION) > $@ +# objdiff expected .o generation +EXPECTED_DIR := $(BUILD_DIR)/expected + +expected: $(EXPECTED_DIR)/game_161520.o $(EXPECTED_DIR)/game_16EE20.o $(EXPECTED_DIR)/game_1944C0.o $(EXPECTED_DIR)/game_981E0.o + +$(EXPECTED_DIR)/%.o: asm/nonmatchings/% + CROSS=$(CROSS) bash tools/gen_expected.sh $* + # settings -.PHONY: all clean default +.PHONY: all clean default expected SHELL = /bin/bash -e -o pipefail diff --git a/conker/diff_settings.py b/conker/diff_settings.py index a8a1676..35fbcf3 100644 --- a/conker/diff_settings.py +++ b/conker/diff_settings.py @@ -7,3 +7,5 @@ def apply(config, args): config['myimg'] = f'build/conker.{VERSION}.bin' config['mapfile'] = f'build/conker.{VERSION}.map' config['source_directories'] = ['src', 'include'] + config['objdump_executable'] = 'mips64-linux-gnu-objdump' + config['build_command'] = ['make', 'CROSS=mips64-linux-gnu-'] diff --git a/conker/include/auto_funcs.h b/conker/include/auto_funcs.h new file mode 100644 index 0000000..08a9f19 --- /dev/null +++ b/conker/include/auto_funcs.h @@ -0,0 +1,139 @@ +#ifndef AUTO_FUNCS_H +#define AUTO_FUNCS_H + +/* Auto-generated function declarations */ + +s32 func_10005B3C(); +s32 func_10005D20(); +s32 func_100060F0(); +s32 func_10006138(); +s32 func_100062F0(); +s32 func_10006418(); +s32 func_10006750(); +s32 func_1000681C(); +s32 func_10006C40(); +s32 func_10006CB8(); +s32 func_10006CBC(); +s32 func_10006D48(); +s32 func_10006D74(); +s32 func_10006DBC(); +s32 func_10006E2C(); +s32 func_10006E30(); +s32 func_1000777C(); +s32 func_100078B4(); +s32 func_10007F70(); +s32 func_15018470(); +s32 func_150184B8(); +s32 func_150185D4(); +s32 func_1501863C(); +s32 func_150186A0(); +s32 func_150186B0(); +s32 func_1507E7E4(); +s32 func_150A3B20(); +s32 func_150A3BAC(); +s32 func_150A3CBC(); +s32 func_150A3F5C(); +s32 func_150A40A8(); +s32 func_150A411C(); +s32 func_150A4670(); +s32 func_150A47E8(); +s32 func_150A47FC(); +s32 func_150A4898(); +s32 func_150A49F4(); +s32 func_150A4EF4(); +s32 func_150A4F5C(); +s32 func_150A5174(); +s32 func_150A5198(); +s32 func_150A52F4(); +s32 func_150A547C(); +s32 func_150A55BC(); +s32 func_150A5610(); +s32 func_150A5790(); +s32 func_150A5798(); +s32 func_150A579C(); +s32 func_150A5C88(); +s32 func_150A5FA4(); +s32 func_150A60C4(); +s32 func_150A64B8(); +s32 func_150A64C8(); +s32 func_150A66FC(); +s32 func_150A67D0(); +s32 func_150A6A5C(); +s32 func_150A6E3C(); +s32 func_150A6F2C(); +s32 func_150A7068(); +s32 func_150A7080(); +s32 func_150A717C(); +s32 func_150A72B4(); +s32 func_150A745C(); +s32 func_150A74CC(); +s32 func_150A769C(); +s32 func_150A8414(); +s32 func_150A851C(); +s32 func_150A8538(); +s32 func_150A8620(); +s32 func_150A8808(); +s32 func_150A8954(); +s32 func_150A8990(); +s32 func_150A89DC(); +s32 func_150A8B00(); +s32 func_150A8BEC(); +s32 func_150A8DC4(); +s32 func_150A8DE4(); +s32 func_150A8EBC(); +s32 func_150A8EC0(); +s32 func_150A9114(); +s32 func_150A9198(); +s32 func_150A9218(); +s32 func_150A92A8(); +s32 func_150A9400(); +s32 func_150A956C(); +s32 func_150A96DC(); +s32 func_150AA470(); +s32 func_150AAD84(); +s32 func_150AB1A0(); +s32 func_150AB228(); +s32 func_150AB3E8(); +s32 func_150AB540(); +s32 func_150AB644(); +s32 func_150AB6B0(); +s32 func_150AB6F0(); +s32 func_150AB8B8(); +s32 func_150AB8DC(); +s32 func_150ABAA8(); +s32 func_150ABDE0(); +s32 func_150ABE90(); +s32 func_150ABEEC(); +s32 func_150ABF60(); +s32 func_150AC1B4(); +s32 func_150AC238(); +s32 func_150AC258(); +s32 func_150AC2A0(); +s32 func_150AC2D8(); +s32 func_150AC350(); +s32 func_150AC5FC(); +s32 func_150AC694(); +s32 func_150AC738(); +s32 func_150AC964(); +s32 func_150ACB28(); +s32 func_150ACB50(); +s32 func_150ACBD8(); +s32 func_150ACBF8(); +s32 func_150ACE08(); +s32 func_150ACEC4(); +s32 func_150AD264(); +s32 func_150AD2F4(); +s32 func_150AD6E8(); +s32 func_150AD750(); +s32 func_150AD89C(); +s32 func_150AD960(); +s32 func_150AD990(); +s32 func_150C851C(); +s32 func_1510F8CC(); +s32 func_1515FDA0(); +s32 func_15178EFC(); +s32 func_151F2960(); +s32 func_151F2DFC(); +s32 func_151F3C1C(); + +#endif diff --git a/conker/include/auto_vars.h b/conker/include/auto_vars.h new file mode 100644 index 0000000..4972fc3 --- /dev/null +++ b/conker/include/auto_vars.h @@ -0,0 +1,6574 @@ +#ifndef AUTO_VARS_H +#define AUTO_VARS_H + +/* Auto-generated - all s32 for safety. See /tmp/final_report.txt for correct types */ + +extern s32 D_100071E0; +extern s32 D_11AD; +extern s32 D_15001B08; +extern s32 D_1500310C; +extern s32 D_150A3B88; +extern s32 D_150A44DC; +extern s32 D_150A4AF4; +extern s32 D_150A5070; +extern s32 D_150A75BC; +extern s32 D_150A75F0; +extern s32 D_150A760C; +extern s32 D_150A7624; +extern s32 D_150A763C; +extern s32 D_150A7654; +extern s32 D_150A9C3C; +extern s32 D_150AB40C; +extern s32 D_150AB4A8; +extern s32 D_150AB5C8; +extern s32 D_150AB60C; +extern s32 D_150AB988; +extern s32 D_150AC2AC; +extern s32 D_150AC480; +extern s32 D_151FA130; +extern s32 D_16000000; +extern s32 D_16005958; +extern s32 D_1647; +extern s32 D_1648; +extern s32 D_1653; +extern s32 D_1654; +extern s32 D_1673; +extern s32 D_19EA88; +extern s32 D_1A33E8; +extern s32 D_1A33F0; +extern s32 D_1A34E0; +extern s32 D_1A37E0; +extern s32 D_1C0; +extern s32 D_20000000; +extern s32 D_20000008; +extern s32 D_20000010; +extern s32 D_20000018; +extern s32 D_20000020; +extern s32 D_20000028; +extern s32 D_20000030; +extern s32 D_20000038; +extern s32 D_20000040; +extern s32 D_2C1; +extern s32 D_2D4B0; +extern s32 D_42450; +extern s32 D_507; +extern s32 D_508; +extern s32 D_63FFFF; +extern s32 D_7D3; +extern s32 D_7D4; +extern s32 D_7F1; +extern s32 D_7F2; +extern s32 D_7F6; +extern s32 D_7FB; +extern s32 D_7FC; +extern s32 D_7FFFC000; +extern s32 D_7FFFFFC0; +extern s32 D_8000000D; +extern s32 D_8000000E; +extern s32 D_8000000F; +extern s32 D_80000FF0; +extern s32 D_80004000; +extern s32 D_80005AB0; +extern s32 D_8002AAD0; +extern s32 D_8002AAEC; +extern s32 D_8002AAF0; +extern s32 D_8002AB14; +extern s32 D_8002AB50; +extern s32 D_8002AB58; +extern s32 D_8002AB6C; +extern s32 D_8002AB70; +extern s32 D_8002AC34; +extern s32 D_8002AC40; +extern s32 D_8002AC70; +extern s32 D_8002AC84; +extern s32 D_8002ADEC; +extern s32 D_8002ADFF; +extern s32 D_8002AE06; +extern s32 D_8002AE0D; +extern s32 D_8002AE18; +extern s32 D_8002AE1F; +extern s32 D_8002AE34; +extern s32 D_8002AE50; +extern s32 D_8002B07C; +extern s32 D_8002B080; +extern s32 D_8002BA10; +extern s32 D_8002BA18; +extern s32 D_8002BA50; +extern s32 D_8002BBE0; +extern s32 D_8002BD1C; +extern s32 D_8002BD30; +extern s32 D_8002BD44; +extern s32 D_8002BD80; +extern s32 D_8002BDF0; +extern s32 D_8002BDF8; +extern s32 D_8002BE04; +extern s32 D_8002BE30; +extern s32 D_8002BE80; +extern s32 D_8002BED0; +extern s32 D_8002BF20; +extern s32 D_8002BF68; +extern s32 D_8002BF6C; +extern s32 D_8002BF78; +extern s32 D_8002BF80; +extern s32 D_8002BF84; +extern s32 D_8002BF8C; +extern s32 D_8002BFC0; +extern s32 D_8002C0C0; +extern s32 D_8002C0E2; +extern s32 D_8002C120; +extern s32 D_8002C15C; +extern s32 D_8002C16F; +extern s32 D_8002C18E; +extern s32 D_8002C1B0; +extern s32 D_8002C400; +extern s32 D_8002C404; +extern s32 D_8002C450; +extern s32 D_8002C454; +extern s32 D_8002C458; +extern s32 D_8002C760; +extern s32 D_8002C764; +extern s32 D_8002C790; +extern s32 D_8002C7A0; +extern s32 D_8002C7C4; +extern s32 D_8002C7C8; +extern s32 D_8002C850; +extern s32 D_8002C8D0; +extern s32 D_8002C8F8; +extern s32 D_8002C900; +extern s32 D_8002C908; +extern s32 D_8002C910; +extern s32 D_8002C930; +extern s32 D_8002C960; +extern s32 D_800314B0; +extern s32 D_80032B18; +extern s32 D_800340E8; +extern s32 D_80036BA0; +extern s32 D_80037DD0; +extern s32 D_80037DE8; +extern s32 D_80037E00; +extern s32 D_80037E18; +extern s32 D_80037E30; +extern s32 D_80037E40; +extern s32 D_800388E0; +extern s32 D_8003A5E8; +extern s32 D_8003BE80; +extern s32 D_8003BE82; +extern s32 D_8003BE90; +extern s32 D_8003C8E8; +extern s32 D_8003C8F8; +extern s32 D_8003C8FC; +extern s32 D_8003E380; +extern s32 D_8003E384; +extern s32 D_8003E394; +extern s32 D_800406CC; +extern s32 D_80040AE0; +extern s32 D_80040F94; +extern s32 D_80041330; +extern s32 D_800417C0; +extern s32 D_80041880; +extern s32 D_80041890; +extern s32 D_800418A0; +extern s32 D_80041970; +extern s32 D_800425E4; +extern s32 D_800425E8; +extern s32 D_800426A0; +extern s32 D_800427F0; +extern s32 D_80042810; +extern s32 D_800428F0; +extern s32 D_80042910; +extern s32 D_800429B0; +extern s32 D_800429B4; +extern s32 D_800429B8; +extern s32 D_800429BC; +extern s32 D_800429C0; +extern s32 D_800429D0; +extern s32 D_80042A0C; +extern s32 D_80042A4C; +extern s32 D_80042A58; +extern s32 D_80042A90; +extern s32 D_80042AA0; +extern s32 D_80042AA8; +extern s32 D_80043AC0; +extern s32 D_80043AC4; +extern s32 D_80043AC5; +extern s32 D_80043AC6; +extern s32 D_80043AC8; +extern s32 D_80043ACC; +extern s32 D_80043B34; +extern s32 D_80082BBC; +extern s32 D_80082BD0; +extern s32 D_80082BD4; +extern s32 D_80082BEC; +extern s32 D_80082BF4; +extern s32 D_80082D80; +extern s32 D_80082E30; +extern s32 D_80082E98; +extern s32 D_80082F28; +extern s32 D_80082F80; +extern s32 D_80082F90; +extern s32 D_80082FA6; +extern s32 D_80082FA8; +extern s32 D_80082FC0; +extern s32 D_80083140; +extern s32 D_800832C0; +extern s32 D_80083440; +extern s32 D_800835C0; +extern s32 D_80083740; +extern s32 D_800838C0; +extern s32 D_80083A40; +extern s32 D_80083BC0; +extern s32 D_80083D40; +extern s32 D_80083EC0; +extern s32 D_80084040; +extern s32 D_80084060; +extern s32 D_80084068; +extern s32 D_80084070; +extern s32 D_80084074; +extern s32 D_80084078; +extern s32 D_800840FC; +extern s32 D_80084110; +extern s32 D_80084118; +extern s32 D_80084124; +extern s32 D_8008412C; +extern s32 D_8008413C; +extern s32 D_80084148; +extern s32 D_80084160; +extern s32 D_80084190; +extern s32 D_800841C0; +extern s32 D_8008422C; +extern s32 D_80084350; +extern s32 D_80084380; +extern s32 D_800843E0; +extern s32 D_80084400; +extern s32 D_80084404; +extern s32 D_80084410; +extern s32 D_80084430; +extern s32 D_8008443C; +extern s32 D_80084448; +extern s32 D_80084454; +extern s32 D_80084460; +extern s32 D_8008446C; +extern s32 D_80084484; +extern s32 D_80084488; +extern s32 D_8008448C; +extern s32 D_80084490; +extern s32 D_80084494; +extern s32 D_80084498; +extern s32 D_8008449C; +extern s32 D_800848D0; +extern s32 D_80084930; +extern s32 D_80085930; +extern s32 D_80085931; +extern s32 D_80085932; +extern s32 D_80085933; +extern s32 D_80085990; +extern s32 D_80085994; +extern s32 D_800859A0; +extern s32 D_800859E0; +extern s32 D_80085AA8; +extern s32 D_80085CC0; +extern s32 D_80085CC4; +extern s32 D_80085CD0; +extern s32 D_80085E80; +extern s32 D_80085E8C; +extern s32 D_80085EA0; +extern s32 D_80085EA4; +extern s32 D_80085EA8; +extern s32 D_80085EAC; +extern s32 D_80085FF0; +extern s32 D_800860F0; +extern s32 D_80086100; +extern s32 D_80086110; +extern s32 D_8008630C; +extern s32 D_800863FC; +extern s32 D_80086694; +extern s32 D_80086A88; +extern s32 D_80086AA0; +extern s32 D_80086B80; +extern s32 D_80086BA0; +extern s32 D_80086C24; +extern s32 D_80086C50; +extern s32 D_80086C60; +extern s32 D_80086C90; +extern s32 D_80086CAC; +extern s32 D_80086CC4; +extern s32 D_80087240; +extern s32 D_80087268; +extern s32 D_80087290; +extern s32 D_80087294; +extern s32 D_80087298; +extern s32 D_8008729C; +extern s32 D_800872A0; +extern s32 D_800872B0; +extern s32 D_800872C4; +extern s32 D_800872D0; +extern s32 D_800872D8; +extern s32 D_800872E0; +extern s32 D_800872E8; +extern s32 D_800872F0; +extern s32 D_800872F8; +extern s32 D_80087320; +extern s32 D_80087340; +extern s32 D_80087358; +extern s32 D_80087390; +extern s32 D_800873B0; +extern s32 D_800873B4; +extern s32 D_800873BC; +extern s32 D_800873C4; +extern s32 D_800873C8; +extern s32 D_800873D0; +extern s32 D_80087408; +extern s32 D_80087410; +extern s32 D_80087430; +extern s32 D_80087434; +extern s32 D_80087438; +extern s32 D_8008743A; +extern s32 D_8008743C; +extern s32 D_80087440; +extern s32 D_80088420; +extern s32 D_8008845C; +extern s32 D_80088498; +extern s32 D_800884D4; +extern s32 D_80088510; +extern s32 D_8008851C; +extern s32 D_80088540; +extern s32 D_80088544; +extern s32 D_80088548; +extern s32 D_8008854C; +extern s32 D_80088550; +extern s32 D_80088554; +extern s32 D_80088558; +extern s32 D_8008855C; +extern s32 D_80088560; +extern s32 D_80088564; +extern s32 D_80088568; +extern s32 D_8008856C; +extern s32 D_80088570; +extern s32 D_80088574; +extern s32 D_80088578; +extern s32 D_80088580; +extern s32 D_800886A4; +extern s32 D_800886E0; +extern s32 D_800886E4; +extern s32 D_800886F0; +extern s32 D_800886F4; +extern s32 D_800886F8; +extern s32 D_80088700; +extern s32 D_80088710; +extern s32 D_80088734; +extern s32 D_8008873C; +extern s32 D_80088740; +extern s32 D_80088760; +extern s32 D_800887B8; +extern s32 D_800887C0; +extern s32 D_800887C8; +extern s32 D_800887D0; +extern s32 D_800887E0; +extern s32 D_800887F4; +extern s32 D_80088800; +extern s32 D_80088810; +extern s32 D_80088820; +extern s32 D_80088858; +extern s32 D_80088860; +extern s32 D_80088864; +extern s32 D_80088870; +extern s32 D_80088874; +extern s32 D_80088890; +extern s32 D_80088894; +extern s32 D_80088898; +extern s32 D_8008889C; +extern s32 D_800888A0; +extern s32 D_800888B0; +extern s32 D_800888C0; +extern s32 D_800888C4; +extern s32 D_800888C8; +extern s32 D_800888CC; +extern s32 D_800888D0; +extern s32 D_800888D4; +extern s32 D_800888D8; +extern s32 D_800888DC; +extern s32 D_800888E0; +extern s32 D_80088900; +extern s32 D_80088910; +extern s32 D_8008891C; +extern s32 D_80088928; +extern s32 D_8008892C; +extern s32 D_80088930; +extern s32 D_80088934; +extern s32 D_80088938; +extern s32 D_8008893C; +extern s32 D_80088940; +extern s32 D_80088944; +extern s32 D_80088948; +extern s32 D_80088950; +extern s32 D_80088958; +extern s32 D_80088960; +extern s32 D_8008896C; +extern s32 D_80088984; +extern s32 D_80088988; +extern s32 D_80088990; +extern s32 D_800889A0; +extern s32 D_800889B0; +extern s32 D_800889C0; +extern s32 D_800889D0; +extern s32 D_800889E0; +extern s32 D_80088A04; +extern s32 D_80088A10; +extern s32 D_80088A20; +extern s32 D_80088A2C; +extern s32 D_80088A34; +extern s32 D_80088A3C; +extern s32 D_80088A40; +extern s32 D_80088A44; +extern s32 D_80088A5C; +extern s32 D_80088A64; +extern s32 D_80088A68; +extern s32 D_80088A74; +extern s32 D_80088A80; +extern s32 D_80088A90; +extern s32 D_80088AA0; +extern s32 D_80088AB0; +extern s32 D_80088AD0; +extern s32 D_80088AD4; +extern s32 D_80088AD8; +extern s32 D_80088ADC; +extern s32 D_80088AE0; +extern s32 D_80088AE4; +extern s32 D_80088AE8; +extern s32 D_80088AEC; +extern s32 D_80088AF0; +extern s32 D_80088B00; +extern s32 D_80088B20; +extern s32 D_80088B2C; +extern s32 D_80088B30; +extern s32 D_80088B34; +extern s32 D_80088B38; +extern s32 D_80088B50; +extern s32 D_80088B80; +extern s32 D_80088B94; +extern s32 D_80088BA0; +extern s32 D_80088BC0; +extern s32 D_80088BD0; +extern s32 D_80088C10; +extern s32 D_80088C18; +extern s32 D_80088C28; +extern s32 D_80088C38; +extern s32 D_80088C50; +extern s32 D_80088C58; +extern s32 D_80088C60; +extern s32 D_80088C64; +extern s32 D_80088C90; +extern s32 D_80089120; +extern s32 D_80089123; +extern s32 D_800891BC; +extern s32 D_800891D8; +extern s32 D_800891EC; +extern s32 D_800891F0; +extern s32 D_800891F4; +extern s32 D_800891F8; +extern s32 D_800891FC; +extern s32 D_80089234; +extern s32 D_80089240; +extern s32 D_80089250; +extern s32 D_80089260; +extern s32 D_80089262; +extern s32 D_80089264; +extern s32 D_80089268; +extern s32 D_80089320; +extern s32 D_80089324; +extern s32 D_80089444; +extern s32 D_80089470; +extern s32 D_800894C0; +extern s32 D_800894C8; +extern s32 D_800894E0; +extern s32 D_800894F0; +extern s32 D_80089544; +extern s32 D_80089560; +extern s32 D_80089570; +extern s32 D_80089580; +extern s32 D_80089590; +extern s32 D_800895B0; +extern s32 D_800895D0; +extern s32 D_80089630; +extern s32 D_80089670; +extern s32 D_80089760; +extern s32 D_80089800; +extern s32 D_80089804; +extern s32 D_80089814; +extern s32 D_80089844; +extern s32 D_80089874; +extern s32 D_80089878; +extern s32 D_800898B0; +extern s32 D_80089914; +extern s32 D_80089934; +extern s32 D_80089970; +extern s32 D_80089974; +extern s32 D_8008997C; +extern s32 D_80089988; +extern s32 D_8008998C; +extern s32 D_800899A4; +extern s32 D_800899B0; +extern s32 D_800899D4; +extern s32 D_800899F8; +extern s32 D_80089A20; +extern s32 D_80089A70; +extern s32 D_80089AA0; +extern s32 D_80089AFC; +extern s32 D_80089B18; +extern s32 D_80089B1C; +extern s32 D_80089B38; +extern s32 D_80089B5C; +extern s32 D_80089B6C; +// D_80089B70 - moved to variables.h as function pointer array +// D_80089B88 - moved to variables.h as function pointer array +extern s32 D_80089BA0; +extern s32 D_80089BA4; +extern s32 D_80089BA8; +extern s32 D_80089BAC; +extern s32 D_80089C18; +extern s32 D_80089C28; +extern s32 D_80089C70; +extern s32 D_80089CA8; +extern s32 D_80089CB8; +extern s32 D_80089D60; +extern s32 D_80089E10; +extern s32 D_80089E1C; +extern s32 D_80089F64; +extern s32 D_80089F90; +extern s32 D_80089F9C; +extern s32 D_80089FE4; +extern s32 D_8008A02C; +extern s32 D_8008A080; +extern s32 D_8008A160; +extern s32 D_8008A200; +extern s32 D_8008A23C; +extern s32 D_8008A284; +extern s32 D_8008A2A4; +extern s32 D_8008A2F0; +extern s32 D_8008A340; +extern s32 D_8008A390; +extern s32 D_8008A3E0; +extern s32 D_8008A3F8; +extern s32 D_8008A42C; +extern s32 D_8008A430; +extern s32 D_8008A450; +extern s32 D_8008AA00; +extern s32 D_8008AA70; +extern s32 D_8008AACC; +extern s32 D_8008AB58; +extern s32 D_8008AB64; +extern s32 D_8008AB90; +extern s32 D_8008ABE8; +extern s32 D_8008AC60; +extern s32 D_8008ACC8; +extern s32 D_8008AD04; +extern s32 D_8008AD90; +extern s32 D_8008ADA0; +extern s32 D_8008ADA8; +extern s32 D_8008ADBC; +extern s32 D_8008ADCC; +extern s32 D_8008AE00; +extern s32 D_8008AE0C; +extern s32 D_8008AE18; +extern s32 D_8008AFB8; +extern s32 D_8008AFD0; +extern s32 D_8008B02C; +extern s32 D_8008B040; +extern s32 D_8008B078; +extern s32 D_8008B07C; +extern s32 D_8008B080; +extern s32 D_8008B084; +extern s32 D_8008B090; +extern s32 D_8008B0C0; +extern s32 D_8008B0D0; +extern s32 D_8008B0D8; +extern s32 D_8008B0E4; +extern s32 D_8008B150; +extern s32 D_8008B358; +extern s32 D_8008B364; +extern s32 D_8008B37C; +extern s32 D_8008B390; +extern s32 D_8008B394; +extern s32 D_8008B3E0; +extern s32 D_8008C9C8; +extern s32 D_8008CA20; +extern s32 D_8008CA4C; +extern s32 D_8008CA50; +extern s32 D_8008CA64; +extern s32 D_8008CADC; +extern s32 D_8008CAE0; +extern s32 D_8008CB14; +extern s32 D_8008CB64; +extern s32 D_8008CB70; +extern s32 D_8008CBA0; +extern s32 D_8008CBC4; +extern s32 D_8008CBD0; +extern s32 D_8008CBDC; +extern s32 D_8008CBE8; +extern s32 D_8008CBF4; +extern s32 D_8008CC00; +extern s32 D_8008CC0C; +extern s32 D_8008CC20; +extern s32 D_8008CC70; +extern s32 D_8008CD04; +extern s32 D_8008CD74; +extern s32 D_8008CD7C; +extern s32 D_8008CDF0; +extern s32 D_8008CEB4; +extern s32 D_8008CEB8; +extern s32 D_8008CEBC; +extern s32 D_8008CF00; +extern s32 D_8008CFA0; +extern s32 D_8008D004; +extern s32 D_8008D008; +extern s32 D_8008D00C; +extern s32 D_8008D010; +extern s32 D_8008D018; +extern s32 D_8008D050; +extern s32 D_8008D058; +extern s32 D_8008D060; +extern s32 D_8008D062; +extern s32 D_8008D066; +extern s32 D_8008D067; +extern s32 D_8008D0B0; +extern s32 D_8008D318; +extern s32 D_8008D3C0; +extern s32 D_8008D3E0; +extern s32 D_8008D3E8; +extern s32 D_8008D3F8; +extern s32 D_8008D410; +extern s32 D_8008D448; +extern s32 D_8008D498; +extern s32 D_8008D4C0; +extern s32 D_8008D538; +extern s32 D_8008D578; +extern s32 D_8008D580; +extern s32 D_8008D588; +extern s32 D_8008D590; +extern s32 D_8008D5A0; +extern s32 D_8008D5B0; +extern s32 D_8008D5B8; +extern s32 D_8008D5C0; +extern s32 D_8008D5D0; +extern s32 D_8008D5E0; +extern s32 D_8008D620; +extern s32 D_8008D628; +extern s32 D_8008D630; +extern s32 D_8008D67C; +extern s32 D_8008D680; +extern s32 D_8008D684; +extern s32 D_8008F860; +extern s32 D_8008F870; +extern s32 D_8008F87C; +extern s32 D_8008F880; +extern s32 D_8008F88C; +extern s32 D_8008F890; +extern s32 D_8008F894; +extern s32 D_8008F898; +extern s32 D_8008F89C; +extern s32 D_8008F8A0; +extern s32 D_8008F8A4; +extern s32 D_8008F8A8; +extern s32 D_8008F8B4; +extern s32 D_8008F8B8; +extern s32 D_8008F8BC; +extern s32 D_8008F8C0; +extern s32 D_8008F8C4; +extern s32 D_8008F8D0; +extern s32 D_8008F8E0; +extern s32 D_8008F8E8; +extern s32 D_8008F900; +extern s32 D_8008F904; +extern s32 D_8008F940; +extern s32 D_8008F948; +extern s32 D_8008F94C; +extern s32 D_8008F958; +extern s32 D_8008F964; +extern s32 D_8008F970; +extern s32 D_8008F980; +extern s32 D_8008F984; +extern s32 D_8008F9A4; +extern s32 D_8008F9AC; +extern s32 D_8008FA60; +extern s32 D_8008FA70; +extern s32 D_8008FAD0; +extern s32 D_8008FADC; +extern s32 D_8008FAF0; +extern s32 D_8008FAF8; +extern s32 D_8008FB10; +extern s32 D_8008FB68; +extern s32 D_8008FB70; +extern s32 D_8008FB80; +extern s32 D_8008FB84; +extern s32 D_8008FB90; +extern s32 D_8008FB98; +extern s32 D_8008FBA0; +extern s32 D_8008FBAC; +extern s32 D_8008FBC0; +extern s32 D_8008FBD0; +extern s32 D_8008FBE8; +extern s32 D_8008FC10; +extern s32 D_8008FC28; +extern s32 D_8008FC30; +extern s32 D_8008FC40; +extern s32 D_8008FC48; +extern s32 D_8008FC4C; +extern s32 D_8008FC50; +extern s32 D_8008FC54; +extern s32 D_8008FC58; +extern s32 D_8008FC5C; +extern s32 D_8008FC64; +extern s32 D_8008FC70; +extern s32 D_8008FC8C; +extern s32 D_8008FC94; +extern s32 D_8008FCA0; +extern s32 D_8008FCA4; +extern s32 D_8008FCA8; +extern s32 D_8008FCC0; +extern s32 D_8008FCD0; +extern s32 D_8008FD00; +extern s32 D_8008FD04; +extern s32 D_8008FD1C; +extern s32 D_8008FD30; +extern s32 D_8008FD38; +extern s32 D_8008FD70; +extern s32 D_8008FD74; +extern s32 D_8008FD78; +extern s32 D_8008FD7C; +extern s32 D_8008FD80; +extern s32 D_8008FD84; +extern s32 D_8008FD88; +extern s32 D_8008FD98; +extern s32 D_8008FD9C; +extern s32 D_8008FDA0; +extern s32 D_8008FDA4; +extern s32 D_8008FDAC; +extern s32 D_8008FDB0; +extern s32 D_8008FDB4; +extern s32 D_8008FDB8; +extern s32 D_8008FDC0; +extern s32 D_8008FDC4; +extern s32 D_8008FDC8; +extern s32 D_8008FDCC; +extern s32 D_8008FDCD; +extern s32 D_8008FDD0; +extern s32 D_8008FDD4; +extern s32 D_8008FDD8; +extern s32 D_8008FDDC; +extern s32 D_8008FDE0; +extern s32 D_8008FDE4; +extern s32 D_8008FDE8; +extern s32 D_8008FDEC; +extern s32 D_8008FE1C; +extern s32 D_8008FE20; +extern s32 D_8008FE24; +extern s32 D_8008FE28; +extern s32 D_8008FE2C; +extern s32 D_8008FE30; +extern s32 D_8008FE34; +extern s32 D_8008FE38; +extern s32 D_8008FE3C; +extern s32 D_8008FE40; +extern s32 D_8008FE44; +extern s32 D_8008FE45; +extern s32 D_8008FE48; +extern s32 D_8008FE54; +extern s32 D_8008FE55; +extern s32 D_8008FE56; +extern s32 D_8008FE57; +extern s32 D_8008FE6B; +extern s32 D_8008FE6C; +extern s32 D_8008FE6D; +extern s32 D_8008FE6E; +extern s32 D_8008FE6F; +extern s32 D_8008FE84; +extern s32 D_8008FE85; +extern s32 D_8008FE86; +extern s32 D_8008FE9B; +extern s32 D_8008FE9C; +extern s32 D_8008FEA4; +extern s32 D_8008FEC4; +extern s32 D_8008FEE3; +extern s32 D_8008FEEC; +extern s32 D_8008FEF0; +extern s32 D_8008FEF4; +extern s32 D_8008FEF8; +extern s32 D_8008FEFC; +extern s32 D_8008FF00; +extern s32 D_8008FF04; +extern s32 D_8008FF08; +extern s32 D_8008FF24; +extern s32 D_8008FF28; +extern s32 D_8008FF2C; +extern s32 D_8008FF30; +extern s32 D_8008FF34; +extern s32 D_8008FF37; +extern s32 D_8008FF3C; +extern s32 D_8008FF40; +extern s32 D_8008FF48; +extern s32 D_8008FF60; +extern s32 D_8008FF78; +extern s32 D_8008FF80; +extern s32 D_8008FF88; +extern s32 D_8008FF90; +extern s32 D_8008FFB0; +extern s32 D_8008FFBC; +extern s32 D_8008FFC0; +extern s32 D_8008FFF4; +extern s32 D_80090028; +extern s32 D_80090058; +extern s32 D_8009005C; +extern s32 D_80090060; +extern s32 D_8009006C; +extern s32 D_80090070; +extern s32 D_80090074; +extern s32 D_8009009C; +extern s32 D_800900B8; +extern s32 D_800900BC; +extern s32 D_800900D4; +extern s32 D_800900D8; +extern s32 D_800900F8; +extern s32 D_800900FC; +extern s32 D_80090110; +extern s32 D_80090128; +extern s32 D_80090138; +extern s32 D_8009013C; +extern s32 D_80090204; +extern s32 D_80090214; +extern s32 D_80090228; +extern s32 D_8009022C; +extern s32 D_8009025A; +extern s32 D_80090262; +extern s32 D_80090266; +extern s32 D_8009026E; +extern s32 D_80090272; +extern s32 D_80090274; +extern s32 D_80090298; +extern s32 D_800902BC; +extern s32 D_800902C8; +extern s32 D_800902CC; +extern s32 D_800902D0; +extern s32 D_800902D4; +extern s32 D_800902D8; +extern s32 D_800902DC; +extern s32 D_800902FC; +extern s32 D_80090324; +extern s32 D_800903AC; +extern s32 D_800903BC; +extern s32 D_800903C8; +extern s32 D_800903D4; +extern s32 D_800903F4; +extern s32 D_80090414; +extern s32 D_80090514; +extern s32 D_80090520; +extern s32 D_8009053C; +extern s32 D_8009054C; +extern s32 D_8009055C; +extern s32 D_80090562; +extern s32 D_80090564; +extern s32 D_8009056C; +extern s32 D_8009057C; +extern s32 D_80090582; +extern s32 D_8009058C; +extern s32 D_8009059C; +extern s32 D_80090614; +extern s32 D_800907FC; +extern s32 D_80090B60; +extern s32 D_80090B64; +extern s32 D_80090CD4; +extern s32 D_80090D34; +extern s32 D_80090D70; +extern s32 D_80090DE8; +extern s32 D_80090E0C; +extern s32 D_80090E78; +extern s32 D_80090E84; +extern s32 D_80090F68; +extern s32 D_80091064; +extern s32 D_80091100; +extern s32 D_80091154; +extern s32 D_80091238; +extern s32 D_80091430; +extern s32 D_80091514; +extern s32 D_80091564; +extern s32 D_800915A4; +extern s32 D_800915B0; +extern s32 D_800915DC; +extern s32 D_800915EC; +extern s32 D_800915FC; +extern s32 D_8009160C; +extern s32 D_8009161C; +extern s32 D_8009162C; +extern s32 D_8009163C; +extern s32 D_8009164C; +extern s32 D_8009165C; +extern s32 D_80091690; +extern s32 D_800916AC; +extern s32 D_800916C8; +extern s32 D_800916E4; +extern s32 D_80091700; +extern s32 D_80091710; +extern s32 D_80091720; +extern s32 D_80091730; +extern s32 D_80091740; +extern s32 D_80091750; +extern s32 D_80091764; +extern s32 D_80091770; +extern s32 D_800917B8; +extern s32 D_800917EC; +extern s32 D_800917F8; +extern s32 D_80091804; +extern s32 D_80091810; +extern s32 D_8009181C; +extern s32 D_80091828; +extern s32 D_80091840; +extern s32 D_8009187C; +extern s32 D_800918A0; +extern s32 D_800918AC; +extern s32 D_800918DC; +extern s32 D_800918E8; +extern s32 D_800918F4; +extern s32 D_80091900; +extern s32 D_8009190C; +extern s32 D_80091918; +extern s32 D_80091924; +extern s32 D_80091930; +extern s32 D_8009193C; +extern s32 D_80091948; +extern s32 D_80091970; +extern s32 D_800959D0; +extern s32 D_800959D4; +extern s32 D_800959E4; +extern s32 D_800959E8; +extern s32 D_800959EC; +extern s32 D_800959F0; +extern s32 D_80095C64; +extern s32 D_80095CC4; +extern s32 D_80095CE0; +extern s32 D_80095CE1; +extern s32 D_80095CE2; +extern s32 D_80095FA0; +extern s32 D_800960F0; +extern s32 D_80096104; +extern s32 D_80096120; +extern s32 D_80096124; +extern s32 D_80096128; +extern s32 D_8009612C; +extern s32 D_80096130; +extern s32 D_80096134; +extern s32 D_80096138; +extern s32 D_8009613C; +extern s32 D_80096140; +extern s32 D_80096144; +extern s32 D_80096148; +extern s32 D_8009614C; +extern s32 D_80096150; +extern s32 D_80096154; +extern s32 D_80096158; +extern s32 D_8009615C; +extern s32 D_80096160; +extern s32 D_80096164; +extern s32 D_80096168; +extern s32 D_80096188; +extern s32 D_8009618C; +extern s32 D_80096190; +extern s32 D_80096194; +extern s32 D_80096198; +extern s32 D_8009619C; +extern s32 D_800961A0; +extern s32 D_800961A4; +extern s32 D_80096250; +extern s32 D_80096254; +extern s32 D_80096258; +extern s32 D_8009625C; +extern s32 D_80096260; +extern s32 D_80096264; +extern s32 D_80096268; +extern s32 D_8009626C; +extern s32 D_80096270; +extern s32 D_80096274; +extern s32 D_80096278; +extern s32 D_8009627C; +extern s32 D_80096280; +extern s32 D_80096284; +extern s32 D_80096288; +extern s32 D_8009628C; +extern s32 D_80096290; +extern s32 D_80096294; +extern s32 D_80096298; +extern s32 D_8009629C; +extern s32 D_800962A0; +extern s32 D_800962A4; +extern s32 D_800962A8; +extern s32 D_800962AC; +extern s32 D_800962B0; +extern s32 D_800962B4; +extern s32 D_800962B8; +extern s32 D_800962BC; +extern s32 D_800962C0; +extern s32 D_800962C4; +extern s32 D_800962C8; +extern s32 D_800962CC; +extern s32 D_800962D0; +extern s32 D_800962D4; +extern s32 D_800962D8; +extern s32 D_800962DC; +extern s32 D_800962E0; +extern s32 D_800962E4; +extern s32 D_800962E8; +extern s32 D_800962EC; +extern s32 D_800962F0; +extern s32 D_800962F4; +extern s32 D_800962F8; +extern s32 D_800962FC; +extern s32 D_80096300; +extern s32 D_80096304; +extern s32 D_80096308; +extern s32 D_8009630C; +extern s32 D_80096310; +extern s32 D_80096314; +extern s32 D_80096318; +extern s32 D_80096320; +extern s32 D_80096338; +extern s32 D_80096350; +extern s32 D_80096368; +extern s32 D_80096380; +extern s32 D_80096450; +extern s32 D_80096498; +extern s32 D_8009649E; +extern s32 D_800964A0; +extern s32 D_800964A4; +extern s32 D_800964A8; +extern s32 D_800964AC; +extern s32 D_800964B0; +extern s32 D_80096510; +extern s32 D_80096514; +extern s32 D_80096518; +extern s32 D_8009651C; +extern s32 D_80096520; +extern s32 D_80096524; +extern s32 D_80096550; +extern s32 D_80096580; +extern s32 D_8009658C; +extern s32 D_800965A0; +extern s32 D_800965B0; +extern s32 D_800965D4; +extern s32 D_800965D8; +extern s32 D_800965DC; +extern s32 D_800965E0; +extern s32 D_80096630; +extern s32 D_80096634; +extern s32 D_80096638; +extern s32 D_8009663C; +extern s32 D_80096640; +extern s32 D_80096644; +extern s32 D_80096648; +extern s32 D_8009664C; +extern s32 D_80096650; +extern s32 D_80096654; +extern s32 D_80096658; +extern s32 D_8009665C; +extern s32 D_80096660; +extern s32 D_80096664; +extern s32 D_80096668; +extern s32 D_8009666C; +extern s32 D_80096670; +extern s32 D_80096674; +extern s32 D_80096678; +extern s32 D_80096680; +extern s32 D_80096684; +extern s32 D_80096688; +extern s32 D_8009668C; +extern s32 D_80096690; +extern s32 D_80096694; +extern s32 D_80096698; +extern s32 D_8009669C; +extern s32 D_800966A0; +extern s32 D_800966A4; +extern s32 D_800966A8; +extern s32 D_800966AC; +extern s32 D_800966B0; +extern s32 D_800966B4; +extern s32 D_80096800; +extern s32 D_80096804; +extern s32 D_800968D0; +extern s32 D_800968E4; +extern s32 D_800968E8; +extern s32 D_800968EC; +extern s32 D_800968F0; +extern s32 D_800968F4; +extern s32 D_800968F8; +extern s32 D_800968FC; +extern s32 D_80096910; +extern s32 D_80096914; +extern s32 D_80096918; +extern s32 D_8009691C; +extern s32 D_80096920; +extern s32 D_80096960; +extern s32 D_800969C0; +extern s32 D_800969C4; +extern s32 D_800969C8; +extern s32 D_800969CC; +extern s32 D_800969D0; +extern s32 D_800969D4; +extern s32 D_800969D8; +extern s32 D_800969DC; +extern s32 D_800969E0; +extern s32 D_800969E4; +extern s32 D_800969E8; +extern s32 D_800969EC; +extern s32 D_800969F0; +extern s32 D_800969F4; +extern s32 D_800969F8; +extern s32 D_800969FC; +extern s32 D_80096A00; +extern s32 D_80096A04; +extern s32 D_80096A08; +extern s32 D_80096A0C; +extern s32 D_80096A10; +extern s32 D_80096A14; +extern s32 D_80096A18; +extern s32 D_80096A1C; +extern s32 D_80096A20; +extern s32 D_80096A30; +extern s32 D_80096A3C; +extern s32 D_80096A48; +extern s32 D_80096A6C; +extern s32 D_80096A9C; +extern s32 D_80096AE4; +extern s32 D_80096AF0; +extern s32 D_80096B00; +extern s32 D_80096B18; +extern s32 D_80096B78; +extern s32 D_80096BE0; +extern s32 D_80096BF8; +extern s32 D_80096BFC; +extern s32 D_80096C68; +extern s32 D_80096C6C; +extern s32 D_80096C70; +extern s32 D_80096C74; +extern s32 D_80096C78; +extern s32 D_80096C7C; +extern s32 D_80096C80; +extern s32 D_80096C84; +extern s32 D_80096C88; +extern s32 D_80096C8C; +extern s32 D_80096D80; +extern s32 D_80096D84; +extern s32 D_80096D88; +extern s32 D_80096D8C; +extern s32 D_80096D90; +extern s32 D_80096D94; +extern s32 D_80096D98; +extern s32 D_80096D9C; +extern s32 D_80096DA0; +extern s32 D_80096DA4; +extern s32 D_80096DA8; +extern s32 D_80096DAC; +extern s32 D_80096DB0; +extern s32 D_80096DB4; +extern s32 D_80096DB8; +extern s32 D_80096DBC; +extern s32 D_80096DC0; +extern s32 D_80096DC4; +extern s32 D_80096DC8; +extern s32 D_80096DCC; +extern s32 D_80096DD0; +extern s32 D_80096DE0; +extern s32 D_80096DE4; +extern s32 D_80096DE8; +extern s32 D_80096DEC; +extern s32 D_80096DF0; +extern s32 D_80096DF4; +extern s32 D_80096EF8; +extern s32 D_80096EFC; +extern s32 D_80096F00; +extern s32 D_80096F38; +extern s32 D_80096F3C; +extern s32 D_800970DC; +extern s32 D_80097B68; +extern s32 D_80097D14; +extern s32 D_80097D18; +extern s32 D_80097D1C; +extern s32 D_80097D40; +extern s32 D_80097D44; +extern s32 D_80097D48; +extern s32 D_80097D4C; +extern s32 D_80097D50; +extern s32 D_80097D54; +extern s32 D_80097D58; +extern s32 D_80097D5C; +extern s32 D_80097D60; +extern s32 D_80097D70; +extern s32 D_80097D74; +extern s32 D_80097D80; +extern s32 D_80097E7C; +extern s32 D_80098050; +extern s32 D_80098068; +extern s32 D_800981A0; +extern s32 D_80098250; +extern s32 D_80098354; +extern s32 D_80098358; +extern s32 D_8009835C; +extern s32 D_80098360; +extern s32 D_80098628; +extern s32 D_8009862C; +extern s32 D_80098630; +extern s32 D_80098634; +extern s32 D_80098638; +extern s32 D_8009863C; +extern s32 D_80098640; +extern s32 D_80098644; +extern s32 D_80098648; +extern s32 D_8009864C; +extern s32 D_80098650; +extern s32 D_80098654; +extern s32 D_80098658; +extern s32 D_8009865C; +extern s32 D_800986DC; +extern s32 D_800986E0; +extern s32 D_800986E4; +extern s32 D_800986E8; +extern s32 D_800986EC; +extern s32 D_800986F0; +extern s32 D_80098700; +extern s32 D_80098710; +extern s32 D_80098720; +extern s32 D_80098730; +extern s32 D_80098740; +extern s32 D_80098754; +extern s32 D_80098768; +extern s32 D_8009877C; +extern s32 D_8009877E; +extern s32 D_80098780; +extern s32 D_80098830; +extern s32 D_80098836; +extern s32 D_80098838; +extern s32 D_8009883C; +extern s32 D_80098840; +extern s32 D_80098844; +extern s32 D_80098848; +extern s32 D_8009884C; +extern s32 D_80098850; +extern s32 D_80098854; +extern s32 D_80098858; +extern s32 D_8009885C; +extern s32 D_80098888; +extern s32 D_80098914; +extern s32 D_80098918; +extern s32 D_8009891C; +extern s32 D_80098920; +extern s32 D_80098924; +extern s32 D_80098928; +extern s32 D_8009892C; +extern s32 D_80098930; +extern s32 D_80098944; +extern s32 D_80098948; +extern s32 D_80098AFC; +extern s32 D_80098B00; +extern s32 D_80098B04; +extern s32 D_80098B08; +extern s32 D_80098B0C; +extern s32 D_80098B10; +extern s32 D_80098B80; +extern s32 D_80098B90; +extern s32 D_80098B94; +extern s32 D_80098C64; +extern s32 D_80098D40; +extern s32 D_80098D44; +extern s32 D_80098D48; +extern s32 D_80098D4C; +extern s32 D_80098D50; +extern s32 D_80098D54; +extern s32 D_80098D58; +extern s32 D_80098D5C; +extern s32 D_80098D60; +extern s32 D_80098D64; +extern s32 D_80098D68; +extern s32 D_80098D70; +extern s32 D_80098DC0; +extern s32 D_80098DD0; +extern s32 D_80098DD4; +extern s32 D_80098DD8; +extern s32 D_80098DDC; +extern s32 D_80098DE0; +extern s32 D_80098DE4; +extern s32 D_80098DE8; +extern s32 D_80098DEC; +extern s32 D_80098DF0; +extern s32 D_80098DF4; +extern s32 D_80098DF8; +extern s32 D_80099080; +extern s32 D_80099090; +extern s32 D_80099094; +extern s32 D_80099098; +extern s32 D_800990A0; +extern s32 D_800990A4; +extern s32 D_800990A8; +extern s32 D_800990C0; +extern s32 D_800990E0; +extern s32 D_8009917C; +extern s32 D_800991B4; +extern s32 D_800991B8; +extern s32 D_800991BC; +extern s32 D_800991C0; +extern s32 D_800991C4; +extern s32 D_800991C8; +extern s32 D_800991CC; +extern s32 D_800991D0; +extern s32 D_800991D8; +extern s32 D_800991DC; +extern s32 D_800991E0; +extern s32 D_800991E4; +extern s32 D_800991E8; +extern s32 D_800991EC; +extern s32 D_800991F0; +extern s32 D_800991F4; +extern s32 D_800991F8; +extern s32 D_800991FC; +extern s32 D_80099200; +extern s32 D_80099204; +extern s32 D_80099208; +extern s32 D_8009920C; +extern s32 D_80099210; +extern s32 D_80099214; +extern s32 D_80099218; +extern s32 D_8009921C; +extern s32 D_80099220; +extern s32 D_80099224; +extern s32 D_80099228; +extern s32 D_8009922C; +extern s32 D_80099230; +extern s32 D_80099234; +extern s32 D_80099238; +extern s32 D_8009923C; +extern s32 D_80099240; +extern s32 D_80099244; +extern s32 D_80099248; +extern s32 D_8009924C; +extern s32 D_80099250; +extern s32 D_80099254; +extern s32 D_80099258; +extern s32 D_8009925C; +extern s32 D_80099260; +extern s32 D_80099264; +extern s32 D_80099268; +extern s32 D_8009926C; +extern s32 D_80099270; +extern s32 D_80099274; +extern s32 D_80099278; +extern s32 D_8009927C; +extern s32 D_80099280; +extern s32 D_80099284; +extern s32 D_80099288; +extern s32 D_8009928C; +extern s32 D_80099290; +extern s32 D_80099294; +extern s32 D_80099298; +extern s32 D_8009929C; +extern s32 D_800992A0; +extern s32 D_800992A4; +extern s32 D_800992A8; +extern s32 D_800992AC; +extern s32 D_800992B0; +extern s32 D_800992B4; +extern s32 D_800992B8; +extern s32 D_800992BC; +extern s32 D_800992C0; +extern s32 D_800992C4; +extern s32 D_800992C8; +extern s32 D_800992CC; +extern s32 D_800992D0; +extern s32 D_800992D4; +extern s32 D_800992D8; +extern s32 D_800992DC; +extern s32 D_800992E0; +extern s32 D_800992E4; +extern s32 D_800992E8; +extern s32 D_800992EC; +extern s32 D_800992F0; +extern s32 D_800992F4; +extern s32 D_800992F8; +extern s32 D_800992FC; +extern s32 D_80099300; +extern s32 D_80099304; +extern s32 D_80099308; +extern s32 D_8009930C; +extern s32 D_80099310; +extern s32 D_80099314; +extern s32 D_80099318; +extern s32 D_8009931C; +extern s32 D_80099320; +extern s32 D_80099324; +extern s32 D_80099328; +extern s32 D_8009932C; +extern s32 D_80099330; +extern s32 D_80099334; +extern s32 D_80099338; +extern s32 D_8009933C; +extern s32 D_80099340; +extern s32 D_80099344; +extern s32 D_80099348; +extern s32 D_8009934C; +extern s32 D_80099350; +extern s32 D_80099354; +extern s32 D_80099358; +extern s32 D_8009935C; +extern s32 D_80099360; +extern s32 D_80099364; +extern s32 D_80099368; +extern s32 D_8009936C; +extern s32 D_80099370; +extern s32 D_80099374; +extern s32 D_800993BC; +extern s32 D_800993F8; +extern s32 D_800993FC; +extern s32 D_80099400; +extern s32 D_80099404; +extern s32 D_80099428; +extern s32 D_8009942C; +extern s32 D_80099438; +extern s32 D_8009943C; +extern s32 D_80099450; +extern s32 D_80099454; +extern s32 D_80099458; +extern s32 D_8009945C; +extern s32 D_80099460; +extern s32 D_80099464; +extern s32 D_80099488; +extern s32 D_8009948C; +extern s32 D_80099490; +extern s32 D_80099494; +extern s32 D_80099498; +extern s32 D_8009949C; +extern s32 D_800994A0; +extern s32 D_800994C0; +extern s32 D_800994C4; +extern s32 D_800994C8; +extern s32 D_800994CC; +extern s32 D_800994D0; +extern s32 D_800994DC; +extern s32 D_800994E0; +extern s32 D_800994E4; +extern s32 D_800994E8; +extern s32 D_800994EC; +extern s32 D_800994F0; +extern s32 D_800994F4; +extern s32 D_800994F8; +extern s32 D_800994FC; +extern s32 D_80099500; +extern s32 D_80099504; +extern s32 D_80099508; +extern s32 D_80099518; +extern s32 D_8009951C; +extern s32 D_80099524; +extern s32 D_80099528; +extern s32 D_8009952C; +extern s32 D_80099530; +extern s32 D_80099534; +extern s32 D_80099538; +extern s32 D_8009953C; +extern s32 D_8009962C; +extern s32 D_80099630; +extern s32 D_80099634; +extern s32 D_80099638; +extern s32 D_8009963C; +extern s32 D_80099640; +extern s32 D_80099644; +extern s32 D_80099648; +extern s32 D_8009964C; +extern s32 D_80099650; +extern s32 D_80099654; +extern s32 D_80099658; +extern s32 D_8009965C; +extern s32 D_80099660; +extern s32 D_80099664; +extern s32 D_80099668; +extern s32 D_8009966C; +extern s32 D_80099670; +extern s32 D_80099674; +extern s32 D_80099678; +extern s32 D_8009967C; +extern s32 D_80099680; +extern s32 D_80099684; +extern s32 D_80099688; +extern s32 D_8009968C; +extern s32 D_80099690; +extern s32 D_80099694; +extern s32 D_800996A0; +extern s32 D_800996A6; +extern s32 D_800996C0; +extern s32 D_800996C8; +extern s32 D_800996D0; +extern s32 D_80099790; +extern s32 D_80099794; +extern s32 D_80099798; +extern s32 D_8009979C; +extern s32 D_800997D0; +extern s32 D_800997D4; +extern s32 D_800997D8; +extern s32 D_800997DC; +extern s32 D_800997E0; +extern s32 D_800997E4; +extern s32 D_800997E8; +extern s32 D_800997EC; +extern s32 D_800997F0; +extern s32 D_800997F4; +extern s32 D_800997F8; +extern s32 D_800997FC; +extern s32 D_80099800; +extern s32 D_80099804; +extern s32 D_80099808; +extern s32 D_8009980C; +extern s32 D_80099810; +extern s32 D_80099814; +extern s32 D_80099818; +extern s32 D_8009981C; +extern s32 D_80099820; +extern s32 D_80099824; +extern s32 D_80099828; +extern s32 D_8009982C; +extern s32 D_80099830; +extern s32 D_80099834; +extern s32 D_80099838; +extern s32 D_8009983C; +extern s32 D_80099840; +extern s32 D_80099844; +extern s32 D_80099848; +extern s32 D_8009984C; +extern s32 D_80099850; +extern s32 D_80099854; +extern s32 D_80099858; +extern s32 D_8009985C; +extern s32 D_80099860; +extern s32 D_80099864; +extern s32 D_80099868; +extern s32 D_8009986C; +extern s32 D_80099870; +extern s32 D_80099874; +extern s32 D_80099878; +extern s32 D_8009987C; +extern s32 D_80099988; +extern s32 D_8009998C; +extern s32 D_80099990; +extern s32 D_80099994; +extern s32 D_80099998; +extern s32 D_8009999C; +extern s32 D_800999A0; +extern s32 D_800999A4; +extern s32 D_800999A8; +extern s32 D_800999AC; +extern s32 D_800999B0; +extern s32 D_800999B4; +extern s32 D_800999B8; +extern s32 D_800999BC; +extern s32 D_800999C0; +extern s32 D_800999C4; +extern s32 D_800999C8; +extern s32 D_800999CC; +extern s32 D_800999D0; +extern s32 D_800999D4; +extern s32 D_800999D8; +extern s32 D_800999DC; +extern s32 D_800999E0; +extern s32 D_800999E4; +extern s32 D_800999E8; +extern s32 D_800999EC; +extern s32 D_800999F0; +extern s32 D_800999F4; +extern s32 D_800999F8; +extern s32 D_800999FC; +extern s32 D_80099A00; +extern s32 D_80099A10; +extern s32 D_80099A14; +extern s32 D_80099A18; +extern s32 D_80099A1C; +extern s32 D_80099A20; +extern s32 D_80099A24; +extern s32 D_80099A28; +extern s32 D_80099A30; +extern s32 D_80099AC4; +extern s32 D_80099AD1; +extern s32 D_80099AD8; +extern s32 D_80099B70; +extern s32 D_80099B7C; +extern s32 D_80099B88; +extern s32 D_80099B94; +extern s32 D_80099BA0; +extern s32 D_80099BAC; +extern s32 D_80099BB8; +extern s32 D_80099BBC; +extern s32 D_80099BC8; +extern s32 D_80099BEC; +extern s32 D_80099C04; +extern s32 D_80099C48; +extern s32 D_80099C90; +extern s32 D_80099C94; +extern s32 D_80099CD8; +extern s32 D_80099CDC; +extern s32 D_80099CE0; +extern s32 D_80099CE4; +extern s32 D_80099D30; +extern s32 D_80099D34; +extern s32 D_80099D38; +extern s32 D_80099D3C; +extern s32 D_80099D40; +extern s32 D_80099D48; +extern s32 D_80099D50; +extern s32 D_80099D8C; +extern s32 D_80099D90; +extern s32 D_80099D94; +extern s32 D_80099D98; +extern s32 D_80099D9C; +extern s32 D_80099DAC; +extern s32 D_80099DB0; +extern s32 D_80099DB4; +extern s32 D_80099DB8; +extern s32 D_80099DBC; +extern s32 D_80099DC0; +extern s32 D_80099DC4; +extern s32 D_80099DC8; +extern s32 D_80099DCC; +extern s32 D_80099DD0; +extern s32 D_80099DD4; +extern s32 D_80099DD8; +extern s32 D_80099DDC; +extern s32 D_80099DE0; +extern s32 D_80099DE4; +extern s32 D_80099DE8; +extern s32 D_80099DEC; +extern s32 D_80099DF0; +extern s32 D_80099DF4; +extern s32 D_80099DF8; +extern s32 D_80099DFC; +extern s32 D_80099E00; +extern s32 D_80099E04; +extern s32 D_80099E08; +extern s32 D_80099E0C; +extern s32 D_80099E10; +extern s32 D_80099E14; +extern s32 D_80099E18; +extern s32 D_80099E1C; +extern s32 D_80099E20; +extern s32 D_80099E24; +extern s32 D_80099E28; +extern s32 D_80099E2C; +extern s32 D_80099E30; +extern s32 D_80099E34; +extern s32 D_80099E38; +extern s32 D_80099E3C; +extern s32 D_80099E40; +extern s32 D_80099E44; +extern s32 D_80099E48; +extern s32 D_80099E4C; +extern s32 D_80099E50; +extern s32 D_80099E54; +extern s32 D_80099E58; +extern s32 D_80099E5C; +extern s32 D_80099E60; +extern s32 D_80099E64; +extern s32 D_80099E68; +extern s32 D_80099E6C; +extern s32 D_80099E70; +extern s32 D_80099E74; +extern s32 D_80099E78; +extern s32 D_80099E7C; +extern s32 D_80099E80; +extern s32 D_80099E84; +extern s32 D_80099E88; +extern s32 D_80099E8C; +extern s32 D_80099E90; +extern s32 D_80099E94; +extern s32 D_80099EA0; +extern s32 D_80099EA4; +extern s32 D_80099EA8; +extern s32 D_80099EAC; +extern s32 D_80099EB0; +extern s32 D_80099EB4; +extern s32 D_80099EB8; +extern s32 D_80099EBC; +extern s32 D_80099EC0; +extern s32 D_80099EC4; +extern s32 D_80099EC8; +extern s32 D_80099ECC; +extern s32 D_80099ED0; +extern s32 D_80099ED4; +extern s32 D_80099ED8; +extern s32 D_80099EDC; +extern s32 D_80099EE0; +extern s32 D_80099EE4; +extern s32 D_80099EE8; +extern s32 D_80099EEC; +extern s32 D_80099EF0; +extern s32 D_80099EF4; +extern s32 D_80099EF8; +extern s32 D_80099EFC; +extern s32 D_80099F00; +extern s32 D_80099F04; +extern s32 D_80099F08; +extern s32 D_80099F0C; +extern s32 D_80099F10; +extern s32 D_80099F14; +extern s32 D_80099F18; +extern s32 D_80099F1C; +extern s32 D_80099F20; +extern s32 D_80099F24; +extern s32 D_80099F28; +extern s32 D_80099F2C; +extern s32 D_80099F34; +extern s32 D_80099F38; +extern s32 D_80099F3C; +extern s32 D_80099F40; +extern s32 D_80099F44; +extern s32 D_80099F48; +extern s32 D_8009A094; +extern s32 D_8009A098; +extern s32 D_8009A09C; +extern s32 D_8009A0A0; +extern s32 D_8009A0A4; +extern s32 D_8009A0A8; +extern s32 D_8009A0AC; +extern s32 D_8009A0B0; +extern s32 D_8009A0B4; +extern s32 D_8009A0B8; +extern s32 D_8009A0BC; +extern s32 D_8009A0C0; +extern s32 D_8009A0C4; +extern s32 D_8009A0C8; +extern s32 D_8009A0CC; +extern s32 D_8009A0D0; +extern s32 D_8009A0D4; +extern s32 D_8009A0D8; +extern s32 D_8009A0DC; +extern s32 D_8009A0E0; +extern s32 D_8009A0E4; +extern s32 D_8009A104; +extern s32 D_8009A108; +extern s32 D_8009A10C; +extern s32 D_8009A110; +extern s32 D_8009A120; +extern s32 D_8009A198; +extern s32 D_8009A20C; +extern s32 D_8009A6A0; +extern s32 D_8009B688; +extern s32 D_8009B6D4; +extern s32 D_8009B6D8; +extern s32 D_8009B8A0; +extern s32 D_8009B8B0; +extern s32 D_8009BBF0; +extern s32 D_8009BCFC; +extern s32 D_8009BD00; +extern s32 D_8009BD04; +extern s32 D_8009BD10; +extern s32 D_8009BD30; +extern s32 D_8009BD32; +extern s32 D_8009BD34; +extern s32 D_8009BD38; +extern s32 D_8009BD3C; +extern s32 D_8009CBCC; +extern s32 D_8009CBD8; +extern s32 D_8009CBDC; +extern s32 D_8009CBE0; +extern s32 D_8009CC28; +extern s32 D_8009CC30; +extern s32 D_8009CC34; +extern s32 D_8009CC38; +extern s32 D_8009CC3C; +extern s32 D_8009D910; +extern s32 D_8009D954; +extern s32 D_8009D960; +extern s32 D_8009D964; +extern s32 D_8009D9C0; +extern s32 D_8009D9C4; +extern s32 D_8009D9C8; +extern s32 D_8009D9CC; +extern s32 D_8009D9D0; +extern s32 D_8009D9E0; +extern s32 D_8009D9E4; +extern s32 D_8009D9E8; +extern s32 D_8009D9F0; +extern s32 D_8009D9F8; +extern s32 D_8009D9FC; +extern s32 D_8009DA00; +extern s32 D_8009DA04; +extern s32 D_8009DA08; +extern s32 D_8009DA0C; +extern s32 D_8009DA10; +extern s32 D_8009DA18; +extern s32 D_8009DA20; +extern s32 D_8009DA44; +extern s32 D_8009DA48; +extern s32 D_8009DA4C; +extern s32 D_8009DA50; +extern s32 D_8009DA54; +extern s32 D_8009DA58; +extern s32 D_8009DA5C; +extern s32 D_8009DA60; +extern s32 D_8009DA64; +extern s32 D_8009DA68; +extern s32 D_8009DA6C; +extern s32 D_8009DA70; +extern s32 D_8009DA74; +extern s32 D_8009DA78; +extern s32 D_8009DA7C; +extern s32 D_8009DA80; +extern s32 D_8009DA84; +extern s32 D_8009DA88; +extern s32 D_8009DA8C; +extern s32 D_8009DA90; +extern s32 D_8009DC80; +extern s32 D_8009DC90; +extern s32 D_8009DCBA; +extern s32 D_8009DCE8; +extern s32 D_8009DCEC; +extern s32 D_8009DCF4; +extern s32 D_8009DCF8; +extern s32 D_8009DD04; +extern s32 D_8009DD08; +extern s32 D_8009DD0C; +extern s32 D_8009DD10; +extern s32 D_8009DD14; +extern s32 D_8009DD18; +extern s32 D_8009DD1C; +extern s32 D_8009DD20; +extern s32 D_8009DD24; +extern s32 D_8009DD28; +extern s32 D_8009DD2C; +extern s32 D_8009DD30; +extern s32 D_8009DD34; +extern s32 D_8009DD38; +extern s32 D_8009DD3C; +extern s32 D_8009DD40; +extern s32 D_8009DD44; +extern s32 D_8009DD48; +extern s32 D_8009DE6C; +extern s32 D_8009DE70; +extern s32 D_8009DE74; +extern s32 D_8009DE78; +extern s32 D_8009DE7C; +extern s32 D_8009DE80; +extern s32 D_8009DE84; +extern s32 D_8009DE88; +extern s32 D_8009DE8C; +extern s32 D_8009DE90; +extern s32 D_8009DEA0; +extern s32 D_8009DEB0; +extern s32 D_8009DEB4; +extern s32 D_8009DEB8; +extern s32 D_8009DEBC; +extern s32 D_8009DEC0; +extern s32 D_8009DF4C; +extern s32 D_8009E188; +extern s32 D_8009E18C; +extern s32 D_8009E190; +extern s32 D_8009E194; +extern s32 D_8009E1B0; +extern s32 D_8009E43C; +extern s32 D_8009F0D0; +extern s32 D_8009F1A4; +extern s32 D_8009F1A8; +extern s32 D_8009F300; +extern s32 D_8009F4A0; +extern s32 D_8009F5A0; +extern s32 D_8009F5A4; +extern s32 D_8009F5A8; +extern s32 D_8009F5AC; +extern s32 D_8009F640; +extern s32 D_8009F644; +extern s32 D_8009F674; +extern s32 D_8009F678; +extern s32 D_8009F680; +extern s32 D_8009F690; +extern s32 D_8009F6A0; +extern s32 D_8009F6B0; +extern s32 D_8009F6D0; +extern s32 D_8009F6F0; +extern s32 D_8009F6F8; +extern s32 D_8009F6FC; +extern s32 D_8009F700; +extern s32 D_8009F710; +extern s32 D_8009F714; +extern s32 D_8009F718; +extern s32 D_8009F71C; +extern s32 D_8009F720; +extern s32 D_8009F724; +extern s32 D_8009F728; +extern s32 D_8009F72C; +extern s32 D_8009F730; +extern s32 D_8009F734; +extern s32 D_8009F738; +extern s32 D_8009F73C; +extern s32 D_8009F740; +extern s32 D_8009F750; +extern s32 D_8009F754; +extern s32 D_8009F758; +extern s32 D_8009F75C; +extern s32 D_8009F774; +extern s32 D_8009F778; +extern s32 D_8009F77C; +extern s32 D_8009F780; +extern s32 D_8009F784; +extern s32 D_8009F790; +extern s32 D_8009F7A4; +extern s32 D_8009F7B8; +extern s32 D_8009F7BC; +extern s32 D_8009F7C0; +extern s32 D_8009F7C4; +extern s32 D_8009F7C8; +extern s32 D_8009F7CC; +extern s32 D_8009F7D0; +extern s32 D_8009F7D4; +extern s32 D_8009F7D8; +extern s32 D_8009F7DC; +extern s32 D_8009F7E0; +extern s32 D_8009F7E4; +extern s32 D_8009F7E8; +extern s32 D_8009F7EC; +extern s32 D_8009F7F0; +extern s32 D_8009F7F4; +extern s32 D_8009F7F8; +extern s32 D_8009F7FC; +extern s32 D_8009F800; +extern s32 D_8009F810; +extern s32 D_8009F814; +extern s32 D_8009F818; +extern s32 D_8009F81C; +extern s32 D_8009F820; +extern s32 D_8009F824; +extern s32 D_8009F828; +extern s32 D_8009F82C; +extern s32 D_8009F830; +extern s32 D_8009F834; +extern s32 D_8009F838; +extern s32 D_8009F83C; +extern s32 D_8009F840; +extern s32 D_8009F844; +extern s32 D_8009F848; +extern s32 D_8009F84C; +extern s32 D_8009F850; +extern s32 D_8009F854; +extern s32 D_8009F858; +extern s32 D_8009F85C; +extern s32 D_8009F860; +extern s32 D_8009F868; +extern s32 D_8009F870; +extern s32 D_8009F874; +extern s32 D_8009F878; +extern s32 D_8009F87C; +extern s32 D_8009F880; +extern s32 D_8009F884; +extern s32 D_8009F888; +extern s32 D_8009F88C; +extern s32 D_8009F890; +extern s32 D_8009F894; +extern s32 D_8009F8A0; +extern s32 D_8009F8A4; +extern s32 D_8009F8A8; +extern s32 D_8009F8AC; +extern s32 D_8009F8B0; +extern s32 D_8009F8B4; +extern s32 D_8009F8B8; +extern s32 D_8009F8BC; +extern s32 D_8009F8C0; +extern s32 D_8009F8C4; +extern s32 D_8009F8C8; +extern s32 D_8009F8CC; +extern s32 D_8009F8D0; +extern s32 D_8009F8D8; +extern s32 D_8009F8E0; +extern s32 D_8009F8E4; +extern s32 D_8009F8E8; +extern s32 D_8009F8EC; +extern s32 D_8009F8F0; +extern s32 D_8009F8F4; +extern s32 D_8009F8F8; +extern s32 D_8009F8FC; +extern s32 D_8009F900; +extern s32 D_8009F904; +extern s32 D_8009F908; +extern s32 D_8009F90C; +extern s32 D_8009F910; +extern s32 D_8009F914; +extern s32 D_8009F920; +extern s32 D_8009F950; +extern s32 D_8009F95C; +extern s32 D_8009F968; +extern s32 D_8009F970; +extern s32 D_8009F998; +extern s32 D_8009F9A4; +extern s32 D_8009F9CC; +extern s32 D_8009F9D8; +extern s32 D_8009FA00; +extern s32 D_8009FA0C; +extern s32 D_8009FA34; +extern s32 D_8009FA44; +extern s32 D_8009FA6C; +extern s32 D_8009FA78; +extern s32 D_8009FAA0; +extern s32 D_8009FAB0; +extern s32 D_8009FAD8; +extern s32 D_8009FAE4; +extern s32 D_8009FB0C; +extern s32 D_8009FB18; +extern s32 D_8009FB40; +extern s32 D_8009FB44; +extern s32 D_8009FB48; +extern s32 D_8009FB4C; +extern s32 D_8009FB50; +extern s32 D_8009FB54; +extern s32 D_8009FB58; +extern s32 D_8009FB5C; +extern s32 D_8009FB60; +extern s32 D_8009FB64; +extern s32 D_8009FB68; +extern s32 D_8009FB6C; +extern s32 D_8009FB70; +extern s32 D_8009FB74; +extern s32 D_8009FB78; +extern s32 D_8009FB7C; +extern s32 D_8009FB80; +extern s32 D_8009FB84; +extern s32 D_8009FB88; +extern s32 D_8009FB8C; +extern s32 D_8009FB90; +extern s32 D_8009FB94; +extern s32 D_8009FB98; +extern s32 D_8009FB9C; +extern s32 D_8009FBA0; +extern s32 D_8009FBA4; +extern s32 D_8009FBA8; +extern s32 D_8009FBAC; +extern s32 D_8009FBB0; +extern s32 D_8009FBC0; +extern s32 D_8009FBCC; +extern s32 D_8009FBD0; +extern s32 D_8009FBD4; +extern s32 D_8009FBD8; +extern s32 D_8009FBDC; +extern s32 D_8009FBE0; +extern s32 D_8009FBF0; +extern s32 D_8009FC20; +extern s32 D_8009FC24; +extern s32 D_8009FC28; +extern s32 D_8009FC2C; +extern s32 D_8009FC30; +extern s32 D_8009FC3C; +extern s32 D_8009FC60; +extern s32 D_8009FC6C; +extern s32 D_8009FC78; +extern s32 D_8009FC84; +extern s32 D_8009FC8E; +extern s32 D_8009FC98; +extern s32 D_8009FC9C; +extern s32 D_8009FCA0; +extern s32 D_8009FCA4; +extern s32 D_8009FCA8; +extern s32 D_8009FCAC; +extern s32 D_8009FCB0; +extern s32 D_8009FCB4; +extern s32 D_8009FCB8; +extern s32 D_8009FCBC; +extern s32 D_8009FCC0; +extern s32 D_8009FCC4; +extern s32 D_8009FCC8; +extern s32 D_8009FCCC; +extern s32 D_8009FCD0; +extern s32 D_8009FCD4; +extern s32 D_8009FCD8; +extern s32 D_8009FCDC; +extern s32 D_8009FCE0; +extern s32 D_8009FCE4; +extern s32 D_8009FCF0; +extern s32 D_8009FCF4; +extern s32 D_8009FD30; +extern s32 D_8009FD3C; +extern s32 D_8009FD48; +extern s32 D_8009FD54; +extern s32 D_8009FD58; +extern s32 D_8009FD5C; +extern s32 D_8009FD60; +extern s32 D_8009FD64; +extern s32 D_8009FD68; +extern s32 D_8009FD6C; +extern s32 D_8009FD70; +extern s32 D_8009FD74; +extern s32 D_8009FD78; +extern s32 D_8009FD7C; +extern s32 D_8009FD80; +extern s32 D_8009FD84; +extern s32 D_8009FD88; +extern s32 D_8009FD8C; +extern s32 D_8009FD90; +extern s32 D_8009FD94; +extern s32 D_8009FD98; +extern s32 D_8009FD9C; +extern s32 D_8009FDA0; +extern s32 D_8009FDB0; +extern s32 D_8009FDB4; +extern s32 D_8009FDB8; +extern s32 D_8009FDBC; +extern s32 D_8009FDC0; +extern s32 D_8009FDC4; +extern s32 D_8009FDC8; +extern s32 D_8009FDCC; +extern s32 D_8009FDD0; +extern s32 D_8009FDD4; +extern s32 D_8009FDD8; +extern s32 D_8009FDDC; +extern s32 D_8009FDE0; +extern s32 D_8009FDE4; +extern s32 D_8009FDE8; +extern s32 D_8009FDEC; +extern s32 D_8009FDF0; +extern s32 D_8009FDF4; +extern s32 D_8009FDF8; +extern s32 D_8009FDFC; +extern s32 D_8009FE00; +extern s32 D_8009FE10; +extern s32 D_8009FE14; +extern s32 D_8009FE18; +extern s32 D_8009FE1C; +extern s32 D_8009FE20; +extern s32 D_8009FE24; +extern s32 D_8009FE28; +extern s32 D_8009FE2C; +extern s32 D_8009FE30; +extern s32 D_8009FE34; +extern s32 D_8009FE38; +extern s32 D_8009FE3C; +extern s32 D_8009FE40; +extern s32 D_8009FE44; +extern s32 D_8009FE48; +extern s32 D_8009FE4C; +extern s32 D_8009FE50; +extern s32 D_8009FE54; +extern s32 D_8009FE58; +extern s32 D_8009FE60; +extern s32 D_8009FE64; +extern s32 D_8009FE70; +extern s32 D_8009FE74; +extern s32 D_8009FE78; +extern s32 D_8009FE7C; +extern s32 D_8009FE80; +extern s32 D_8009FE84; +extern s32 D_8009FE88; +extern s32 D_8009FE8C; +extern s32 D_8009FE90; +extern s32 D_8009FE94; +extern s32 D_8009FE98; +extern s32 D_8009FE9C; +extern s32 D_8009FEA0; +extern s32 D_8009FEA4; +extern s32 D_8009FEA8; +extern s32 D_8009FEAC; +extern s32 D_8009FEB0; +extern s32 D_8009FEB4; +extern s32 D_8009FEB8; +extern s32 D_8009FEBC; +extern s32 D_8009FEC0; +extern s32 D_8009FEC4; +extern s32 D_8009FEC8; +extern s32 D_8009FECC; +extern s32 D_8009FED0; +extern s32 D_8009FED4; +extern s32 D_8009FED8; +extern s32 D_8009FEDC; +extern s32 D_8009FEE0; +extern s32 D_8009FEE4; +extern s32 D_8009FEE8; +extern s32 D_8009FEEC; +extern s32 D_8009FEF0; +extern s32 D_8009FEF4; +extern s32 D_8009FEF8; +extern s32 D_8009FEFC; +extern s32 D_8009FF00; +extern s32 D_8009FF04; +extern s32 D_8009FF08; +extern s32 D_8009FF0C; +extern s32 D_8009FF10; +extern s32 D_8009FF14; +extern s32 D_8009FF18; +extern s32 D_8009FF1C; +extern s32 D_8009FF20; +extern s32 D_8009FF24; +extern s32 D_8009FF28; +extern s32 D_8009FF2C; +extern s32 D_8009FF30; +extern s32 D_8009FF34; +extern s32 D_8009FF38; +extern s32 D_8009FF40; +extern s32 D_8009FF70; +extern s32 D_8009FFA0; +extern s32 D_8009FFD0; +extern s32 D_8009FFD4; +extern s32 D_8009FFD8; +extern s32 D_8009FFDC; +extern s32 D_8009FFE0; +extern s32 D_8009FFE4; +extern s32 D_8009FFF0; +extern s32 D_800A0000; +extern s32 D_800A0004; +extern s32 D_800A0010; +extern s32 D_800A0038; +extern s32 D_800A0060; +extern s32 D_800A0064; +extern s32 D_800A0068; +extern s32 D_800A006C; +extern s32 D_800A0070; +extern s32 D_800A0074; +extern s32 D_800A0078; +extern s32 D_800A007C; +extern s32 D_800A0080; +extern s32 D_800A0084; +extern s32 D_800A0088; +extern s32 D_800A008C; +extern s32 D_800A0090; +extern s32 D_800A0094; +extern s32 D_800A0098; +extern s32 D_800A009C; +extern s32 D_800A00A0; +extern s32 D_800A00B0; +extern s32 D_800A00B4; +extern s32 D_800A00C0; +extern s32 D_800A00C4; +extern s32 D_800A00C8; +extern s32 D_800A00CC; +extern s32 D_800A00D0; +extern s32 D_800A00D4; +extern s32 D_800A00D8; +extern s32 D_800A0100; +extern s32 D_800A0104; +extern s32 D_800A0108; +extern s32 D_800A010C; +extern s32 D_800A0110; +extern s32 D_800A0114; +extern s32 D_800A0118; +extern s32 D_800A011C; +extern s32 D_800A0120; +extern s32 D_800A0124; +extern s32 D_800A0128; +extern s32 D_800A012C; +extern s32 D_800A0130; +extern s32 D_800A0134; +extern s32 D_800A0138; +extern s32 D_800A013C; +extern s32 D_800A0140; +extern s32 D_800A0144; +extern s32 D_800A0148; +extern s32 D_800A014C; +extern s32 D_800A0150; +extern s32 D_800A0154; +extern s32 D_800A0158; +extern s32 D_800A015C; +extern s32 D_800A0160; +extern s32 D_800A0164; +extern s32 D_800A0168; +extern s32 D_800A016C; +extern s32 D_800A0170; +extern s32 D_800A0174; +extern s32 D_800A0178; +extern s32 D_800A017C; +extern s32 D_800A0180; +extern s32 D_800A0184; +extern s32 D_800A0188; +extern s32 D_800A018C; +extern s32 D_800A0190; +extern s32 D_800A0194; +extern s32 D_800A0198; +extern s32 D_800A019C; +extern s32 D_800A01A0; +extern s32 D_800A01A4; +extern s32 D_800A01A8; +extern s32 D_800A01AC; +extern s32 D_800A01B0; +extern s32 D_800A01C0; +extern s32 D_800A01D0; +extern s32 D_800A01D4; +extern s32 D_800A01D8; +extern s32 D_800A01DC; +extern s32 D_800A01E0; +extern s32 D_800A01F0; +extern s32 D_800A01F4; +extern s32 D_800A01F8; +extern s32 D_800A01FC; +extern s32 D_800A0200; +extern s32 D_800A0210; +extern s32 D_800A0214; +extern s32 D_800A0218; +extern s32 D_800A021C; +extern s32 D_800A0220; +extern s32 D_800A0228; +extern s32 D_800A0230; +extern s32 D_800A0234; +extern s32 D_800A0238; +extern s32 D_800A023C; +extern s32 D_800A0240; +extern s32 D_800A0244; +extern s32 D_800A0248; +extern s32 D_800A024C; +extern s32 D_800A0250; +extern s32 D_800A0254; +extern s32 D_800A0258; +extern s32 D_800A025C; +extern s32 D_800A0260; +extern s32 D_800A0264; +extern s32 D_800A0268; +extern s32 D_800A026C; +extern s32 D_800A0270; +extern s32 D_800A0274; +extern s32 D_800A0278; +extern s32 D_800A027C; +extern s32 D_800A0280; +extern s32 D_800A0284; +extern s32 D_800A02A0; +extern s32 D_800A02A4; +extern s32 D_800A02A8; +extern s32 D_800A02AC; +extern s32 D_800A02B0; +extern s32 D_800A02B4; +extern s32 D_800A02B8; +extern s32 D_800A02BC; +extern s32 D_800A02C0; +extern s32 D_800A02C4; +extern s32 D_800A02C8; +extern s32 D_800A02CC; +extern s32 D_800A02D0; +extern s32 D_800A02D4; +extern s32 D_800A02D8; +extern s32 D_800A02DC; +extern s32 D_800A02E0; +extern s32 D_800A02E4; +extern s32 D_800A02E8; +extern s32 D_800A02EC; +extern s32 D_800A02F0; +extern s32 D_800A02F4; +extern s32 D_800A02F8; +extern s32 D_800A02FC; +extern s32 D_800A0300; +extern s32 D_800A0304; +extern s32 D_800A0308; +extern s32 D_800A030C; +extern s32 D_800A0320; +extern s32 D_800A0324; +extern s32 D_800A0328; +extern s32 D_800A032C; +extern s32 D_800A0330; +extern s32 D_800A0334; +extern s32 D_800A0338; +extern s32 D_800A0340; +extern s32 D_800A0350; +extern s32 D_800A0374; +extern s32 D_800A0378; +extern s32 D_800A03A8; +extern s32 D_800A03AC; +extern s32 D_800A03B0; +extern s32 D_800A03B4; +extern s32 D_800A03B8; +extern s32 D_800A03BC; +extern s32 D_800A03C0; +extern s32 D_800A03C4; +extern s32 D_800A03C8; +extern s32 D_800A03CC; +extern s32 D_800A03D0; +extern s32 D_800A03D4; +extern s32 D_800A03D8; +extern s32 D_800A03DC; +extern s32 D_800A03E0; +extern s32 D_800A03F0; +extern s32 D_800A03F4; +extern s32 D_800A03F8; +extern s32 D_800A0400; +extern s32 D_800A0410; +extern s32 D_800A0414; +extern s32 D_800A0418; +extern s32 D_800A041C; +extern s32 D_800A0420; +extern s32 D_800A0424; +extern s32 D_800A0428; +extern s32 D_800A042C; +extern s32 D_800A0430; +extern s32 D_800A0434; +extern s32 D_800A0438; +extern s32 D_800A043C; +extern s32 D_800A0440; +extern s32 D_800A0450; +extern s32 D_800A0454; +extern s32 D_800A0458; +extern s32 D_800A045C; +extern s32 D_800A0460; +extern s32 D_800A0464; +extern s32 D_800A0468; +extern s32 D_800A046C; +extern s32 D_800A0470; +extern s32 D_800A0474; +extern s32 D_800A0478; +extern s32 D_800A047C; +extern s32 D_800A0480; +extern s32 D_800A0490; +extern s32 D_800A0494; +extern s32 D_800A0498; +extern s32 D_800A049C; +extern s32 D_800A04A0; +extern s32 D_800A04A4; +extern s32 D_800A04B0; +extern s32 D_800A04C0; +extern s32 D_800A04D0; +extern s32 D_800A04D4; +extern s32 D_800A04E0; +extern s32 D_800A04E4; +extern s32 D_800A04F0; +extern s32 D_800A04F4; +extern s32 D_800A04F8; +extern s32 D_800A04FC; +extern s32 D_800A0528; +extern s32 D_800A052C; +extern s32 D_800A0530; +extern s32 D_800A0534; +extern s32 D_800A0538; +extern s32 D_800A0540; +extern s32 D_800A0544; +extern s32 D_800A0548; +extern s32 D_800A054C; +extern s32 D_800A0550; +extern s32 D_800A0554; +extern s32 D_800A0558; +extern s32 D_800A055C; +extern s32 D_800A0560; +extern s32 D_800A0564; +extern s32 D_800A0568; +extern s32 D_800A056C; +extern s32 D_800A0570; +extern s32 D_800A0574; +extern s32 D_800A0578; +extern s32 D_800A057C; +extern s32 D_800A0580; +extern s32 D_800A0584; +extern s32 D_800A0588; +extern s32 D_800A058C; +extern s32 D_800A0590; +extern s32 D_800A0594; +extern s32 D_800A0598; +extern s32 D_800A059C; +extern s32 D_800A05A0; +extern s32 D_800A05A4; +extern s32 D_800A05A8; +extern s32 D_800A05AC; +extern s32 D_800A05B0; +extern s32 D_800A05B4; +extern s32 D_800A05B8; +extern s32 D_800A05BC; +extern s32 D_800A05C0; +extern s32 D_800A05C4; +extern s32 D_800A05C8; +extern s32 D_800A05CC; +extern s32 D_800A05D0; +extern s32 D_800A05D4; +extern s32 D_800A05D8; +extern s32 D_800A05E0; +extern s32 D_800A05EC; +extern s32 D_800A05F8; +extern s32 D_800A05FC; +extern s32 D_800A0600; +extern s32 D_800A0604; +extern s32 D_800A0608; +extern s32 D_800A060C; +extern s32 D_800A0610; +extern s32 D_800A0614; +extern s32 D_800A0618; +extern s32 D_800A061C; +extern s32 D_800A0620; +extern s32 D_800A0624; +extern s32 D_800A0628; +extern s32 D_800A062C; +extern s32 D_800A0630; +extern s32 D_800A0640; +extern s32 D_800A06C4; +extern s32 D_800A06C8; +extern s32 D_800A06CC; +extern s32 D_800A06D0; +extern s32 D_800A06D4; +extern s32 D_800A06D8; +extern s32 D_800A06DC; +extern s32 D_800A06E0; +extern s32 D_800A06E4; +extern s32 D_800A06E8; +extern s32 D_800A06EC; +extern s32 D_800A06F0; +extern s32 D_800A06F4; +extern s32 D_800A06F8; +extern s32 D_800A0700; +extern s32 D_800A0704; +extern s32 D_800A0708; +extern s32 D_800A070C; +extern s32 D_800A0710; +extern s32 D_800A0714; +extern s32 D_800A0718; +extern s32 D_800A071C; +extern s32 D_800A0720; +extern s32 D_800A0724; +extern s32 D_800A0728; +extern s32 D_800A072C; +extern s32 D_800A0730; +extern s32 D_800A0734; +extern s32 D_800A0738; +extern s32 D_800A073C; +extern s32 D_800A0740; +extern s32 D_800A0744; +extern s32 D_800A0748; +extern s32 D_800A074C; +extern s32 D_800A0750; +extern s32 D_800A0754; +extern s32 D_800A0758; +extern s32 D_800A075C; +extern s32 D_800A0760; +extern s32 D_800A0768; +extern s32 D_800A0770; +extern s32 D_800A0774; +extern s32 D_800A0778; +extern s32 D_800A077C; +extern s32 D_800A0780; +extern s32 D_800A0784; +extern s32 D_800A0788; +extern s32 D_800A078C; +extern s32 D_800A0790; +extern s32 D_800A0794; +extern s32 D_800A0798; +extern s32 D_800A079C; +extern s32 D_800A07A0; +extern s32 D_800A07A4; +extern s32 D_800A07B0; +extern s32 D_800A07B4; +extern s32 D_800A07B8; +extern s32 D_800A07BC; +extern s32 D_800A07C0; +extern s32 D_800A07C4; +extern s32 D_800A07C8; +extern s32 D_800A07CC; +extern s32 D_800A07D0; +extern s32 D_800A07D4; +extern s32 D_800A07D8; +extern s32 D_800A07DC; +extern s32 D_800A07E0; +extern s32 D_800A07F0; +extern s32 D_800A07FC; +extern s32 D_800A0800; +extern s32 D_800A080F; +extern s32 D_800A0818; +extern s32 D_800A0820; +extern s32 D_800A0824; +extern s32 D_800A0828; +extern s32 D_800A0830; +extern s32 D_800A0834; +extern s32 D_800A0838; +extern s32 D_800A0840; +extern s32 D_800A0844; +extern s32 D_800A0848; +extern s32 D_800A084C; +extern s32 D_800A0850; +extern s32 D_800A0854; +extern s32 D_800A0860; +extern s32 D_800A0864; +extern s32 D_800A0868; +extern s32 D_800A086C; +extern s32 D_800A0870; +extern s32 D_800A0874; +extern s32 D_800A0878; +extern s32 D_800A087C; +extern s32 D_800A0880; +extern s32 D_800A0888; +extern s32 D_800A0890; +extern s32 D_800A0894; +extern s32 D_800A0898; +extern s32 D_800A089C; +extern s32 D_800A08A0; +extern s32 D_800A08A4; +extern s32 D_800A08B0; +extern s32 D_800A08B4; +extern s32 D_800A08B8; +extern s32 D_800A08C0; +extern s32 D_800A08D0; +extern s32 D_800A08D4; +extern s32 D_800A08E0; +extern s32 D_800A08F0; +extern s32 D_800A0938; +extern s32 D_800A0960; +extern s32 D_800A0990; +extern s32 D_800A099C; +extern s32 D_800A09A0; +extern s32 D_800A09A4; +extern s32 D_800A09A8; +extern s32 D_800A09AC; +extern s32 D_800A09B0; +extern s32 D_800A09B4; +extern s32 D_800A09C0; +extern s32 D_800A09D0; +extern s32 D_800A09DC; +extern s32 D_800A09E8; +extern s32 D_800A09EC; +extern s32 D_800A09F0; +extern s32 D_800A09F4; +extern s32 D_800A09F8; +extern s32 D_800A09FC; +extern s32 D_800A0A00; +extern s32 D_800A0A04; +extern s32 D_800A0A08; +extern s32 D_800A0A0C; +extern s32 D_800A0A10; +extern s32 D_800A0A14; +extern s32 D_800A0A18; +extern s32 D_800A0A1C; +extern s32 D_800A0A20; +extern s32 D_800A0A24; +extern s32 D_800A0A28; +extern s32 D_800A0A30; +extern s32 D_800A0A3C; +extern s32 D_800A0A40; +extern s32 D_800A0A44; +extern s32 D_800A0A48; +extern s32 D_800A0A4C; +extern s32 D_800A0A50; +extern s32 D_800A0A54; +extern s32 D_800A0A58; +extern s32 D_800A0A5C; +extern s32 D_800A0A60; +extern s32 D_800A0A64; +extern s32 D_800A0A68; +extern s32 D_800A0A6C; +extern s32 D_800A0A70; +extern s32 D_800A0A74; +extern s32 D_800A0A78; +extern s32 D_800A0A7C; +extern s32 D_800A0A80; +extern s32 D_800A0A84; +extern s32 D_800A0A88; +extern s32 D_800A0A8C; +extern s32 D_800A0A90; +extern s32 D_800A0A94; +extern s32 D_800A0A98; +extern s32 D_800A0A9C; +extern s32 D_800A0AA0; +extern s32 D_800A0AA4; +extern s32 D_800A0AA8; +extern s32 D_800A0AAC; +extern s32 D_800A0AB0; +extern s32 D_800A0AB4; +extern s32 D_800A0AB8; +extern s32 D_800A0ABC; +extern s32 D_800A0AC0; +extern s32 D_800A0AC4; +extern s32 D_800A0AC8; +extern s32 D_800A0ACC; +extern s32 D_800A0AD0; +extern s32 D_800A0AD4; +extern s32 D_800A0AE0; +extern s32 D_800A0AE4; +extern s32 D_800A0AE8; +extern s32 D_800A0AF0; +extern s32 D_800A0AF4; +extern s32 D_800A0AF8; +extern s32 D_800A0AFC; +extern s32 D_800A0B00; +extern s32 D_800A0B04; +extern s32 D_800A0B08; +extern s32 D_800A0B10; +extern s32 D_800A0B14; +extern s32 D_800A0B18; +extern s32 D_800A0B1C; +extern s32 D_800A0B20; +extern s32 D_800A0B24; +extern s32 D_800A0B30; +extern s32 D_800A0B34; +extern s32 D_800A0B40; +extern s32 D_800A0B44; +extern s32 D_800A0B48; +extern s32 D_800A0B4C; +extern s32 D_800A0B50; +extern s32 D_800A0B54; +extern s32 D_800A0B58; +extern s32 D_800A0B5C; +extern s32 D_800A0B60; +extern s32 D_800A0B64; +extern s32 D_800A0B68; +extern s32 D_800A0B6C; +extern s32 D_800A0B70; +extern s32 D_800A0B74; +extern s32 D_800A0B78; +extern s32 D_800A0B7C; +extern s32 D_800A0B80; +extern s32 D_800A0B84; +extern s32 D_800A0B88; +extern s32 D_800A0B8C; +extern s32 D_800A0B90; +extern s32 D_800A0B94; +extern s32 D_800A0B98; +extern s32 D_800A0B9C; +extern s32 D_800A0BA0; +extern s32 D_800A0BA4; +extern s32 D_800A0BA8; +extern s32 D_800A0BAC; +extern s32 D_800A0BB0; +extern s32 D_800A0BB4; +extern s32 D_800A0BB8; +extern s32 D_800A0BBC; +extern s32 D_800A0BC0; +extern s32 D_800A0BC4; +extern s32 D_800A0BC8; +extern s32 D_800A0BCC; +extern s32 D_800A0BD0; +extern s32 D_800A0BD4; +extern s32 D_800A0BD8; +extern s32 D_800A0BDC; +extern s32 D_800A0BE0; +extern s32 D_800A0BE4; +extern s32 D_800A0BE8; +extern s32 D_800A0BEC; +extern s32 D_800A0BF0; +extern s32 D_800A0C00; +extern s32 D_800A0C04; +extern s32 D_800A0C08; +extern s32 D_800A0C0C; +extern s32 D_800A0C10; +extern s32 D_800A0C14; +extern s32 D_800A0C18; +extern s32 D_800A0C1C; +extern s32 D_800A0C20; +extern s32 D_800A0C24; +extern s32 D_800A0C28; +extern s32 D_800A0C2C; +extern s32 D_800A0C30; +extern s32 D_800A0C58; +extern s32 D_800A0C5C; +extern s32 D_800A0C60; +extern s32 D_800A0C64; +extern s32 D_800A0C68; +extern s32 D_800A0C6C; +extern s32 D_800A0C70; +extern s32 D_800A0C74; +extern s32 D_800A0C78; +extern s32 D_800A0C7C; +extern s32 D_800A0C80; +extern s32 D_800A0C84; +extern s32 D_800A0C88; +extern s32 D_800A0C8C; +extern s32 D_800A0C90; +extern s32 D_800A0C94; +extern s32 D_800A0C98; +extern s32 D_800A0C9C; +extern s32 D_800A0CA0; +extern s32 D_800A0CA4; +extern s32 D_800A0CA8; +extern s32 D_800A0CAC; +extern s32 D_800A0CB0; +extern s32 D_800A0CB4; +extern s32 D_800A0CB8; +extern s32 D_800A0CBC; +extern s32 D_800A0CC0; +extern s32 D_800A0CC4; +extern s32 D_800A0CC8; +extern s32 D_800A0CCC; +extern s32 D_800A0CD0; +extern s32 D_800A0CD4; +extern s32 D_800A0CD8; +extern s32 D_800A0CDC; +extern s32 D_800A0CE0; +extern s32 D_800A0CE4; +extern s32 D_800A0CE8; +extern s32 D_800A0CEC; +extern s32 D_800A0CF0; +extern s32 D_800A0CF4; +extern s32 D_800A0D00; +extern s32 D_800A0D0B; +extern s32 D_800A0D2B; +extern s32 D_800A0D48; +extern s32 D_800A0D4C; +extern s32 D_800A0D50; +extern s32 D_800A0D54; +extern s32 D_800A0D58; +extern s32 D_800A0D5C; +extern s32 D_800A0D60; +extern s32 D_800A0E14; +extern s32 D_800A0E50; +extern s32 D_800A0E8C; +extern s32 D_800A0EC8; +extern s32 D_800A0F04; +extern s32 D_800A0F08; +extern s32 D_800A0F0C; +extern s32 D_800A0F10; +extern s32 D_800A0F14; +extern s32 D_800A0F18; +extern s32 D_800A0F1C; +extern s32 D_800A0F20; +extern s32 D_800A0F24; +extern s32 D_800A0F28; +extern s32 D_800A0F2C; +extern s32 D_800A0F30; +extern s32 D_800A0F34; +extern s32 D_800A0F38; +extern s32 D_800A0F3C; +extern s32 D_800A0F40; +extern s32 D_800A0F44; +extern s32 D_800A0F48; +extern s32 D_800A0F4C; +extern s32 D_800A0F50; +extern s32 D_800A0F60; +extern s32 D_800A0F64; +extern s32 D_800A0F70; +extern s32 D_800A0F88; +extern s32 D_800A0FA0; +extern s32 D_800A0FA4; +extern s32 D_800A0FA8; +extern s32 D_800A0FAC; +extern s32 D_800A0FB0; +extern s32 D_800A0FB4; +extern s32 D_800A0FB8; +extern s32 D_800A0FBC; +extern s32 D_800A0FC0; +extern s32 D_800A0FC4; +extern s32 D_800A0FC8; +extern s32 D_800A0FCC; +extern s32 D_800A0FD0; +extern s32 D_800A0FD4; +extern s32 D_800A0FE0; +extern s32 D_800A0FE4; +extern s32 D_800A0FFC; +extern s32 D_800A1014; +extern s32 D_800A1018; +extern s32 D_800A101C; +extern s32 D_800A1020; +extern s32 D_800A1024; +extern s32 D_800A1030; +extern s32 D_800A1034; +extern s32 D_800A1038; +extern s32 D_800A103C; +extern s32 D_800A1040; +extern s32 D_800A1044; +extern s32 D_800A1048; +extern s32 D_800A104C; +extern s32 D_800A1050; +extern s32 D_800A1054; +extern s32 D_800A1060; +extern s32 D_800A1070; +extern s32 D_800A1110; +extern s32 D_800A1112; +extern s32 D_800A111C; +extern s32 D_800A1128; +extern s32 D_800A112C; +extern s32 D_800A1130; +extern s32 D_800A1134; +extern s32 D_800A1138; +extern s32 D_800A113C; +extern s32 D_800A1140; +extern s32 D_800A1144; +extern s32 D_800A1148; +extern s32 D_800A114C; +extern s32 D_800A1150; +extern s32 D_800A1154; +extern s32 D_800A1158; +extern s32 D_800A115C; +extern s32 D_800A1160; +extern s32 D_800A1164; +extern s32 D_800A1168; +extern s32 D_800A1170; +extern s32 D_800A1174; +extern s32 D_800A1178; +extern s32 D_800A117C; +extern s32 D_800A1180; +extern s32 D_800A1184; +extern s32 D_800A1190; +extern s32 D_800A1290; +extern s32 D_800A12F0; +extern s32 D_800A12F4; +extern s32 D_800A12F8; +extern s32 D_800A12FC; +extern s32 D_800A1300; +extern s32 D_800A1304; +extern s32 D_800A1308; +extern s32 D_800A130C; +extern s32 D_800A1310; +extern s32 D_800A1314; +extern s32 D_800A1318; +extern s32 D_800A131C; +extern s32 D_800A1320; +extern s32 D_800A1324; +extern s32 D_800A1328; +extern s32 D_800A132C; +extern s32 D_800A1330; +extern s32 D_800A1334; +extern s32 D_800A1338; +extern s32 D_800A133C; +extern s32 D_800A1340; +extern s32 D_800A1344; +extern s32 D_800A1348; +extern s32 D_800A134C; +extern s32 D_800A1350; +extern s32 D_800A1354; +extern s32 D_800A1358; +extern s32 D_800A135C; +extern s32 D_800A1360; +extern s32 D_800A1364; +extern s32 D_800A1368; +extern s32 D_800A136C; +extern s32 D_800A1370; +extern s32 D_800A1374; +extern s32 D_800A1378; +extern s32 D_800A137C; +extern s32 D_800A1380; +extern s32 D_800A1384; +extern s32 D_800A1388; +extern s32 D_800A138C; +extern s32 D_800A1390; +extern s32 D_800A1394; +extern s32 D_800A1398; +extern s32 D_800A139C; +extern s32 D_800A13A0; +extern s32 D_800A13A4; +extern s32 D_800A13A8; +extern s32 D_800A13AC; +extern s32 D_800A13B0; +extern s32 D_800A13B4; +extern s32 D_800A13B8; +extern s32 D_800A13BC; +extern s32 D_800A13C0; +extern s32 D_800A13C4; +extern s32 D_800A13C8; +extern s32 D_800A13CC; +extern s32 D_800A13D0; +extern s32 D_800A13D4; +extern s32 D_800A13D8; +extern s32 D_800A13DC; +extern s32 D_800A13E0; +extern s32 D_800A13E4; +extern s32 D_800A13F0; +extern s32 D_800A13F4; +extern s32 D_800A13F8; +extern s32 D_800A13FC; +extern s32 D_800A1400; +extern s32 D_800A1404; +extern s32 D_800A1408; +extern s32 D_800A140C; +extern s32 D_800A1410; +extern s32 D_800A1414; +extern s32 D_800A1418; +extern s32 D_800A141C; +extern s32 D_800A1420; +extern s32 D_800A1424; +extern s32 D_800A1428; +extern s32 D_800A142C; +extern s32 D_800A1430; +extern s32 D_800A1434; +extern s32 D_800A1438; +extern s32 D_800A143C; +extern s32 D_800A1440; +extern s32 D_800A1444; +extern s32 D_800A1448; +extern s32 D_800A144C; +extern s32 D_800A1450; +extern s32 D_800A1454; +extern s32 D_800A1458; +extern s32 D_800A1460; +extern s32 D_800A1470; +extern s32 D_800A1474; +extern s32 D_800A1480; +extern s32 D_800A1490; +extern s32 D_800A149C; +extern s32 D_800A14A8; +extern s32 D_800A14D8; +extern s32 D_800A14DC; +extern s32 D_800A14E0; +extern s32 D_800A14E4; +extern s32 D_800A14E8; +extern s32 D_800A14EC; +extern s32 D_800A14F0; +extern s32 D_800A14F4; +extern s32 D_800A14F8; +extern s32 D_800A14FC; +extern s32 D_800A1500; +extern s32 D_800A150C; +extern s32 D_800A1518; +extern s32 D_800A1530; +extern s32 D_800A1548; +extern s32 D_800A154C; +extern s32 D_800A1550; +extern s32 D_800A1554; +extern s32 D_800A1558; +extern s32 D_800A155C; +extern s32 D_800A1560; +extern s32 D_800A1564; +extern s32 D_800A1570; +extern s32 D_800A1574; +extern s32 D_800A1578; +extern s32 D_800A157C; +extern s32 D_800A1580; +extern s32 D_800A1584; +extern s32 D_800A1588; +extern s32 D_800A158C; +extern s32 D_800A1590; +extern s32 D_800A1594; +extern s32 D_800A1598; +extern s32 D_800A159C; +extern s32 D_800A15A0; +extern s32 D_800A15A4; +extern s32 D_800A15A8; +extern s32 D_800A15AC; +extern s32 D_800A15B0; +extern s32 D_800A15B4; +extern s32 D_800A15B8; +extern s32 D_800A15BC; +extern s32 D_800A15C0; +extern s32 D_800A15C4; +extern s32 D_800A15C8; +extern s32 D_800A15CC; +extern s32 D_800A15D0; +extern s32 D_800A15D4; +extern s32 D_800A15D8; +extern s32 D_800A15DC; +extern s32 D_800A15E0; +extern s32 D_800A15E4; +extern s32 D_800A15E8; +extern s32 D_800A15EC; +extern s32 D_800A15F0; +extern s32 D_800A1620; +extern s32 D_800A1638; +extern s32 D_800A163C; +extern s32 D_800A1640; +extern s32 D_800A1658; +extern s32 D_800A1670; +extern s32 D_800A1674; +extern s32 D_800A1680; +extern s32 D_800A168C; +extern s32 D_800A174C; +extern s32 D_800A180C; +extern s32 D_800A1810; +extern s32 D_800A1814; +extern s32 D_800A1818; +extern s32 D_800A181C; +extern s32 D_800A1820; +extern s32 D_800A1824; +extern s32 D_800A1828; +extern s32 D_800A182C; +extern s32 D_800A1830; +extern s32 D_800A1834; +extern s32 D_800A1838; +extern s32 D_800A183C; +extern s32 D_800A1840; +extern s32 D_800A1844; +extern s32 D_800A1848; +extern s32 D_800A184C; +extern s32 D_800A1850; +extern s32 D_800A1854; +extern s32 D_800A1858; +extern s32 D_800A185C; +extern s32 D_800A1860; +extern s32 D_800A1864; +extern s32 D_800A1868; +extern s32 D_800A186C; +extern s32 D_800A1870; +extern s32 D_800A1874; +extern s32 D_800A1878; +extern s32 D_800A187C; +extern s32 D_800A1880; +extern s32 D_800A1884; +extern s32 D_800A1888; +extern s32 D_800A188C; +extern s32 D_800A1890; +extern s32 D_800A1894; +extern s32 D_800A1898; +extern s32 D_800A189C; +extern s32 D_800A18A0; +extern s32 D_800A18A4; +extern s32 D_800A18A8; +extern s32 D_800A18AC; +extern s32 D_800A18B0; +extern s32 D_800A18B4; +extern s32 D_800A18C0; +extern s32 D_800A18CC; +extern s32 D_800A18D8; +extern s32 D_800A18E0; +extern s32 D_800A18E8; +extern s32 D_800A18EC; +extern s32 D_800A18F0; +extern s32 D_800A18F4; +extern s32 D_800A18F8; +extern s32 D_800A18FC; +extern s32 D_800A1900; +extern s32 D_800A1904; +extern s32 D_800A1908; +extern s32 D_800A190C; +extern s32 D_800A1910; +extern s32 D_800A1914; +extern s32 D_800A1918; +extern s32 D_800A191C; +extern s32 D_800A1920; +extern s32 D_800A1950; +extern s32 D_800A195C; +extern s32 D_800A1968; +extern s32 D_800A196C; +extern s32 D_800A1970; +extern s32 D_800A1980; +extern s32 D_800A1984; +extern s32 D_800A1988; +extern s32 D_800A198C; +extern s32 D_800A1990; +extern s32 D_800A1994; +extern s32 D_800A1998; +extern s32 D_800A199C; +extern s32 D_800A19A0; +extern s32 D_800A19A4; +extern s32 D_800A19A8; +extern s32 D_800A19AC; +extern s32 D_800A19B0; +extern s32 D_800A19B4; +extern s32 D_800A19B8; +extern s32 D_800A19BC; +extern s32 D_800A19C0; +extern s32 D_800A19C4; +extern s32 D_800A19C8; +extern s32 D_800A19CC; +extern s32 D_800A19D0; +extern s32 D_800A19D4; +extern s32 D_800A1A64; +extern s32 D_800A1A68; +extern s32 D_800A1A6C; +extern s32 D_800A1A70; +extern s32 D_800A1A74; +extern s32 D_800A1A78; +extern s32 D_800A1A7C; +extern s32 D_800A1A80; +extern s32 D_800A1A88; +extern s32 D_800A1A90; +extern s32 D_800A1A98; +extern s32 D_800A1A9C; +extern s32 D_800A1AA0; +extern s32 D_800A1AA4; +extern s32 D_800A1AA8; +extern s32 D_800A1AB0; +extern s32 D_800A1B00; +extern s32 D_800A1B0C; +extern s32 D_800A1B18; +extern s32 D_800A1B24; +extern s32 D_800A1B30; +extern s32 D_800A1B3C; +extern s32 D_800A1B40; +extern s32 D_800A1B44; +extern s32 D_800A1B48; +extern s32 D_800A1B4C; +extern s32 D_800A1B50; +extern s32 D_800A1B54; +extern s32 D_800A1B58; +extern s32 D_800A1B5C; +extern s32 D_800A1B60; +extern s32 D_800A1B64; +extern s32 D_800A1B68; +extern s32 D_800A1B6C; +extern s32 D_800A1B70; +extern s32 D_800A1B74; +extern s32 D_800A1B78; +extern s32 D_800A1B7C; +extern s32 D_800A1BB0; +extern s32 D_800A1BB4; +extern s32 D_800A1BB8; +extern s32 D_800A1BC0; +extern s32 D_800A1BC4; +extern s32 D_800A1BC8; +extern s32 D_800A1BCC; +extern s32 D_800A1BD0; +extern s32 D_800A1BD4; +extern s32 D_800A1BD8; +extern s32 D_800A1BDC; +extern s32 D_800A1BE0; +extern s32 D_800A1BE4; +extern s32 D_800A1BE8; +extern s32 D_800A1BEC; +extern s32 D_800A1BF0; +extern s32 D_800A1BF4; +extern s32 D_800A1C00; +extern s32 D_800A1C40; +extern s32 D_800A1C48; +extern s32 D_800A1C54; +extern s32 D_800A1C60; +extern s32 D_800A1C64; +extern s32 D_800A1C68; +extern s32 D_800A1C6C; +extern s32 D_800A1C70; +extern s32 D_800A1C74; +extern s32 D_800A1C78; +extern s32 D_800A1C7C; +extern s32 D_800A1C80; +extern s32 D_800A1C84; +extern s32 D_800A1C88; +extern s32 D_800A1C8C; +extern s32 D_800A1C90; +extern s32 D_800A1C94; +extern s32 D_800A1C98; +extern s32 D_800A1C9C; +extern s32 D_800A1CA0; +extern s32 D_800A1CA4; +extern s32 D_800A1CA8; +extern s32 D_800A1CAC; +extern s32 D_800A1CB0; +extern s32 D_800A1CB4; +extern s32 D_800A1CB8; +extern s32 D_800A1CC0; +extern s32 D_800A1CCC; +extern s32 D_800A1CD8; +extern s32 D_800A1CE4; +extern s32 D_800A1CF0; +extern s32 D_800A1CFC; +extern s32 D_800A1D20; +extern s32 D_800A1D30; +extern s32 D_800A1D3C; +extern s32 D_800A1D48; +extern s32 D_800A1D54; +extern s32 D_800A1D60; +extern s32 D_800A1D64; +extern s32 D_800A1D68; +extern s32 D_800A1D6C; +extern s32 D_800A1D70; +extern s32 D_800A1D74; +extern s32 D_800A1D78; +extern s32 D_800A1D7C; +extern s32 D_800A1D80; +extern s32 D_800A1D84; +extern s32 D_800A1D88; +extern s32 D_800A1D8C; +extern s32 D_800A1D90; +extern s32 D_800A1D94; +extern s32 D_800A1D98; +extern s32 D_800A1D9C; +extern s32 D_800A1DA0; +extern s32 D_800A1DA4; +extern s32 D_800A1DA8; +extern s32 D_800A1DAC; +extern s32 D_800A1DB0; +extern s32 D_800A1DB4; +extern s32 D_800A1DB8; +extern s32 D_800A1DBC; +extern s32 D_800A1DC0; +extern s32 D_800A1DD0; +extern s32 D_800A1DD4; +extern s32 D_800A1DEC; +extern s32 D_800A1E04; +extern s32 D_800A1E1C; +extern s32 D_800A1E34; +extern s32 D_800A1E38; +extern s32 D_800A1E50; +extern s32 D_800A1E68; +extern s32 D_800A1E80; +extern s32 D_800A1E98; +extern s32 D_800A1E9C; +extern s32 D_800A1EA0; +extern s32 D_800A1EA4; +extern s32 D_800A1EA8; +extern s32 D_800A1EAC; +extern s32 D_800A1EB0; +extern s32 D_800A1EB4; +extern s32 D_800A1EB8; +extern s32 D_800A1EBC; +extern s32 D_800A1EC0; +extern s32 D_800A1EC4; +extern s32 D_800A1EC8; +extern s32 D_800A1ECC; +extern s32 D_800A1ED0; +extern s32 D_800A1EE0; +extern s32 D_800A1EEC; +extern s32 D_800A1F14; +extern s32 D_800A1F18; +extern s32 D_800A1F1C; +extern s32 D_800A1F20; +extern s32 D_800A1F24; +extern s32 D_800A1F28; +extern s32 D_800A1F2C; +extern s32 D_800A1F30; +extern s32 D_800A1F34; +extern s32 D_800A1F38; +extern s32 D_800A1F3C; +extern s32 D_800A1F40; +extern s32 D_800A1F44; +extern s32 D_800A1F48; +extern s32 D_800A1F4C; +extern s32 D_800A1F50; +extern s32 D_800A1F54; +extern s32 D_800A1F58; +extern s32 D_800A1F5C; +extern s32 D_800A1F60; +extern s32 D_800A1F64; +extern s32 D_800A1F68; +extern s32 D_800A1F70; +extern s32 D_800A1F7C; +extern s32 D_800A1F88; +extern s32 D_800A1F94; +extern s32 D_800A1F98; +extern s32 D_800A1F9C; +extern s32 D_800A1FA0; +extern s32 D_800A1FA4; +extern s32 D_800A1FC8; +extern s32 D_800A1FD4; +extern s32 D_800A1FE0; +extern s32 D_800A1FEC; +extern s32 D_800A1FF0; +extern s32 D_800A1FF4; +extern s32 D_800A2000; +extern s32 D_800A200C; +extern s32 D_800A2018; +extern s32 D_800A2024; +extern s32 D_800A2030; +extern s32 D_800A2034; +extern s32 D_800A2038; +extern s32 D_800A203C; +extern s32 D_800A2040; +extern s32 D_800A2044; +extern s32 D_800A2048; +extern s32 D_800A204C; +extern s32 D_800A2050; +extern s32 D_800A205C; +extern s32 D_800A2068; +extern s32 D_800A2074; +extern s32 D_800A2080; +extern s32 D_800A2110; +extern s32 D_800A2114; +extern s32 D_800A2118; +extern s32 D_800A211C; +extern s32 D_800A2120; +extern s32 D_800A2124; +extern s32 D_800A2128; +extern s32 D_800A212C; +extern s32 D_800A2130; +extern s32 D_800A213C; +extern s32 D_800A2160; +extern s32 D_800A2170; +extern s32 D_800A2174; +extern s32 D_800A2178; +extern s32 D_800A217C; +extern s32 D_800A2180; +extern s32 D_800A2184; +extern s32 D_800A2188; +extern s32 D_800A218C; +extern s32 D_800A2190; +extern s32 D_800A2194; +extern s32 D_800A2198; +extern s32 D_800A21A0; +extern s32 D_800A21F4; +extern s32 D_800A2248; +extern s32 D_800A2250; +extern s32 D_800A2254; +extern s32 D_800A2258; +extern s32 D_800A225C; +extern s32 D_800A2260; +extern s32 D_800A2264; +extern s32 D_800A2268; +extern s32 D_800A226C; +extern s32 D_800A2270; +extern s32 D_800A2274; +extern s32 D_800A2278; +extern s32 D_800A227C; +extern s32 D_800A2280; +extern s32 D_800A2284; +extern s32 D_800A2288; +extern s32 D_800A228C; +extern s32 D_800A2290; +extern s32 D_800A2294; +extern s32 D_800A233C; +extern s32 D_800A2340; +extern s32 D_800A2350; +extern s32 D_800A2354; +extern s32 D_800A2358; +extern s32 D_800A235C; +extern s32 D_800A2360; +extern s32 D_800A2364; +extern s32 D_800A2368; +extern s32 D_800A2370; +extern s32 D_800A2380; +extern s32 D_800A238C; +extern s32 D_800A2398; +extern s32 D_800A23A4; +extern s32 D_800A23A8; +extern s32 D_800A23AC; +extern s32 D_800A23B0; +extern s32 D_800A23B4; +extern s32 D_800A23B8; +extern s32 D_800A23BC; +extern s32 D_800A23C0; +extern s32 D_800A23C4; +extern s32 D_800A23C8; +extern s32 D_800A23CC; +extern s32 D_800A23D0; +extern s32 D_800A23D4; +extern s32 D_800A23D8; +extern s32 D_800A23DC; +extern s32 D_800A23E0; +extern s32 D_800A23E4; +extern s32 D_800A23E8; +extern s32 D_800A23EC; +extern s32 D_800A23F0; +extern s32 D_800A23F4; +extern s32 D_800A23F8; +extern s32 D_800A23FC; +extern s32 D_800A2400; +extern s32 D_800A2410; +extern s32 D_800A2414; +extern s32 D_800A2418; +extern s32 D_800A241C; +extern s32 D_800A2420; +extern s32 D_800A2424; +extern s32 D_800A2430; +extern s32 D_800A2434; +extern s32 D_800A2438; +extern s32 D_800A243C; +extern s32 D_800A2440; +extern s32 D_800A2444; +extern s32 D_800A2450; +extern s32 D_800A2454; +extern s32 D_800A2458; +extern s32 D_800A245C; +extern s32 D_800A2460; +extern s32 D_800A2464; +extern s32 D_800A2470; +extern s32 D_800A2474; +extern s32 D_800A2478; +extern s32 D_800A247C; +extern s32 D_800A2480; +extern s32 D_800A2484; +extern s32 D_800A2488; +extern s32 D_800A248C; +extern s32 D_800A2490; +extern s32 D_800A2494; +extern s32 D_800A2498; +extern s32 D_800A249C; +extern s32 D_800A24A0; +extern s32 D_800A24A4; +extern s32 D_800A24B0; +extern s32 D_800A2504; +extern s32 D_800A251C; +extern s32 D_800A2520; +extern s32 D_800A2568; +extern s32 D_800A25BC; +extern s32 D_800A2604; +extern s32 D_800A2610; +extern s32 D_800A261C; +extern s32 D_800A2628; +extern s32 D_800A2634; +extern s32 D_800A2638; +extern s32 D_800A263C; +extern s32 D_800A2640; +extern s32 D_800A2644; +extern s32 D_800A2648; +extern s32 D_800A264C; +extern s32 D_800A2650; +extern s32 D_800A2654; +extern s32 D_800A2658; +extern s32 D_800A265C; +extern s32 D_800A2660; +extern s32 D_800A2664; +extern s32 D_800A2668; +extern s32 D_800A266C; +extern s32 D_800A2670; +extern s32 D_800A2674; +extern s32 D_800A2678; +extern s32 D_800A267C; +extern s32 D_800A2680; +extern s32 D_800A2684; +extern s32 D_800A2688; +extern s32 D_800A268C; +extern s32 D_800A2690; +extern s32 D_800A2694; +extern s32 D_800A26A0; +extern s32 D_800A26B0; +extern s32 D_800A26B4; +extern s32 D_800A26B8; +extern s32 D_800A26C0; +extern s32 D_800A2C20; +extern s32 D_800A2C24; +extern s32 D_800A2C28; +extern s32 D_800A2CC0; +extern s32 D_800A2D20; +extern s32 D_800A2D24; +extern s32 D_800A2D28; +extern s32 D_800A2D2C; +extern s32 D_800A2D30; +extern s32 D_800A2D34; +extern s32 D_800A2D38; +extern s32 D_800A2D3C; +extern s32 D_800A2D40; +extern s32 D_800A2D44; +extern s32 D_800A2D50; +extern s32 D_800A2D54; +extern s32 D_800A2D58; +extern s32 D_800A2D5C; +extern s32 D_800A2D60; +extern s32 D_800A2D64; +extern s32 D_800A2D78; +extern s32 D_800A2D7C; +extern s32 D_800A2D80; +extern s32 D_800A2D84; +extern s32 D_800A2D88; +extern s32 D_800A2D8C; +extern s32 D_800A2D90; +extern s32 D_800A2D94; +extern s32 D_800A2D98; +extern s32 D_800A2D9C; +extern s32 D_800A2DA0; +extern s32 D_800A2F08; +extern s32 D_800A2F0C; +extern s32 D_800A2F10; +extern s32 D_800A2F14; +extern s32 D_800A2F18; +extern s32 D_800A2F1C; +extern s32 D_800A2F20; +extern s32 D_800A2F24; +extern s32 D_800A2F28; +extern s32 D_800A2F2C; +extern s32 D_800A2F50; +extern s32 D_800A2F54; +extern s32 D_800A2F60; +extern s32 D_800A2F70; +extern s32 D_800A2F71; +extern s32 D_800A2F84; +extern s32 D_800A2F8C; +extern s32 D_800A2F90; +extern s32 D_800A2F94; +extern s32 D_800A2F98; +extern s32 D_800A2F9C; +extern s32 D_800A2FA0; +extern s32 D_800A2FA4; +extern s32 D_800A2FA8; +extern s32 D_800A2FAC; +extern s32 D_800A2FB0; +extern s32 D_800A2FB4; +extern s32 D_800A2FB8; +extern s32 D_800A2FC0; +extern s32 D_800A2FC4; +extern s32 D_800A2FC8; +extern s32 D_800A2FCC; +extern s32 D_800A2FD0; +extern s32 D_800A2FD4; +extern s32 D_800A2FD8; +extern s32 D_800A2FDC; +extern s32 D_800A2FE0; +extern s32 D_800A2FE4; +extern s32 D_800A2FE8; +extern s32 D_800A2FEC; +extern s32 D_800A2FF0; +extern s32 D_800A2FF4; +extern s32 D_800A2FF8; +extern s32 D_800A2FFC; +extern s32 D_800A3000; +extern s32 D_800A3108; +extern s32 D_800A310C; +extern s32 D_800A3110; +extern s32 D_800A3114; +extern s32 D_800A3118; +extern s32 D_800A311C; +extern s32 D_800A3120; +extern s32 D_800A3124; +extern s32 D_800A3128; +extern s32 D_800A312C; +extern s32 D_800A3130; +extern s32 D_800A3134; +extern s32 D_800A3138; +extern s32 D_800A313C; +extern s32 D_800A3140; +extern s32 D_800A3144; +extern s32 D_800A3148; +extern s32 D_800A314C; +extern s32 D_800A3150; +extern s32 D_800A3154; +extern s32 D_800A3158; +extern s32 D_800A315C; +extern s32 D_800A3160; +extern s32 D_800A3164; +extern s32 D_800A3168; +extern s32 D_800A316C; +extern s32 D_800A3170; +extern s32 D_800A3174; +extern s32 D_800A3178; +extern s32 D_800A317C; +extern s32 D_800A3180; +extern s32 D_800A3184; +extern s32 D_800A3188; +extern s32 D_800A318C; +extern s32 D_800A3190; +extern s32 D_800A3194; +extern s32 D_800A31B8; +extern s32 D_800A31BC; +extern s32 D_800A31C0; +extern s32 D_800A31C4; +extern s32 D_800A31C8; +extern s32 D_800A31CC; +extern s32 D_800A31D0; +extern s32 D_800A31D4; +extern s32 D_800A31D8; +extern s32 D_800A31DC; +extern s32 D_800A31E0; +extern s32 D_800A31E4; +extern s32 D_800A31E8; +extern s32 D_800A31EC; +extern s32 D_800A31F0; +extern s32 D_800A31F4; +extern s32 D_800A31F8; +extern s32 D_800A31FC; +extern s32 D_800A3200; +extern s32 D_800A3204; +extern s32 D_800A3208; +extern s32 D_800A3210; +extern s32 D_800A3214; +extern s32 D_800A32F0; +extern s32 D_800A32F4; +extern s32 D_800A32F8; +extern s32 D_800A32FC; +extern s32 D_800A3300; +extern s32 D_800A3304; +extern s32 D_800A3308; +extern s32 D_800A330C; +extern s32 D_800A3310; +extern s32 D_800A3314; +extern s32 D_800A3318; +extern s32 D_800A3354; +extern s32 D_800A3358; +extern s32 D_800A335C; +extern s32 D_800A3360; +extern s32 D_800A3364; +extern s32 D_800A3368; +extern s32 D_800A3370; +extern s32 D_800A3378; +extern s32 D_800A3380; +extern s32 D_800A3384; +extern s32 D_800A3388; +extern s32 D_800A338C; +extern s32 D_800A3390; +extern s32 D_800A3394; +extern s32 D_800A3398; +extern s32 D_800A339C; +extern s32 D_800A33A0; +extern s32 D_800A33A4; +extern s32 D_800A33A8; +extern s32 D_800A33AC; +extern s32 D_800A33B0; +extern s32 D_800A33B4; +extern s32 D_800A33B8; +extern s32 D_800A33BC; +extern s32 D_800A33C0; +extern s32 D_800A33C4; +extern s32 D_800A33C8; +extern s32 D_800A33CC; +extern s32 D_800A33D0; +extern s32 D_800A33D4; +extern s32 D_800A33D8; +extern s32 D_800A33DC; +extern s32 D_800A33E0; +extern s32 D_800A33E4; +extern s32 D_800A33E8; +extern s32 D_800A33EC; +extern s32 D_800A33F0; +extern s32 D_800A33F4; +extern s32 D_800A33F8; +extern s32 D_800A33FC; +extern s32 D_800A3400; +extern s32 D_800A3404; +extern s32 D_800A3408; +extern s32 D_800A340C; +extern s32 D_800A3410; +extern s32 D_800A3414; +extern s32 D_800A3418; +extern s32 D_800A3420; +extern s32 D_800A3424; +extern s32 D_800A3430; +extern s32 D_800A3440; +extern s32 D_800A3444; +extern s32 D_800A3448; +extern s32 D_800A344C; +extern s32 D_800A3450; +extern s32 D_800A3454; +extern s32 D_800A3460; +extern s32 D_800A3470; +extern s32 D_800A3474; +extern s32 D_800A3478; +extern s32 D_800A347C; +extern s32 D_800A3480; +extern s32 D_800A3484; +extern s32 D_800A3488; +extern s32 D_800A348C; +extern s32 D_800A3490; +extern s32 D_800A3494; +extern s32 D_800A3498; +extern s32 D_800A34A0; +extern s32 D_800A35B0; +extern s32 D_800A35B4; +extern s32 D_800A35C0; +extern s32 D_800A35C4; +extern s32 D_800A35C8; +extern s32 D_800A35CC; +extern s32 D_800A35D0; +extern s32 D_800A35D4; +extern s32 D_800A3600; +extern s32 D_800A3610; +extern s32 D_800A3614; +extern s32 D_800A3618; +extern s32 D_800A361C; +extern s32 D_800A3620; +extern s32 D_800A3624; +extern s32 D_800A3628; +extern s32 D_800A362C; +extern s32 D_800A3630; +extern s32 D_800A3634; +extern s32 D_800A3638; +extern s32 D_800A363C; +extern s32 D_800A3640; +extern s32 D_800A3644; +extern s32 D_800A3648; +extern s32 D_800A364C; +extern s32 D_800A3650; +extern s32 D_800A3658; +extern s32 D_800A365C; +extern s32 D_800A3660; +extern s32 D_800A3664; +extern s32 D_800A3668; +extern s32 D_800A366C; +extern s32 D_800A3670; +extern s32 D_800A3674; +extern s32 D_800A3678; +extern s32 D_800A367C; +extern s32 D_800A3680; +extern s32 D_800A3684; +extern s32 D_800A3688; +extern s32 D_800A368C; +extern s32 D_800A3690; +extern s32 D_800A3694; +extern s32 D_800A3698; +extern s32 D_800A36A0; +extern s32 D_800A36A4; +extern s32 D_800A36A8; +extern s32 D_800A36AC; +extern s32 D_800A36B0; +extern s32 D_800A36B4; +extern s32 D_800A36B8; +extern s32 D_800A36BC; +extern s32 D_800A36C0; +extern s32 D_800A36C4; +extern s32 D_800A36C8; +extern s32 D_800A36CC; +extern s32 D_800A36D0; +extern s32 D_800A36D4; +extern s32 D_800A36D8; +extern s32 D_800A36E0; +extern s32 D_800A36F0; +extern s32 D_800A36F4; +extern s32 D_800A36F8; +extern s32 D_800A36FC; +extern s32 D_800A3700; +extern s32 D_800A3704; +extern s32 D_800A3708; +extern s32 D_800A370C; +extern s32 D_800A3710; +extern s32 D_800A3714; +extern s32 D_800A3720; +extern s32 D_800A3730; +extern s32 D_800A3740; +extern s32 D_800A3744; +extern s32 D_800A3748; +extern s32 D_800A374C; +extern s32 D_800A3750; +extern s32 D_800A3754; +extern s32 D_800A3758; +extern s32 D_800A375C; +extern s32 D_800A3760; +extern s32 D_800A3764; +extern s32 D_800A3768; +extern s32 D_800A37F0; +extern s32 D_800A37FC; +extern s32 D_800A3844; +extern s32 D_800A3848; +extern s32 D_800A384C; +extern s32 D_800A3850; +extern s32 D_800A3860; +extern s32 D_800A3868; +extern s32 D_800A386C; +extern s32 D_800A3870; +extern s32 D_800A3880; +extern s32 D_800A3C30; +extern s32 D_800A3F14; +extern s32 D_800A3F64; +// D_800A3FD8 - moved to variables.h +extern s32 D_800A3FE6; +extern s32 D_800A3FF8; +extern s32 D_800A4018; +extern s32 D_800A4028; +extern s32 D_800A4038; +extern s32 D_800A4058; +extern s32 D_800A4068; +extern s32 D_800A40C8; +extern s32 D_800A40F8; +extern s32 D_800A4118; +extern s32 D_800A4124; +extern s32 D_800A4130; +extern s32 D_800A4140; +extern s32 D_800A4150; +extern s32 D_800A4158; +extern s32 D_800A4160; +extern s32 D_800A4168; +extern s32 D_800A4178; +extern s32 D_800A4188; +extern s32 D_800A41B8; +extern s32 D_800A41C4; +extern s32 D_800A41C8; +extern s32 D_800A41D8; +extern s32 D_800A41E8; +extern s32 D_800A4218; +extern s32 D_800A421C; +extern s32 D_800A4228; +extern s32 D_800A4234; +extern s32 D_800A4258; +extern s32 D_800A4260; +extern s32 D_800A4264; +extern s32 D_800A4268; +extern s32 D_800A4270; +extern s32 D_800A4278; +extern s32 D_800A4280; +extern s32 D_800A4290; +extern s32 D_800A42A0; +extern s32 D_800A42D0; +extern s32 D_800A42D4; +extern s32 D_800A42E4; +extern s32 D_800A42F4; +extern s32 D_800A4324; +extern s32 D_800A4328; +extern s32 D_800A4330; +extern s32 D_800A4338; +// extern s32 D_800A45B0; // moved to variables.h as f32 +extern s32 D_800A45B8; +extern s32 D_800A45BC; +extern s32 D_800A45C0; +extern s32 D_800A45C4; +extern s32 D_800A45C8; +extern s32 D_800A45CC; +extern s32 D_800A45D0; +extern s32 D_800A45D4; +extern s32 D_800A45D8; +extern s32 D_800A45DC; +extern s32 D_800A45E0; +extern s32 D_800A45E4; +extern s32 D_800A45E8; +extern s32 D_800A45EC; +extern s32 D_800A45F0; +extern s32 D_800A45F4; +extern s32 D_800A45F8; +extern s32 D_800A45FC; +extern s32 D_800A4600; +extern s32 D_800A4604; +extern s32 D_800A4608; +extern s32 D_800A460C; +extern s32 D_800A4610; +extern s32 D_800A4614; +extern s32 D_800A4618; +// extern s32 D_800A461C; // moved to variables.h as f32 +// extern s32 D_800A4620; // moved to variables.h as f32 +extern s32 D_800A4624; +extern s32 D_800A4628; +extern s32 D_800A462C; +extern s32 D_800A4630; +extern s32 D_800A4634; +extern s32 D_800A4638; +extern s32 D_800A463C; +extern s32 D_800A4640; +extern s32 D_800A4644; +extern s32 D_800A4648; +extern s32 D_800A464C; +extern s32 D_800A481C; +extern s32 D_800A4820; +extern s32 D_800A4824; +// D_800A4828 - moved to variables.h as f32 +extern s32 D_800A482C; +extern s32 D_800A4830; +extern s32 D_800A4834; +extern s32 D_800A4838; +extern s32 D_800A483C; +extern s32 D_800A4840; +extern s32 D_800A4844; +extern s32 D_800A4848; +extern s32 D_800A484C; +extern s32 D_800A4850; +extern s32 D_800A4854; +extern s32 D_800A4858; +extern s32 D_800A485C; +extern s32 D_800A4860; +extern s32 D_800A4864; +extern s32 D_800A4868; +extern s32 D_800A486C; +extern s32 D_800A4870; +extern s32 D_800A48C4; +extern s32 D_800A48C8; +extern s32 D_800A48CC; +extern s32 D_800A48D0; +extern s32 D_800A48D4; +extern s32 D_800A48D8; +extern s32 D_800A48DC; +extern s32 D_800A48E0; +extern s32 D_800A48E4; +extern s32 D_800A48E8; +extern s32 D_800A48EC; +extern s32 D_800A48F0; +extern s32 D_800A48F4; +extern s32 D_800A48F8; +extern s32 D_800A48FC; +extern s32 D_800A4900; +extern s32 D_800A4904; +extern s32 D_800A4908; +extern s32 D_800A490C; +extern s32 D_800A4910; +extern s32 D_800A4914; +extern s32 D_800A4918; +extern s32 D_800A491C; +extern s32 D_800A4920; +extern s32 D_800A4924; +extern s32 D_800A4928; +extern s32 D_800A492C; +extern s32 D_800A4930; +extern s32 D_800A4934; +extern s32 D_800A4938; +extern s32 D_800A493C; +extern s32 D_800A4940; +extern s32 D_800A4944; +extern s32 D_800A4948; +extern s32 D_800A494C; +extern s32 D_800A4950; +extern s32 D_800A4954; +extern s32 D_800A4958; +extern s32 D_800A495C; +extern s32 D_800A4960; +extern s32 D_800A4964; +extern s32 D_800A4968; +extern s32 D_800A496C; +extern s32 D_800A4970; +extern s32 D_800A4974; +extern s32 D_800A4978; +extern s32 D_800A497C; +extern s32 D_800A4980; +extern s32 D_800A4984; +extern s32 D_800A4988; +extern s32 D_800A498C; +extern s32 D_800A4990; +extern s32 D_800A4994; +extern s32 D_800A4998; +extern s32 D_800A499C; +extern s32 D_800A49A0; +extern s32 D_800A49A4; +extern s32 D_800A49A8; +extern s32 D_800A49AC; +extern s32 D_800A49B0; +extern s32 D_800A49B4; +extern s32 D_800A49C0; +extern s32 D_800A4A2C; +extern s32 D_800A4A74; +extern s32 D_800A4A78; +extern s32 D_800A4A7C; +extern s32 D_800A4A80; +extern s32 D_800A4A84; +extern s32 D_800A4A88; +extern s32 D_800A4A8C; +extern s32 D_800A4A90; +extern s32 D_800A4A94; +extern s32 D_800A4AC8; +extern s32 D_800A4B90; +extern s32 D_800A4B94; +extern s32 D_800A4BA8; +extern s32 D_800A5184; +extern s32 D_800A51BC; +extern s32 D_800A51C0; +extern s32 D_800A51F8; +extern s32 D_800A51FC; +extern s32 D_800A5200; +extern s32 D_800A5470; +extern s32 D_800A5474; +extern s32 D_800A5694; +extern s32 D_800A5698; +extern s32 D_800A569C; +extern s32 D_800A56A0; +extern s32 D_800A56A4; +extern s32 D_800A56B0; +extern s32 D_800A56D0; +extern s32 D_800A5708; +extern s32 D_800A570C; +extern s32 D_800A5710; +extern s32 D_800A5714; +extern s32 D_800A5718; +extern s32 D_800A571C; +extern s32 D_800A5720; +extern s32 D_800A5724; +extern s32 D_800A5728; +extern s32 D_800A572C; +extern s32 D_800A5730; +extern s32 D_800A5734; +extern s32 D_800A5738; +extern s32 D_800A573C; +extern s32 D_800A5740; +extern s32 D_800A5744; +extern s32 D_800A5748; +extern s32 D_800A574C; +extern s32 D_800A5750; +extern s32 D_800A5760; +extern s32 D_800A5780; +extern s32 D_800A5784; +extern s32 D_800A5788; +extern s32 D_800A578C; +extern s32 D_800A5790; +extern s32 D_800A5794; +extern s32 D_800A5798; +extern s32 D_800A579C; +extern s32 D_800A57A0; +extern s32 D_800A57A4; +extern s32 D_800A57A8; +extern s32 D_800A57AC; +extern s32 D_800A57B0; +extern s32 D_800A57B4; +extern s32 D_800A57B8; +extern s32 D_800A57BC; +extern s32 D_800A57C0; +extern s32 D_800A57C4; +extern s32 D_800A57C8; +extern s32 D_800A57CC; +extern s32 D_800A57D0; +extern s32 D_800A57D4; +extern s32 D_800A57D8; +extern s32 D_800A57DC; +extern s32 D_800A57E0; +extern s32 D_800A57E4; +extern s32 D_800A57E8; +extern s32 D_800A57EC; +extern s32 D_800A57F0; +extern s32 D_800A57F4; +extern s32 D_800A57F8; +extern s32 D_800A57FC; +extern s32 D_800A5800; +extern s32 D_800A5804; +extern s32 D_800A5808; +extern s32 D_800A580C; +extern s32 D_800A5810; +extern s32 D_800A5814; +extern s32 D_800A5818; +extern s32 D_800A581C; +extern s32 D_800A5820; +extern s32 D_800A5824; +extern s32 D_800A5828; +extern s32 D_800A582C; +extern s32 D_800A5830; +extern s32 D_800A5834; +extern s32 D_800A5838; +extern s32 D_800A583C; +extern s32 D_800A5840; +extern s32 D_800A5844; +extern s32 D_800A5848; +extern s32 D_800A584C; +extern s32 D_800A5850; +extern s32 D_800A5854; +extern s32 D_800A5858; +extern s32 D_800A585C; +extern s32 D_800A5860; +extern s32 D_800A5864; +extern s32 D_800A5868; +extern s32 D_800A586C; +extern s32 D_800A5870; +extern s32 D_800A5874; +extern s32 D_800A5878; +extern s32 D_800A587C; +extern s32 D_800A5880; +extern s32 D_800A5884; +extern s32 D_800A5888; +extern s32 D_800A588C; +extern s32 D_800A5890; +extern s32 D_800A58A0; +extern s32 D_800A58AC; +extern s32 D_800A58B8; +extern s32 D_800A58C4; +extern s32 D_800A58D0; +extern s32 D_800A58E4; +extern s32 D_800A58F8; +extern s32 D_800A590C; +extern s32 D_800A5920; +extern s32 D_800A5934; +extern s32 D_800A5940; +extern s32 D_800A594C; +extern s32 D_800A5958; +extern s32 D_800A5964; +extern s32 D_800A5970; +extern s32 D_800A597C; +extern s32 D_800A5988; +extern s32 D_800A5DE4; +extern s32 D_800A5DE8; +extern s32 D_800A5DEC; +extern s32 D_800A5DF0; +extern s32 D_800A5DF4; +extern s32 D_800A5DF8; +extern s32 D_800A5DFC; +extern s32 D_800A5E00; +extern s32 D_800A5E04; +extern s32 D_800A5E08; +extern s32 D_800A5E0C; +extern s32 D_800A5E10; +extern s32 D_800A5E14; +extern s32 D_800A5E18; +extern s32 D_800A5E1C; +extern s32 D_800A5E48; +extern s32 D_800A5E4C; +extern s32 D_800A5E50; +extern s32 D_800A5E54; +extern s32 D_800A5E58; +extern s32 D_800A5E5C; +extern s32 D_800A5EC0; +extern s32 D_800A5ED8; +extern s32 D_800A5FE0; +extern s32 D_800A5FF0; +extern s32 D_800A5FF4; +extern s32 D_800A5FF8; +extern s32 D_800A5FFC; +extern s32 D_800A6000; +extern s32 D_800A6004; +extern s32 D_800A6008; +extern s32 D_800A600C; +extern s32 D_800A6010; +extern s32 D_800A6014; +extern s32 D_800A6018; +extern s32 D_800A601C; +extern s32 D_800A6020; +extern s32 D_800A6024; +extern s32 D_800A6028; +extern s32 D_800A602C; +extern s32 D_800A6030; +extern s32 D_800A6038; +extern s32 D_800A6040; +extern s32 D_800A6044; +extern s32 D_800A6048; +extern s32 D_800A604C; +extern s32 D_800A6050; +extern s32 D_800A6060; +extern s32 D_800A6070; +extern s32 D_800A6200; +extern s32 D_800A636C; +extern s32 D_800A63A0; +extern s32 D_800A63A4; +extern s32 D_800A63A8; +extern s32 D_800A63AC; +extern s32 D_800A63B0; +extern s32 D_800A63B4; +extern s32 D_800A63B8; +extern s32 D_800A63BC; +extern s32 D_800A63C0; +extern s32 D_800A63C4; +extern s32 D_800A63C8; +extern s32 D_800A63CC; +extern s32 D_800A63D0; +extern s32 D_800A63D4; +extern s32 D_800A63D8; +extern s32 D_800A63DC; +extern s32 D_800A63E0; +extern s32 D_800A63E4; +extern s32 D_800A63E8; +extern s32 D_800A63EC; +extern s32 D_800A63F0; +extern s32 D_800A63F4; +extern s32 D_800A63F8; +extern s32 D_800A63FC; +extern s32 D_800A6400; +extern s32 D_800A6404; +extern s32 D_800A6408; +extern s32 D_800A640C; +extern s32 D_800A6410; +extern s32 D_800A6414; +extern s32 D_800A6418; +extern s32 D_800A641C; +extern s32 D_800A6420; +extern s32 D_800A6424; +extern s32 D_800A6428; +extern s32 D_800A642C; +extern s32 D_800A6430; +extern s32 D_800A6434; +extern s32 D_800A6438; +extern s32 D_800A643C; +extern s32 D_800A6440; +extern s32 D_800A6444; +extern s32 D_800A6448; +extern s32 D_800A644C; +extern s32 D_800A6450; +extern s32 D_800A6454; +extern s32 D_800A6458; +extern s32 D_800A645C; +extern s32 D_800A6460; +extern s32 D_800A6464; +extern s32 D_800A6468; +extern s32 D_800A64A0; +extern s32 D_800A6520; +extern s32 D_800A6524; +extern s32 D_800A6530; +extern s32 D_800A6534; +extern s32 D_800A6540; +extern s32 D_800A6548; +extern s32 D_800A657C; +extern s32 D_800A6584; +extern s32 D_800A65B8; +extern s32 D_800A65C0; +extern s32 D_800A65F4; +extern s32 D_800A65FC; +extern s32 D_800A6630; +extern s32 D_800A663C; +extern s32 D_800A6670; +extern s32 D_800A6674; +extern s32 D_800A6678; +extern s32 D_800A667C; +extern s32 D_800A6680; +extern s32 D_800A697C; +extern s32 D_800A69B4; +extern s32 D_800A69EC; +extern s32 D_800A6B20; +extern s32 D_800A6B24; +extern s32 D_800A6B28; +extern s32 D_800A6B2C; +extern s32 D_800A6B30; +extern s32 D_800A6B34; +extern s32 D_800A6B58; +extern s32 D_800A6B5C; +extern s32 D_800A6B60; +extern s32 D_800A6B64; +extern s32 D_800A6B68; +extern s32 D_800A6B6C; +extern s32 D_800A6B70; +extern s32 D_800A6B74; +extern s32 D_800A6B78; +extern s32 D_800A6B7C; +extern s32 D_800A6B80; +extern s32 D_800A6B84; +extern s32 D_800A6B88; +extern s32 D_800A6B8C; +extern s32 D_800A6B90; +extern s32 D_800A6B94; +extern s32 D_800A6B98; +extern s32 D_800A6B9C; +extern s32 D_800A6BA0; +extern s32 D_800A6BA4; +extern s32 D_800A6BA8; +extern s32 D_800A6BAC; +extern s32 D_800A6BB0; +extern s32 D_800A6BB4; +extern s32 D_800A6BB8; +extern s32 D_800A6BBC; +extern s32 D_800A6BC0; +extern s32 D_800A6BC4; +extern s32 D_800A6BC8; +extern s32 D_800A6BCC; +extern s32 D_800A6BD0; +extern s32 D_800A6BD4; +extern s32 D_800A6BD8; +extern s32 D_800A6BDC; +extern s32 D_800A6BE0; +extern s32 D_800A6BE4; +extern s32 D_800A6BE8; +extern s32 D_800A6BEC; +extern s32 D_800A6BF0; +extern s32 D_800A6BF4; +extern s32 D_800A6BF8; +extern s32 D_800A6BFC; +extern s32 D_800A6C00; +extern s32 D_800A6C04; +extern s32 D_800A6C08; +extern s32 D_800A6C0C; +extern s32 D_800A6C10; +extern s32 D_800A6C14; +extern s32 D_800A6C18; +extern s32 D_800A6C1C; +extern s32 D_800A6C20; +extern s32 D_800A6C24; +extern s32 D_800A6C28; +extern s32 D_800A6C2C; +extern s32 D_800A6C30; +extern s32 D_800A6C34; +extern s32 D_800A6C38; +extern s32 D_800A6C3C; +extern s32 D_800A6C40; +extern s32 D_800A6C44; +extern s32 D_800A6C48; +extern s32 D_800A6C4C; +extern s32 D_800A6C50; +extern s32 D_800A6C54; +extern s32 D_800A6C58; +extern s32 D_800A6C5C; +extern s32 D_800A6C60; +extern s32 D_800A6C70; +extern s32 D_800A6C94; +extern s32 D_800A6CA0; +extern s32 D_800A6CA4; +extern s32 D_800A6CB0; +extern s32 D_800A6CB4; +extern s32 D_800A6CB8; +extern s32 D_800A6CBC; +extern s32 D_800A6CC0; +extern s32 D_800A6CC4; +extern s32 D_800A6CC8; +extern s32 D_800A6CD0; +extern s32 D_800A6CD4; +extern s32 D_800A6D58; +extern s32 D_800A6D5C; +extern s32 D_800A6D60; +extern s32 D_800A6D64; +extern s32 D_800A6D68; +extern s32 D_800A6D6C; +extern s32 D_800A6D70; +extern s32 D_800A6D74; +extern s32 D_800A6D78; +extern s32 D_800A6D7C; +extern s32 D_800A6D80; +extern s32 D_800A6D84; +extern s32 D_800A6D88; +extern s32 D_800A6D8C; +extern s32 D_800A6D90; +extern s32 D_800A6D94; +extern s32 D_800A6D98; +extern s32 D_800A6D9C; +extern s32 D_800A6DA0; +extern s32 D_800A6DA4; +extern s32 D_800A6DA8; +extern s32 D_800A6DAC; +extern s32 D_800A6DB0; +extern s32 D_800A6DB4; +extern s32 D_800A6DB8; +extern s32 D_800A6DBC; +extern s32 D_800A6DC0; +extern s32 D_800A6DC8; +extern s32 D_800A6DD0; +extern s32 D_800A6DD4; +extern s32 D_800A6DD8; +extern s32 D_800A6DDC; +extern s32 D_800A6DE0; +extern s32 D_800A6DE4; +extern s32 D_800A6DE8; +extern s32 D_800A6E00; +extern s32 D_800A6E0C; +extern s32 D_800A6E30; +extern s32 D_800A6E84; +extern s32 D_800A6E90; +extern s32 D_800A6ED8; +extern s32 D_800A6F80; +extern s32 D_800A6F88; +extern s32 D_800A6F8C; +extern s32 D_800A6F90; +extern s32 D_800A6F94; +extern s32 D_800A6F98; +extern s32 D_800A6F9C; +extern s32 D_800A6FA0; +extern s32 D_800A6FA4; +extern s32 D_800A6FA8; +extern s32 D_800A6FAC; +extern s32 D_800A6FB0; +extern s32 D_800A6FB4; +extern s32 D_800A6FB8; +extern s32 D_800A6FBC; +extern s32 D_800A6FC0; +extern s32 D_800A6FC4; +extern s32 D_800A6FD0; +extern s32 D_800A6FE0; +extern s32 D_800A6FF0; +extern s32 D_800A7144; +extern s32 D_800A7148; +extern s32 D_800A714C; +extern s32 D_800A7150; +extern s32 D_800A7154; +extern s32 D_800A7158; +extern s32 D_800A7160; +extern s32 D_800A7164; +extern s32 D_800A7170; +extern s32 D_800A7174; +extern s32 D_800A7178; +extern s32 D_800A717C; +extern s32 D_800A7180; +extern s32 D_800A7184; +extern s32 D_800A7188; +extern s32 D_800A718C; +extern s32 D_800A7190; +extern s32 D_800A7194; +extern s32 D_800A7198; +extern s32 D_800A719C; +extern s32 D_800A71A0; +extern s32 D_800A71A4; +extern s32 D_800A71A8; +extern s32 D_800A71AC; +extern s32 D_800A71B0; +extern s32 D_800A71B4; +extern s32 D_800A71B8; +extern s32 D_800A71C0; +extern s32 D_800A71C4; +extern s32 D_800A71C8; +extern s32 D_800A71CC; +extern s32 D_800A71D0; +extern s32 D_800A71E0; +extern s32 D_800A71E4; +extern s32 D_800A7204; +extern s32 D_800A7208; +extern s32 D_800A7210; +extern s32 D_800A7211; +extern s32 D_800A7212; +extern s32 D_800A7218; +extern s32 D_800A7220; +extern s32 D_800A7224; +extern s32 D_800A7228; +extern s32 D_800A7230; +extern s32 D_800A7240; +extern s32 D_800A7244; +extern s32 D_800A7248; +extern s32 D_800A7250; +extern s32 D_800A7260; +extern s32 D_800A7270; +extern s32 D_800A7280; +extern s32 D_800A7284; +extern s32 D_800A7288; +extern s32 D_800A728C; +extern s32 D_800A7290; +extern s32 D_800A7294; +extern s32 D_800A7298; +extern s32 D_800A729C; +extern s32 D_800A72A0; +extern s32 D_800A72A4; +extern s32 D_800A72A8; +extern s32 D_800A72AC; +extern s32 D_800A72B0; +extern s32 D_800A72B4; +extern s32 D_800A72B8; +extern s32 D_800A72BC; +extern s32 D_800A72C0; +extern s32 D_800A72D0; +extern s32 D_800A72E8; +extern s32 D_800A7320; +extern s32 D_800A7324; +extern s32 D_800A7328; +extern s32 D_800A732C; +extern s32 D_800A7330; +extern s32 D_800A7334; +extern s32 D_800A7338; +extern s32 D_800A733C; +extern s32 D_800A7340; +extern s32 D_800A7350; +extern s32 D_800A7354; +extern s32 D_800A7358; +extern s32 D_800A735C; +extern s32 D_800A7360; +extern s32 D_800A7364; +extern s32 D_800A7368; +extern s32 D_800A736C; +extern s32 D_800A7370; +extern s32 D_800A7374; +extern s32 D_800A7378; +extern s32 D_800A737C; +extern s32 D_800A7380; +extern s32 D_800A7390; +extern s32 D_800A7398; +extern s32 D_800A73A0; +extern s32 D_800A73A4; +extern s32 D_800A73A8; +extern s32 D_800A73B0; +extern s32 D_800A73C0; +extern s32 D_800A73C4; +extern s32 D_800A73C8; +extern s32 D_800A73D0; +extern s32 D_800A73D4; +extern s32 D_800A73D8; +extern s32 D_800A73DC; +extern s32 D_800A73E0; +extern s32 D_800A73E4; +extern s32 D_800A73E8; +extern s32 D_800A73EC; +extern s32 D_800A73F0; +extern s32 D_800A7400; +extern s32 D_800A7404; +extern s32 D_800A7408; +extern s32 D_800A740C; +extern s32 D_800A7434; +extern s32 D_800A7438; +extern s32 D_800A743C; +extern s32 D_800A7440; +extern s32 D_800A7450; +extern s32 D_800A7454; +extern s32 D_800A7458; +extern s32 D_800A745C; +extern s32 D_800A7460; +extern s32 D_800A749C; +extern s32 D_800A74D4; +extern s32 D_800A7AC8; +extern s32 D_800A7ACC; +extern s32 D_800A7AD0; +extern s32 D_800A7AD4; +extern s32 D_800A7AD8; +extern s32 D_800A7ADC; +extern s32 D_800A7AE0; +extern s32 D_800A7AE4; +extern s32 D_800A7AE8; +extern s32 D_800A7AEC; +extern s32 D_800A7AF0; +extern s32 D_800A7AF4; +extern s32 D_800A7AF8; +extern s32 D_800A7AFC; +extern s32 D_800A7B00; +extern s32 D_800A7B04; +extern s32 D_800A7B08; +extern s32 D_800A7B0C; +extern s32 D_800A7B10; +extern s32 D_800A7B5C; +extern s32 D_800A7B60; +extern s32 D_800A7B64; +extern s32 D_800A7B68; +extern s32 D_800A7B6C; +extern s32 D_800A7B70; +extern s32 D_800A7B74; +extern s32 D_800A7B78; +extern s32 D_800A8004; +extern s32 D_800A8010; +extern s32 D_800A8014; +extern s32 D_800A8018; +extern s32 D_800A801C; +extern s32 D_800A8020; +extern s32 D_800A8030; +extern s32 D_800A8060; +extern s32 D_800A8064; +extern s32 D_800A8074; +extern s32 D_800A8084; +extern s32 D_800A8094; +extern s32 D_800A80A4; +extern s32 D_800A80AC; +extern s32 D_800A80B4; +extern s32 D_800A80C4; +extern s32 D_800A80D4; +extern s32 D_800A80E4; +extern s32 D_800A80E8; +extern s32 D_800A80EC; +extern s32 D_800A80F0; +extern s32 D_800A80F4; +extern s32 D_800A80F8; +extern s32 D_800A80FC; +extern s32 D_800A8100; +extern s32 D_800A8104; +extern s32 D_800A8108; +extern s32 D_800A810C; +extern s32 D_800A8110; +extern s32 D_800A8114; +extern s32 D_800A8118; +extern s32 D_800A8180; +extern s32 D_800A8184; +extern s32 D_800A8188; +extern s32 D_800A818C; +extern s32 D_800A8190; +extern s32 D_800A8194; +extern s32 D_800A8198; +extern s32 D_800A819C; +extern s32 D_800A81A0; +extern s32 D_800A81A4; +extern s32 D_800A81A8; +extern s32 D_800A81B0; +extern s32 D_800A81C0; +extern s32 D_800A81C4; +extern s32 D_800A81C8; +extern s32 D_800A81CC; +extern s32 D_800A81D0; +extern s32 D_800A81D4; +extern s32 D_800A81D8; +extern s32 D_800A81DC; +extern s32 D_800A81E0; +extern s32 D_800A81E4; +extern s32 D_800A81E8; +extern s32 D_800A81EC; +extern s32 D_800A81F0; +extern s32 D_800A81F4; +extern s32 D_800A81F8; +extern s32 D_800A81FC; +extern s32 D_800A8200; +extern s32 D_800A8204; +extern s32 D_800A8208; +extern s32 D_800A8210; +extern s32 D_800A822C; +extern s32 D_800A8244; +extern s32 D_800A8294; +extern s32 D_800A8298; +extern s32 D_800A829C; +extern s32 D_800A82A0; +extern s32 D_800A82A8; +extern s32 D_800A82AC; +extern s32 D_800A82B0; +extern s32 D_800A82B4; +extern s32 D_800A82B8; +extern s32 D_800A82E4; +extern s32 D_800A82E8; +extern s32 D_800A82EC; +extern s32 D_800A8704; +extern s32 D_800A8708; +extern s32 D_800A8710; +extern s32 D_800A8728; +extern s32 D_800A8770; +extern s32 D_800A87A0; +extern s32 D_800A8A40; +extern s32 D_800A8A48; +extern s32 D_800A8A84; +extern s32 D_800A8A9C; +extern s32 D_800A8AA4; +extern s32 D_800A8AA8; +extern s32 D_800A8AAC; +extern s32 D_800A8AB0; +extern s32 D_800A8AB4; +extern s32 D_800A8AB8; +extern s32 D_800A8ABC; +extern s32 D_800A8AC0; +extern s32 D_800A8AC4; +extern s32 D_800A8AC8; +extern s32 D_800A8ACC; +extern s32 D_800A8AD0; +extern s32 D_800A8AD4; +extern s32 D_800A8AD8; +extern s32 D_800A8ADC; +extern s32 D_800A8AE0; +extern s32 D_800A8AE4; +extern s32 D_800A8AE8; +extern s32 D_800A8AEC; +extern s32 D_800A8AF0; +extern s32 D_800A8AF4; +extern s32 D_800A8AF8; +extern s32 D_800A8AFC; +extern s32 D_800A8B00; +extern s32 D_800A8B04; +extern s32 D_800A8B08; +extern s32 D_800A8B0C; +extern s32 D_800A8B10; +extern s32 D_800A8B14; +extern s32 D_800A8B18; +extern s32 D_800A8B1C; +extern s32 D_800A8B20; +extern s32 D_800A8B24; +extern s32 D_800A8B28; +extern s32 D_800A8B2C; +extern s32 D_800A8B30; +extern s32 D_800A8B34; +extern s32 D_800A8B38; +extern s32 D_800A8B3C; +extern s32 D_800A8B40; +extern s32 D_800A8B44; +extern s32 D_800A8B48; +extern s32 D_800A8B4C; +extern s32 D_800A8B50; +extern s32 D_800A8B54; +extern s32 D_800A8B58; +extern s32 D_800A8B5C; +extern s32 D_800A8B60; +extern s32 D_800A8B64; +extern s32 D_800A8B68; +extern s32 D_800A8B6C; +extern s32 D_800A8B70; +extern s32 D_800A8B80; +extern s32 D_800A8CC0; +extern s32 D_800A8CC4; +extern s32 D_800A8CC8; +extern s32 D_800A8CCC; +extern s32 D_800A8CD0; +extern s32 D_800A8CD4; +extern s32 D_800A8CD8; +extern s32 D_800A8CE0; +extern s32 D_800A8CE4; +extern s32 D_800A8CE8; +extern s32 D_800A8CEC; +extern s32 D_800A8CF0; +extern s32 D_800A8CF4; +extern s32 D_800A8CF8; +extern s32 D_800A8CFC; +extern s32 D_800A8D00; +extern s32 D_800A8D10; +extern s32 D_800A8D14; +extern s32 D_800A8D18; +extern s32 D_800A8D20; +extern s32 D_800A8D24; +extern s32 D_800A8D28; +extern s32 D_800A8D2C; +extern s32 D_800A8D30; +extern s32 D_800A8D34; +extern s32 D_800A8D38; +extern s32 D_800A8D3C; +extern s32 D_800A8D40; +extern s32 D_800A8D44; +extern s32 D_800A8D50; +extern s32 D_800A8D54; +extern s32 D_800A8D58; +extern s32 D_800A8D5C; +extern s32 D_800A8D60; +extern s32 D_800A8D64; +extern s32 D_800A8D70; +extern s32 D_800A8D80; +extern s32 D_800A8D84; +extern s32 D_800A8D88; +extern s32 D_800A8D8C; +extern s32 D_800A8D90; +extern s32 D_800A8D94; +extern s32 D_800A8D98; +extern s32 D_800A8D9C; +extern s32 D_800A8DA0; +extern s32 D_800A8DA4; +extern s32 D_800A8DA8; +extern s32 D_800A8DAC; +extern s32 D_800A8DB0; +extern s32 D_800A8DC0; +extern s32 D_800A8DC4; +extern s32 D_800A8DC8; +extern s32 D_800A8DCC; +extern s32 D_800A8DD0; +extern s32 D_800A8DE0; +extern s32 D_800A8F50; +extern s32 D_800A8F54; +extern s32 D_800A8F58; +extern s32 D_800A8F5C; +extern s32 D_800A8F60; +extern s32 D_800A8F64; +extern s32 D_800A8F68; +extern s32 D_800A8F6C; +extern s32 D_800A8F70; +extern s32 D_800A8F74; +extern s32 D_800A8F78; +extern s32 D_800A8F7C; +extern s32 D_800A8F80; +extern s32 D_800A8F84; +extern s32 D_800A8F88; +extern s32 D_800A8F8C; +extern s32 D_800A8F90; +extern s32 D_800A8F94; +extern s32 D_800A8F98; +extern s32 D_800A8F9C; +extern s32 D_800A8FA0; +extern s32 D_800A8FA4; +extern s32 D_800A8FA8; +extern s32 D_800A8FAC; +extern s32 D_800A8FB0; +extern s32 D_800A8FB4; +extern s32 D_800A8FB8; +extern s32 D_800A8FBC; +extern s32 D_800A8FC0; +extern s32 D_800A8FC4; +extern s32 D_800A8FC8; +extern s32 D_800A8FCC; +extern s32 D_800A8FD0; +extern s32 D_800A8FD4; +extern s32 D_800A8FD8; +extern s32 D_800A8FDC; +extern s32 D_800A8FE0; +extern s32 D_800A8FE4; +extern s32 D_800A8FE8; +extern s32 D_800A8FEC; +extern s32 D_800A8FF0; +extern s32 D_800A8FF4; +extern s32 D_800A8FF8; +extern s32 D_800A8FFC; +extern s32 D_800A9000; +extern s32 D_800A9004; +extern s32 D_800A9008; +extern s32 D_800A900C; +extern s32 D_800A9010; +extern s32 D_800A9014; +extern s32 D_800A9018; +extern s32 D_800A901C; +extern s32 D_800A9020; +extern s32 D_800A9021; +extern s32 D_800A9023; +extern s32 D_800A9040; +extern s32 D_800A9068; +extern s32 D_800A9158; +extern s32 D_800A9180; +extern s32 D_800A925C; +extern s32 D_800A9270; +extern s32 D_800A9278; +extern s32 D_800A927C; +extern s32 D_800A9280; +extern s32 D_800A9284; +extern s32 D_800A9288; +extern s32 D_800A9290; +extern s32 D_800A9294; +extern s32 D_800A9D40; +extern s32 D_800A9D70; +extern s32 D_800A9D80; +extern s32 D_800A9D84; +extern s32 D_800A9D88; +extern s32 D_800A9D8C; +extern s32 D_800A9D90; +extern s32 D_800A9D94; +extern s32 D_800A9D98; +extern s32 D_800A9D9C; +extern s32 D_800A9DA0; +extern s32 D_800A9DA4; +extern s32 D_800A9DA8; +extern s32 D_800A9DAC; +extern s32 D_800A9DB0; +extern s32 D_800A9DB4; +extern s32 D_800A9DB8; +extern s32 D_800A9DBC; +extern s32 D_800A9DC0; +extern s32 D_800A9DC4; +extern s32 D_800A9DC8; +extern s32 D_800A9DCC; +extern s32 D_800A9DD0; +extern s32 D_800A9DD4; +extern s32 D_800A9DD8; +extern s32 D_800A9DDC; +extern s32 D_800A9DE0; +extern s32 D_800A9DF0; +extern s32 D_800AA0E4; +extern s32 D_800AA0F0; +extern s32 D_800AA0FC; +extern s32 D_800AA108; +extern s32 D_800AA10C; +extern s32 D_800AA110; +extern s32 D_800AA114; +extern s32 D_800AA118; +extern s32 D_800AA11C; +extern s32 D_800AA120; +extern s32 D_800AA12C; +extern s32 D_800AA1DC; +extern s32 D_800AA28C; +extern s32 D_800AA290; +extern s32 D_800AA294; +extern s32 D_800AA298; +extern s32 D_800AA29C; +extern s32 D_800AA2A0; +extern s32 D_800AA2A4; +extern s32 D_800AA2A8; +extern s32 D_800AA2AC; +extern s32 D_800AA2B0; +extern s32 D_800AA2B4; +extern s32 D_800AA2B8; +extern s32 D_800AA2BC; +extern s32 D_800AA2C0; +extern s32 D_800AA2C4; +extern s32 D_800AA2C8; +extern s32 D_800AA2CC; +extern s32 D_800AA2D0; +extern s32 D_800AA2D4; +extern s32 D_800AA2D8; +extern s32 D_800AA2DC; +extern s32 D_800AA2E0; +extern s32 D_800AA2E4; +extern s32 D_800AA2E8; +extern s32 D_800AA2EC; +extern s32 D_800AA2F0; +extern s32 D_800AA2F4; +extern s32 D_800AA2F8; +extern s32 D_800AA2FC; +extern s32 D_800AA300; +extern s32 D_800AA304; +extern s32 D_800AA308; +extern s32 D_800AA30C; +extern s32 D_800AA310; +extern s32 D_800AA314; +extern s32 D_800AA318; +extern s32 D_800AA320; +extern s32 D_800AA32C; +extern s32 D_800AA338; +extern s32 D_800AA344; +extern s32 D_800AA350; +extern s32 D_800AA35C; +extern s32 D_800AA368; +extern s32 D_800AA374; +extern s32 D_800AA380; +extern s32 D_800AA384; +extern s32 D_800AA388; +extern s32 D_800AA38C; +extern s32 D_800AA390; +extern s32 D_800AA394; +extern s32 D_800AA398; +extern s32 D_800AA39C; +extern s32 D_800AA3A0; +extern s32 D_800AA3A4; +extern s32 D_800AA3A8; +extern s32 D_800AA3AC; +extern s32 D_800AA3B0; +extern s32 D_800AA3B4; +extern s32 D_800AA3B8; +extern s32 D_800AA3C0; +extern s32 D_800AA3C4; +extern s32 D_800AA3C8; +extern s32 D_800AA3D0; +extern s32 D_800AA3D4; +extern s32 D_800AA3D8; +extern s32 D_800AA3DC; +extern s32 D_800AA3E0; +extern s32 D_800AA3E4; +extern s32 D_800AA3E8; +extern s32 D_800AA3EC; +extern s32 D_800AA3F0; +extern s32 D_800AA3F4; +extern s32 D_800AA400; +extern s32 D_800AA40C; +extern s32 D_800AA418; +extern s32 D_800AA41C; +extern s32 D_800AA420; +extern s32 D_800AA424; +extern s32 D_800AA428; +extern s32 D_800AA430; +extern s32 D_800AA434; +extern s32 D_800AA438; +extern s32 D_800AA43C; +extern s32 D_800AA440; +extern s32 D_800AA450; +extern s32 D_800AA454; +extern s32 D_800AA458; +extern s32 D_800AA45C; +extern s32 D_800AA460; +extern s32 D_800AA470; +extern s32 D_800AA474; +extern s32 D_800AA478; +extern s32 D_800AA47C; +extern s32 D_800AA480; +extern s32 D_800AA484; +extern s32 D_800AA490; +extern s32 D_800AA4B8; +extern s32 D_800AA4C8; +extern s32 D_800AA4CC; +extern s32 D_800AA4D0; +extern s32 D_800AA4D4; +extern s32 D_800AA4D8; +extern s32 D_800AA4E0; +extern s32 D_800AA528; +extern s32 D_800AA540; +extern s32 D_800AA544; +extern s32 D_800AA548; +extern s32 D_800AA54C; +extern s32 D_800AA550; +extern s32 D_800AA554; +extern s32 D_800AA558; +extern s32 D_800AA55C; +extern s32 D_800AA560; +extern s32 D_800AA564; +extern s32 D_800AA568; +extern s32 D_800AA56C; +extern s32 D_800AA570; +extern s32 D_800AA580; +extern s32 D_800AA584; +extern s32 D_800AA588; +extern s32 D_800AA58C; +extern s32 D_800AA590; +extern s32 D_800AA59C; +extern s32 D_800AA5A8; +extern s32 D_800AA5B4; +extern s32 D_800AA5CC; +extern s32 D_800AA5FC; +extern s32 D_800AA62C; +extern s32 D_800AA63C; +extern s32 D_800AA648; +extern s32 D_800AA660; +extern s32 D_800AA678; +extern s32 D_800AA6A8; +extern s32 D_800AA6D8; +extern s32 D_800AA708; +extern s32 D_800AA718; +extern s32 D_800AA73C; +extern s32 D_800AA760; +extern s32 D_800AA76C; +extern s32 D_800AA778; +extern s32 D_800AA784; +extern s32 D_800AA790; +extern s32 D_800AA79C; +extern s32 D_800AA7A8; +extern s32 D_800AA7B8; +extern s32 D_800AA7BC; +extern s32 D_800AA7C0; +extern s32 D_800AA7C4; +extern s32 D_800AA7C8; +extern s32 D_800AA7CC; +extern s32 D_800AA7D0; +extern s32 D_800AA7D4; +extern s32 D_800AA7D8; +extern s32 D_800AA7DC; +extern s32 D_800AA7E0; +extern s32 D_800AA7E4; +extern s32 D_800AA7E8; +extern s32 D_800AA7EC; +extern s32 D_800AA7F0; +extern s32 D_800AA7F4; +extern s32 D_800AA7F8; +extern s32 D_800AA7FC; +extern s32 D_800AA800; +extern s32 D_800AA804; +extern s32 D_800AA808; +extern s32 D_800AA80C; +extern s32 D_800AA810; +extern s32 D_800AA814; +extern s32 D_800AA818; +extern s32 D_800AA81C; +extern s32 D_800AA820; +extern s32 D_800AA824; +extern s32 D_800AA828; +extern s32 D_800AA82C; +extern s32 D_800AA830; +extern s32 D_800AA834; +extern s32 D_800AA838; +extern s32 D_800AA83C; +extern s32 D_800AA840; +extern s32 D_800AA844; +extern s32 D_800AA848; +extern s32 D_800AA84C; +extern s32 D_800AA850; +extern s32 D_800AA854; +extern s32 D_800AA858; +extern s32 D_800AA85C; +extern s32 D_800AA860; +extern s32 D_800AA864; +extern s32 D_800AA868; +extern s32 D_800AA86C; +extern s32 D_800AA870; +extern s32 D_800AA874; +extern s32 D_800AA878; +extern s32 D_800AA87C; +extern s32 D_800AA880; +extern s32 D_800AA884; +extern s32 D_800AA888; +extern s32 D_800AA88C; +extern s32 D_800AA890; +extern s32 D_800AA894; +extern s32 D_800AA898; +extern s32 D_800AA89C; +extern s32 D_800AA8A0; +extern s32 D_800AA8A4; +extern s32 D_800AA8A8; +extern s32 D_800AA8AC; +extern s32 D_800AA8B0; +extern s32 D_800AA8B4; +extern s32 D_800AA8DC; +extern s32 D_800AA8E0; +extern s32 D_800AA8E4; +extern s32 D_800AA8E8; +extern s32 D_800AA8EC; +extern s32 D_800AA8F0; +extern s32 D_800AA8F4; +extern s32 D_800AA8F8; +extern s32 D_800AA8FC; +extern s32 D_800AA900; +extern s32 D_800AA904; +extern s32 D_800AA908; +extern s32 D_800AA90C; +extern s32 D_800AA910; +extern s32 D_800AA914; +extern s32 D_800AA918; +extern s32 D_800AA91C; +extern s32 D_800AA920; +extern s32 D_800AA924; +extern s32 D_800AA928; +extern s32 D_800AA92C; +extern s32 D_800AA930; +extern s32 D_800AA93C; +extern s32 D_800AA948; +extern s32 D_800AA954; +extern s32 D_800AA958; +extern s32 D_800AA97C; +extern s32 D_800AA980; +extern s32 D_800AA984; +extern s32 D_800AA988; +extern s32 D_800AA98C; +extern s32 D_800AA990; +extern s32 D_800AA994; +extern s32 D_800AA998; +extern s32 D_800AA99C; +extern s32 D_800AA9A0; +extern s32 D_800AA9A4; +extern s32 D_800AA9A8; +extern s32 D_800AA9AC; +extern s32 D_800AA9B0; +extern s32 D_800AA9B4; +extern s32 D_800AA9B8; +extern s32 D_800AA9BC; +extern s32 D_800AA9C0; +extern s32 D_800AA9C4; +extern s32 D_800AA9D0; +extern s32 D_800AA9E8; +extern s32 D_800AAA00; +extern s32 D_800AAA14; +extern s32 D_800AAA28; +extern s32 D_800AAA30; +extern s32 D_800AAA34; +extern s32 D_800AAA38; +extern s32 D_800AAA3C; +extern s32 D_800AAA40; +extern s32 D_800AAA44; +extern s32 D_800AAA48; +extern s32 D_800AAA4C; +extern s32 D_800AAA50; +extern s32 D_800AAA54; +extern s32 D_800AAA58; +extern s32 D_800AAA5C; +extern s32 D_800AAA60; +extern s32 D_800AAA64; +extern s32 D_800AAA68; +extern s32 D_800AAA6C; +extern s32 D_800AAA70; +extern s32 D_800AAA74; +extern s32 D_800AAA78; +extern s32 D_800AAA7C; +extern s32 D_800AAA80; +extern s32 D_800AAA84; +extern s32 D_800AAA90; +extern s32 D_800AAA9C; +extern s32 D_800AAAA8; +extern s32 D_800AAAB4; +extern s32 D_800AAAB8; +extern s32 D_800AAABC; +extern s32 D_800AAAC0; +extern s32 D_800AAAC4; +extern s32 D_800AAAC8; +extern s32 D_800AAACC; +extern s32 D_800AAAD0; +extern s32 D_800AAAD4; +extern s32 D_800AAADC; +extern s32 D_800AAAE0; +extern s32 D_800AAAE4; +extern s32 D_800AAAE8; +extern s32 D_800AAAEC; +extern s32 D_800AAAF0; +extern s32 D_800AAAF4; +extern s32 D_800AAAF8; +extern s32 D_800AAAFC; +extern s32 D_800AAB00; +extern s32 D_800AAB08; +extern s32 D_800AAB20; +extern s32 D_800AAB38; +extern s32 D_800AAB50; +extern s32 D_800AAB68; +extern s32 D_800AABF8; +extern s32 D_800AABFC; +extern s32 D_800AAC00; +extern s32 D_800AAC04; +extern s32 D_800AAC08; +extern s32 D_800AAC0C; +extern s32 D_800AAC10; +extern s32 D_800AAC14; +extern s32 D_800AAC18; +extern s32 D_800AAC1C; +extern s32 D_800AAC20; +extern s32 D_800AAC30; +extern s32 D_800AAC38; +extern s32 D_800AAC3C; +extern s32 D_800AAC40; +extern s32 D_800AAC44; +extern s32 D_800AAC48; +extern s32 D_800AAC4C; +extern s32 D_800AAC50; +extern s32 D_800AAC54; +extern s32 D_800AAC58; +extern s32 D_800AAC5C; +extern s32 D_800AAC60; +extern s32 D_800AAC64; +extern s32 D_800AAC68; +extern s32 D_800AAC6C; +extern s32 D_800AAC70; +extern s32 D_800AAC74; +extern s32 D_800AAC78; +extern s32 D_800AAC7C; +extern s32 D_800AAC80; +extern s32 D_800AAC90; +extern s32 D_800AACE0; +extern s32 D_800AAD30; +extern s32 D_800AAD44; +extern s32 D_800AAD58; +extern s32 D_800AAD6C; +extern s32 D_800AAD84; +extern s32 D_800AAD8C; +extern s32 D_800AAD94; +extern s32 D_800AADAC; +extern s32 D_800AADB4; +extern s32 D_800AAE88; +extern s32 D_800AAE8C; +extern s32 D_800AAE90; +extern s32 D_800AAE94; +extern s32 D_800AAE98; +extern s32 D_800AAE9C; +extern s32 D_800AAEA0; +extern s32 D_800AAEA4; +extern s32 D_800AAEA8; +extern s32 D_800AAEAC; +extern s32 D_800AAEB0; +extern s32 D_800AAEB4; +extern s32 D_800AAEB8; +extern s32 D_800AAEBC; +extern s32 D_800AAEC0; +extern s32 D_800AAEC4; +extern s32 D_800AAEC8; +extern s32 D_800AAECC; +extern s32 D_800AAED0; +extern s32 D_800AAED4; +extern s32 D_800AAED8; +extern s32 D_800AAEE0; +extern s32 D_800AAEEC; +extern s32 D_800AAF40; +extern s32 D_800AAF5C; +extern s32 D_800AAF74; +extern s32 D_800AAF80; +extern s32 D_800AAF84; +extern s32 D_800AAF90; +extern s32 D_800AAF9C; +extern s32 D_800AAFB4; +extern s32 D_800AAFB8; +extern s32 D_800AAFBC; +extern s32 D_800AAFC0; +extern s32 D_800AAFC4; +extern s32 D_800AAFC8; +extern s32 D_800AAFCC; +extern s32 D_800AAFD0; +extern s32 D_800AAFD4; +extern s32 D_800AAFD8; +extern s32 D_800AAFDC; +extern s32 D_800AAFE0; +extern s32 D_800AAFE4; +extern s32 D_800AAFE8; +extern s32 D_800AAFEC; +extern s32 D_800AAFF0; +extern s32 D_800AAFF4; +extern s32 D_800AAFF8; +extern s32 D_800AAFFC; +extern s32 D_800AB000; +extern s32 D_800AB004; +extern s32 D_800AB008; +extern s32 D_800AB00C; +extern s32 D_800AB010; +extern s32 D_800AB014; +extern s32 D_800AB018; +extern s32 D_800AB01C; +extern s32 D_800AB020; +extern s32 D_800AB024; +extern s32 D_800AB028; +extern s32 D_800AB02C; +extern s32 D_800AB030; +extern s32 D_800AB034; +extern s32 D_800AB038; +extern s32 D_800AB03C; +extern s32 D_800AB040; +extern s32 D_800AB044; +extern s32 D_800AB048; +extern s32 D_800AB04C; +extern s32 D_800AB050; +extern s32 D_800AB054; +extern s32 D_800AB058; +extern s32 D_800AB05C; +extern s32 D_800AB060; +extern s32 D_800AB064; +extern s32 D_800AB068; +extern s32 D_800AB06C; +extern s32 D_800AB070; +extern s32 D_800AB074; +extern s32 D_800AB078; +extern s32 D_800AB07C; +extern s32 D_800AB080; +extern s32 D_800AB084; +extern s32 D_800AB088; +extern s32 D_800AB08C; +extern s32 D_800AB090; +extern s32 D_800AB094; +extern s32 D_800AB098; +extern s32 D_800AB09C; +extern s32 D_800AB0A0; +extern s32 D_800AB0A4; +extern s32 D_800AB0A8; +extern s32 D_800AB0AC; +extern s32 D_800AB0B0; +extern s32 D_800AB0E0; +extern s32 D_800AB110; +extern s32 D_800AB114; +extern s32 D_800AB118; +extern s32 D_800AB11C; +extern s32 D_800AB120; +extern s32 D_800AB124; +extern s32 D_800AB128; +extern s32 D_800AB12C; +extern s32 D_800AB130; +extern s32 D_800AB134; +extern s32 D_800AB138; +extern s32 D_800AB13C; +extern s32 D_800AB188; +extern s32 D_800AB18C; +extern s32 D_800AB190; +extern s32 D_800AB194; +extern s32 D_800AB198; +extern s32 D_800AB19C; +extern s32 D_800AB1A0; +extern s32 D_800AB1A4; +extern s32 D_800AB1A8; +extern s32 D_800AB1AC; +extern s32 D_800AB1B0; +extern s32 D_800AB1B4; +extern s32 D_800AB1B8; +extern s32 D_800AB1BC; +extern s32 D_800AB1C0; +extern s32 D_800AB1C4; +extern s32 D_800AB1C8; +extern s32 D_800AB1CC; +extern s32 D_800AB1D0; +extern s32 D_800AB1D4; +extern s32 D_800AB1D8; +extern s32 D_800AB1DC; +extern s32 D_800AB1E0; +extern s32 D_800AB1E4; +extern s32 D_800AB1E8; +extern s32 D_800AB1EC; +extern s32 D_800AB1F0; +extern s32 D_800AB1F4; +extern s32 D_800AB1F8; +extern s32 D_800AB1FC; +extern s32 D_800AB200; +extern s32 D_800AB204; +extern s32 D_800AB208; +extern s32 D_800AB20C; +extern s32 D_800AB210; +extern s32 D_800AB214; +extern s32 D_800AB218; +extern s32 D_800AB21C; +extern s32 D_800AB220; +extern s32 D_800AB224; +extern s32 D_800AB228; +extern s32 D_800AB22C; +extern s32 D_800AB230; +extern s32 D_800AB234; +extern s32 D_800AB238; +extern s32 D_800AB23C; +extern s32 D_800AB240; +extern s32 D_800AB244; +extern s32 D_800AB250; +extern s32 D_800AB254; +extern s32 D_800AB25C; +extern s32 D_800AB260; +extern s32 D_800AB264; +extern s32 D_800AB268; +extern s32 D_800AB26C; +extern s32 D_800AB270; +extern s32 D_800AB274; +extern s32 D_800AB278; +extern s32 D_800AB280; +extern s32 D_800AB2D4; +extern s32 D_800AB2DC; +extern s32 D_800AB2E0; +extern s32 D_800AB2E4; +extern s32 D_800AB2E8; +extern s32 D_800AB2EC; +extern s32 D_800AB2F0; +extern s32 D_800AB300; +extern s32 D_800AB310; +extern s32 D_800AB320; +extern s32 D_800AB330; +extern s32 D_800AB3F4; +extern s32 D_800AB404; +extern s32 D_800AB414; +extern s32 D_800AB43C; +extern s32 D_800AB440; +extern s32 D_800AB444; +extern s32 D_800AB448; +extern s32 D_800AB44C; +extern s32 D_800AB450; +extern s32 D_800AB454; +extern s32 D_800AB458; +extern s32 D_800AB45C; +extern s32 D_800AB460; +extern s32 D_800AB470; +extern s32 D_800AB474; +extern s32 D_800AB478; +extern s32 D_800AB47C; +extern s32 D_800AB480; +extern s32 D_800AB484; +extern s32 D_800AB488; +extern s32 D_800AB48C; +extern s32 D_800AB490; +extern s32 D_800AB494; +extern s32 D_800AB498; +extern s32 D_800AB49C; +extern s32 D_800AB4A0; +extern s32 D_800AB4A4; +extern s32 D_800AB4A8; +extern s32 D_800AB4AC; +extern s32 D_800AB4B0; +extern s32 D_800AB4B4; +extern s32 D_800AB4B8; +extern s32 D_800AB4BC; +extern s32 D_800AB4D0; +extern s32 D_800AB4D4; +extern s32 D_800AB4D8; +extern s32 D_800AB4DC; +extern s32 D_800AB4E0; +extern s32 D_800AB500; +extern s32 D_800AB50C; +extern s32 D_800AB518; +extern s32 D_800AB51C; +extern s32 D_800AB520; +extern s32 D_800AB524; +extern s32 D_800AB528; +extern s32 D_800AB52C; +extern s32 D_800AB530; +extern s32 D_800AB534; +extern s32 D_800AB538; +extern s32 D_800AB53C; +extern s32 D_800AB540; +extern s32 D_800AB550; +extern s32 D_800AB554; +extern s32 D_800AB558; +extern s32 D_800AB55C; +extern s32 D_800AB560; +extern s32 D_800AB564; +extern s32 D_800AB570; +extern s32 D_800AB57C; +extern s32 D_800AB62C; +extern s32 D_800AB64C; +extern s32 D_800AB68C; +extern s32 D_800AB690; +extern s32 D_800AB691; +extern s32 D_800AB692; +extern s32 D_800AB693; +extern s32 D_800AB694; +extern s32 D_800AB710; +extern s32 D_800AB74C; +extern s32 D_800AB754; +extern s32 D_800AB77C; +extern s32 D_800AB790; +extern s32 D_800AB7A4; +extern s32 D_800AB7BC; +extern s32 D_800AB7D4; +extern s32 D_800AB7DC; +extern s32 D_800AB7E0; +extern s32 D_800AB7E4; +extern s32 D_800AB7E8; +extern s32 D_800AB7EC; +extern s32 D_800AB7F0; +extern s32 D_800AB7F4; +extern s32 D_800AB7F8; +extern s32 D_800AB7FC; +extern s32 D_800AB800; +extern s32 D_800AB804; +extern s32 D_800AB810; +extern s32 D_800AB814; +extern s32 D_800AB818; +extern s32 D_800AB828; +extern s32 D_800AB82C; +extern s32 D_800AB830; +extern s32 D_800AB834; +extern s32 D_800AB838; +extern s32 D_800AB83C; +extern s32 D_800AB840; +extern s32 D_800AB844; +extern s32 D_800AB848; +extern s32 D_800AB84C; +extern s32 D_800AB850; +extern s32 D_800AB854; +extern s32 D_800AB858; +extern s32 D_800AB85C; +extern s32 D_800AB860; +extern s32 D_800AB864; +extern s32 D_800AB868; +extern s32 D_800AB86C; +extern s32 D_800AB870; +extern s32 D_800AB874; +extern s32 D_800AB878; +extern s32 D_800AB87C; +extern s32 D_800AB880; +extern s32 D_800AB884; +extern s32 D_800AB88C; +extern s32 D_800AB890; +extern s32 D_800AB894; +extern s32 D_800AB898; +extern s32 D_800AB89C; +extern s32 D_800AB8A0; +extern s32 D_800AB8A4; +extern s32 D_800AB8A8; +extern s32 D_800AB8AC; +extern s32 D_800AB8B0; +extern s32 D_800AB8B4; +extern s32 D_800AB8B8; +extern s32 D_800AB8BC; +extern s32 D_800AB8C4; +extern s32 D_800AB8C8; +extern s32 D_800AB8CC; +extern s32 D_800AB8D0; +extern s32 D_800AB8D4; +extern s32 D_800AB8E0; +extern s32 D_800AB8E4; +extern s32 D_800AB8E8; +extern s32 D_800AB8EC; +extern s32 D_800AB8F0; +extern s32 D_800AB8F4; +extern s32 D_800AB8F8; +extern s32 D_800AB8FC; +extern s32 D_800AB900; +extern s32 D_800AB904; +extern s32 D_800AB908; +extern s32 D_800AB920; +extern s32 D_800AB940; +extern s32 D_800AB990; +extern s32 D_800AB9E4; +extern s32 D_800AB9E8; +extern s32 D_800ABA1C; +extern s32 D_800ABA20; +extern s32 D_800ABA24; +extern s32 D_800ABA28; +extern s32 D_800ABA2C; +extern s32 D_800ABA30; +extern s32 D_800ABA34; +extern s32 D_800ABA64; +extern s32 D_800ABA68; +extern s32 D_800ABA6C; +extern s32 D_800ABA70; +extern s32 D_800ABA74; +extern s32 D_800ABA78; +extern s32 D_800ABA7C; +extern s32 D_800ABA80; +extern s32 D_800ABA84; +extern s32 D_800ABA88; +extern s32 D_800ABA8C; +extern s32 D_800ABA90; +extern s32 D_800ABAA0; +extern s32 D_800ABAA4; +extern s32 D_800ABAA8; +extern s32 D_800ABAAC; +extern s32 D_800ABAB0; +extern s32 D_800ABAB8; +extern s32 D_800ABABC; +extern s32 D_800ABAC0; +extern s32 D_800ABAC4; +extern s32 D_800ABAC8; +extern s32 D_800ABACC; +extern s32 D_800ABAD0; +extern s32 D_800ABAD4; +extern s32 D_800ABAD8; +extern s32 D_800ABADC; +extern s32 D_800ABAE0; +extern s32 D_800ABAE4; +extern s32 D_800ABAE8; +extern s32 D_800ABAEC; +extern s32 D_800ABAF0; +extern s32 D_800ABAF4; +extern s32 D_800ABAF8; +extern s32 D_800ABAFC; +extern s32 D_800ABB00; +extern s32 D_800ABB04; +extern s32 D_800ABB08; +extern s32 D_800AE7B8; +extern s32 D_800AE840; +extern s32 D_800AE948; +extern s32 D_800AE998; +extern s32 D_800AE99A; +extern s32 D_800AE9A8; +extern s32 D_800AE9C6; +extern s32 D_800AE9C8; +extern s32 D_800AE9CE; +extern s32 D_800AEB54; +extern s32 D_800AEB55; +extern s32 D_800AEB5A; +extern s32 D_800AEB5C; +extern s32 D_800AEB6C; +extern s32 D_800AEB7C; +extern s32 D_800B067C; +extern s32 D_800B069C; +extern s32 D_800B06BC; +extern s32 D_800B0734; +extern s32 D_800B0AB4; +extern s32 D_800B0B0C; +extern s32 D_800B0C2C; +extern s32 D_800B0C30; +extern s32 D_800B0C34; +extern s32 D_800B0C38; +extern s32 D_800B0C3C; +extern s32 D_800B0C40; +extern s32 D_800B0C44; +extern s32 D_800B0C48; +extern s32 D_800B0C50; +extern s32 D_800B0C54; +extern s32 D_800B0C58; +extern s32 D_800B0C5C; +extern s32 D_800B0C60; +extern s32 D_800B0C64; +extern s32 D_800B0C68; +extern s32 D_800B0C6C; +extern s32 D_800B0C70; +extern s32 D_800B0C74; +extern s32 D_800B0C78; +extern s32 D_800B0C7C; +extern s32 D_800B0C80; +extern s32 D_800B0C84; +extern s32 D_800B0C88; +extern s32 D_800B0C8C; +extern s32 D_800B0C90; +extern s32 D_800B0C94; +extern s32 D_800B0C98; +extern s32 D_800B0C9C; +extern s32 D_800B0CA0; +extern s32 D_800B0CA4; +extern s32 D_800B0CA8; +extern s32 D_800B0CAC; +extern s32 D_800B0CB0; +extern s32 D_800B0CB4; +extern s32 D_800B0CB8; +extern s32 D_800B0CBC; +extern s32 D_800B0CC0; +extern s32 D_800B0CC4; +extern s32 D_800B0CC8; +extern s32 D_800B0CCC; +extern s32 D_800B0CD0; +extern s32 D_800B0CD4; +extern s32 D_800B0CD8; +extern s32 D_800B0CDC; +extern s32 D_800B0CE0; +extern s32 D_800B0CE4; +extern s32 D_800B0CE8; +extern s32 D_800B0CEC; +extern s32 D_800B0CF0; +extern s32 D_800B0CF4; +extern s32 D_800B0CF8; +extern s32 D_800B0CFC; +extern s32 D_800B0D00; +extern s32 D_800B0D04; +extern s32 D_800B0D08; +extern s32 D_800B0D0C; +extern s32 D_800B0D10; +extern s32 D_800B0D14; +extern s32 D_800B0D18; +extern s32 D_800B0D1C; +extern s32 D_800B0D20; +extern s32 D_800B0D24; +extern s32 D_800B0D28; +extern s32 D_800B0D2C; +extern s32 D_800B0D30; +extern s32 D_800B0D34; +extern s32 D_800B0D38; +extern s32 D_800B0D3C; +extern s32 D_800B0D40; +extern s32 D_800B0D44; +extern s32 D_800B0D48; +extern s32 D_800B0D4C; +extern s32 D_800B0D50; +extern s32 D_800B0D54; +extern s32 D_800B0D58; +extern s32 D_800B0D5C; +extern s32 D_800B0D60; +extern s32 D_800B0D64; +extern s32 D_800B0D68; +extern s32 D_800B0D6C; +extern s32 D_800B0D70; +extern s32 D_800B0D74; +extern s32 D_800B0D78; +extern s32 D_800B0D7C; +extern s32 D_800B0D80; +extern s32 D_800B0D84; +extern s32 D_800B0D88; +extern s32 D_800B0D8C; +extern s32 D_800B0D90; +extern s32 D_800B0D94; +extern s32 D_800B0D98; +extern s32 D_800B0D9C; +extern s32 D_800B0DA0; +extern s32 D_800B0DA4; +extern s32 D_800B0DA8; +extern s32 D_800B0DAC; +extern s32 D_800B0DB0; +extern s32 D_800B0DB4; +extern s32 D_800B0E08; +extern s32 D_800B0E10; +extern s32 D_800B0E14; +extern s32 D_800B0E20; +extern s32 D_800B0E38; +extern s32 D_800B0E40; +extern s32 D_800B0E44; +extern s32 D_800B0E48; +extern s32 D_800B0E4C; +extern s32 D_800B0E50; +extern s32 D_800B0E5C; +extern s32 D_800B0E60; +extern s32 D_800B2CD0; +extern s32 D_800B85A4; +extern s32 D_800B8698; +extern s32 D_800B86A4; +extern s32 D_800BC444; +extern s32 D_800BC449; +extern s32 D_800BC44A; +extern s32 D_800BE29A; +extern s32 D_800BE2A0; +extern s32 D_800BE2A2; +extern s32 D_800BE2A4; +extern s32 D_800BE2C0; +extern s32 D_800BE2F0; +extern s32 D_800BE2F2; +extern s32 D_800BE2F3; +extern s32 D_800BE2F4; +extern s32 D_800BE35A; +extern s32 D_800BE35B; +extern s32 D_800BE35C; +extern s32 D_800BE360; +extern s32 D_800BE3E4; +extern s32 D_800BE3F0; +extern s32 D_800BE428; +extern s32 D_800BE430; +extern s32 D_800BE438; +extern s32 D_800BE478; +extern s32 D_800BE510; +extern s32 D_800BE520; +extern s32 D_800BE524; +extern s32 D_800BE528; +extern s32 D_800BE530; +extern s32 D_800BE550; +extern s32 D_800BE564; +extern s32 D_800BE580; +extern s32 D_800BE590; +extern s32 D_800BE598; +extern s32 D_800BE5A8; +extern s32 D_800BE5D4; +extern s32 D_800BE5D8; +extern s32 D_800BE5E8; +extern s32 D_800BE5EC; +extern s32 D_800BE5F0; +extern s32 D_800BE610; +extern s32 D_800BE619; +extern s32 D_800BE61A; +extern s32 D_800BE630; +extern s32 D_800BE648; +extern s32 D_800BE658; +extern s32 D_800BE65C; +extern s32 D_800BE660; +extern s32 D_800BE664; +extern s32 D_800BE668; +extern s32 D_800BE6C0; +extern s32 D_800BE6D0; +extern s32 D_800BE6E0; +extern s32 D_800BE700; +extern s32 D_800BE708; +extern s32 D_800BE718; +extern s32 D_800BE72C; +extern s32 D_800BE740; +extern s32 D_800BE918; +extern s32 D_800BE91A; +extern s32 D_800BE91B; +extern s32 D_800BE930; +extern s32 D_800BE9AC; +extern s32 D_800BE9B0; +extern s32 D_800BE9B8; +extern s32 D_800BE9BC; +extern s32 D_800BE9C8; +extern s32 D_800BE9CC; +extern s32 D_800BE9EB; +extern s32 D_800BE9F2; +extern s32 D_800BEA0C; +extern s32 D_800BEAC2; +extern s32 D_800BEAC3; +extern s32 D_800BEAD0; +extern s32 D_800BEAD4; +extern s32 D_800BEAD8; +extern s32 D_800BEB98; +extern s32 D_800BEB9C; +extern s32 D_800BEBA0; +extern s32 D_800BEBA4; +extern s32 D_800BEBB0; +extern s32 D_800C1060; +extern s32 D_800C3510; +extern s32 D_800C3518; +extern s32 D_800C354A; +extern s32 D_800C3550; +extern s32 D_800C358C; +extern s32 D_800C3594; +extern s32 D_800C3598; +extern s32 D_800C35A0; +extern s32 D_800C35A4; +extern s32 D_800C35A8; +extern s32 D_800C35A9; +extern s32 D_800C35AA; +extern s32 D_800C35B0; +extern s32 D_800C35B8; +extern s32 D_800C35C0; +extern s32 D_800C35C2; +extern s32 D_800C35C3; +extern s32 D_800C35C8; +extern s32 D_800C35D0; +extern s32 D_800C35D8; +extern s32 D_800C35E0; +extern s32 D_800C35E8; +extern s32 D_800C35F0; +extern s32 D_800C35F8; +extern s32 D_800C3614; +extern s32 D_800C3618; +extern s32 D_800C361C; +extern s32 D_800C3620; +extern s32 D_800C3624; +extern s32 D_800C3628; +extern s32 D_800C363A; +extern s32 D_800C3640; +extern s32 D_800C3648; +extern s32 D_800C364C; +extern s32 D_800C3650; +extern s32 D_800C3656; +extern s32 D_800C3658; +extern s32 D_800C365A; +extern s32 D_800C365C; +extern s32 D_800C365E; +extern s32 D_800C3660; +extern s32 D_800C3662; +extern s32 D_800C3668; +extern s32 D_800C3672; +extern s32 D_800C3674; +extern s32 D_800C3678; +extern s32 D_800C367C; +extern s32 D_800C3680; +extern s32 D_800C3688; +extern s32 D_800C3778; +extern s32 D_800C3868; +extern s32 D_800C3960; +extern s32 D_800C3A50; +extern s32 D_800C3A58; +extern s32 D_800C3A64; +extern s32 D_800C3A68; +extern s32 D_800C3C89; +extern s32 D_800C3C8A; +extern s32 D_800C3C8B; +extern s32 D_800C3C8C; +extern s32 D_800C3C8D; +extern s32 D_800C3C8E; +extern s32 D_800C3C98; +extern s32 D_800C3C99; +extern s32 D_800C3C9A; +extern s32 D_800C3C9C; +extern s32 D_800C3C9D; +extern s32 D_800C3C9E; +extern s32 D_800C3D48; +extern s32 D_800C3D50; +extern s32 D_800C3D60; +extern s32 D_800C3D68; +extern s32 D_800C3E58; +extern s32 D_800C3E70; +extern s32 D_800C3E74; +extern s32 D_800C3E7A; +extern s32 D_800C3E88; +extern s32 D_800C3E8C; +extern s32 D_800C3E90; +extern s32 D_800C3E98; +extern s32 D_800C3EA0; +extern s32 D_800C3EF0; +extern s32 D_800C3F00; +extern s32 D_800C3F08; +extern s32 D_800C3FD0; +extern s32 D_800C3FDC; +extern s32 D_800C3FE0; +extern s32 D_800C3FE4; +extern s32 D_800C3FE8; +extern s32 D_800C3FEC; +extern s32 D_800C3FF0; +extern s32 D_800C3FF4; +extern s32 D_800C3FFA; +extern s32 D_800C4008; +extern s32 D_800C4010; +extern s32 D_800C4020; +extern s32 D_800C4310; +extern s32 D_800C4488; +extern s32 D_800C4778; +extern s32 D_800C48F0; +extern s32 D_800C4BE0; +extern s32 D_800C4ED0; +extern s32 D_800C5048; +extern s32 D_800C5338; +extern s32 D_800C5628; +extern s32 D_800C57A0; +extern s32 D_800C5918; +extern s32 D_800C5EF8; +extern s32 D_800C6664; +extern s32 D_800C6668; +extern s32 D_800C666C; +extern s32 D_800C666E; +extern s32 D_800C666F; +extern s32 D_800C6670; +extern s32 D_800C6850; +extern s32 D_800CBD4C; +extern s32 D_800CBD4E; +extern s32 D_800CBD50; +extern s32 D_800CBD57; +extern s32 D_800CBD58; +extern s32 D_800CBD5C; +extern s32 D_800CBD5D; +extern s32 D_800CBD5E; +extern s32 D_800CBD68; +extern s32 D_800CBD6C; +extern s32 D_800CBD6D; +extern s32 D_800CBD6E; +extern s32 D_800CBD6F; +extern s32 D_800CBD90; +extern s32 D_800CBD94; +extern s32 D_800CBD98; +extern s32 D_800CBD9C; +extern s32 D_800CBDA0; +extern s32 D_800CBDD2; +extern s32 D_800CBDD3; +extern s32 D_800CBDD4; +extern s32 D_800CBDD8; +extern s32 D_800CBDDC; +extern s32 D_800CBDF4; +extern s32 D_800CBDF8; +extern s32 D_800CBDFC; +extern s32 D_800CBE10; +extern s32 D_800CBFA8; +extern s32 D_800CBFDF; +extern s32 D_800CC028; +extern s32 D_800CC0E8; +extern s32 D_800CC254; +extern s32 D_800CC258; +extern s32 D_800CC25C; +extern s32 D_800CC260; +extern s32 D_800CC26C; +extern s32 D_800CC26D; +extern s32 D_800CC270; +extern s32 D_800CC274; +extern s32 D_800CC278; +extern s32 D_800CC27E; +extern s32 D_800CC28C; +extern s32 D_800CC290; +extern s32 D_800CC2B1; +extern s32 D_800CC2B2; +extern s32 D_800CC2B4; +extern s32 D_800CC2E4; +extern s32 D_800CC2EC; +extern s32 D_800CC2F0; +extern s32 D_800CC2F4; +extern s32 D_800CC2F8; +extern s32 D_800CC30B; +extern s32 D_800CC310; +extern s32 D_800CC314; +extern s32 D_800CC33A; +extern s32 D_800CC346; +extern s32 D_800CC351; +extern s32 D_800CC354; +extern s32 D_800CC359; +extern s32 D_800CC364; +extern s32 D_800CC37B; +extern s32 D_800CC382; +extern s32 D_800CC388; +extern s32 D_800CC398; +extern s32 D_800CC39C; +extern s32 D_800CC3B4; +extern s32 D_800CC3B6; +extern s32 D_800CC3B8; +extern s32 D_800CC3C8; +extern s32 D_800CC3D1; +extern s32 D_800CC3D2; +extern s32 D_800CC3F7; +extern s32 D_800CC406; +extern s32 D_800CC40B; +extern s32 D_800CC40C; +extern s32 D_800CC40F; +extern s32 D_800CC49A; +extern s32 D_800CC49C; +extern s32 D_800CC4A4; +extern s32 D_800CC4B3; +extern s32 D_800CC4B4; +extern s32 D_800CC4E8; +extern s32 D_800CC502; +extern s32 D_800CC544; +extern s32 D_800CC5B4; +extern s32 D_800CC5B8; +extern s32 D_800CC5BC; +extern s32 D_800CC5CB; +extern s32 D_800CC5E8; +extern s32 D_800CC5EC; +extern s32 D_800CC5FC; +extern s32 D_800D0000; +extern s32 D_800D1560; +extern s32 D_800D1570; +extern s32 D_800D158C; +extern s32 D_800D1590; +extern s32 D_800D1594; +extern s32 D_800D187C; +extern s32 D_800D18A9; +extern s32 D_800D18B0; +extern s32 D_800D18C4; +extern s32 D_800D1928; +extern s32 D_800D192C; +extern s32 D_800D1930; +extern s32 D_800D199C; +extern s32 D_800D2100; +extern s32 D_800D2101; +extern s32 D_800D210C; +extern s32 D_800D2130; +extern s32 D_800D213C; +extern s32 D_800D2140; +extern s32 D_800D2144; +extern s32 D_800D2145; +extern s32 D_800D2146; +extern s32 D_800D2148; +extern s32 D_800D2350; +extern s32 D_800D2354; +extern s32 D_800D2358; +extern s32 D_800D2360; +extern s32 D_800D237C; +extern s32 D_800D2390; +extern s32 D_800D2394; +extern s32 D_800D2398; +extern s32 D_800D2399; +extern s32 D_800D239A; +extern s32 D_800D239C; +extern s32 D_800D23A0; +extern s32 D_800D23A4; +extern s32 D_800D23A8; +extern s32 D_800D23B0; +extern s32 D_800D2414; +extern s32 D_800D2450; +extern s32 D_800D2558; +extern s32 D_800D2C20; +extern s32 D_800D2C70; +extern s32 D_800D2C74; +extern s32 D_800D2C78; +extern s32 D_800D2C7C; +extern s32 D_800D2C80; +extern s32 D_800D2C84; +extern s32 D_800D2C88; +extern s32 D_800D2C90; +extern s32 D_800D2C9C; +extern s32 D_800D2CA0; +extern s32 D_800D2CA8; +extern s32 D_800D2DA8; +extern s32 D_800D2DA9; +extern s32 D_800D2DAA; +extern s32 D_800D2DAB; +extern s32 D_800D2DB8; +extern s32 D_800D2DC0; +extern s32 D_800D2E30; +extern s32 D_800D2E40; +extern s32 D_800D2E48; +extern s32 D_800D2E69; +extern s32 D_800D2F58; +extern s32 D_800D2F60; +extern s32 D_800D2F64; +extern s32 D_800D2FB0; +extern s32 D_800D2FC0; +extern s32 D_800D2FD8; +extern s32 D_800D2FEC; +extern s32 D_800D3000; +extern s32 D_800D3004; +extern s32 D_800D3010; +extern s32 D_800D3014; +extern s32 D_800D3018; +extern s32 D_800D301C; +extern s32 D_800D3020; +extern s32 D_800D3024; +extern s32 D_800D3028; +extern s32 D_800D3088; +extern s32 D_800D3090; +extern s32 D_800D309C; +extern s32 D_800D30A0; +extern s32 D_800D30B8; +extern s32 D_800D30D0; +extern s32 D_800D30F0; +extern s32 D_800D30F4; +extern s32 D_800D3270; +extern s32 D_800D3274; +extern s32 D_800D3278; +extern s32 D_800D330C; +extern s32 D_800D3584; +extern s32 D_800D35E0; +extern s32 D_800D35E8; +extern s32 D_800D3680; +extern s32 D_800D3688; +extern s32 D_800D368C; +extern s32 D_800D3690; +extern s32 D_800D3694; +extern s32 D_800D37E0; +extern s32 D_800D3830; +extern s32 D_800D3840; +extern s32 D_800D3844; +extern s32 D_800D3848; +extern s32 D_800D384C; +extern s32 D_800D3860; +extern s32 D_800D9860; +extern s32 D_800D9894; +extern s32 D_800D9898; +extern s32 D_800D989C; +extern s32 D_800D98A0; +extern s32 D_800D98A4; +extern s32 D_800D98C0; +extern s32 D_800D98D0; +extern s32 D_800D98F0; +extern s32 D_800D9900; +extern s32 D_800D9910; +extern s32 D_800D9946; +extern s32 D_800D9950; +extern s32 D_800D9960; +extern s32 D_800D9963; +extern s32 D_800D99F0; +extern s32 D_800D9A04; +extern s32 D_800D9A08; +extern s32 D_800D9A0C; +extern s32 D_800D9A10; +extern s32 D_800D9A14; +extern s32 D_800D9AB4; +extern s32 D_800D9B28; +extern s32 D_800D9B69; +extern s32 D_800D9B6A; +extern s32 D_800D9B6B; +extern s32 D_800D9B6C; +extern s32 D_800D9B6D; +extern s32 D_800D9B6E; +extern s32 D_800D9B6F; +extern s32 D_800D9B70; +extern s32 D_800D9B71; +extern s32 D_800D9B72; +extern s32 D_800D9B73; +extern s32 D_800D9B79; +extern s32 D_800D9B7A; +extern s32 D_800D9B7B; +extern s32 D_800D9B7C; +extern s32 D_800D9B7D; +extern s32 D_800D9B7E; +extern s32 D_800D9B7F; +extern s32 D_800D9B80; +extern s32 D_800D9B81; +extern s32 D_800D9B82; +extern s32 D_800D9B83; +extern s32 D_800D9B90; +extern s32 D_800D9C10; +extern s32 D_800D9C50; +extern s32 D_800D9E21; +extern s32 D_800D9E28; +extern s32 D_800D9E60; +extern s32 D_800D9EB7; +extern s32 D_800D9EC4; +extern s32 D_800D9ED0; +extern s32 D_800D9ED8; +extern s32 D_800D9F68; +extern s32 D_800DBDBA; +extern s32 D_800DBDBC; +extern s32 D_800DBDC0; +extern s32 D_800DBDC4; +extern s32 D_800DBDC8; +extern s32 D_800DBDCC; +extern s32 D_800DBDD0; +extern s32 D_800DBE40; +extern s32 D_800DBE44; +extern s32 D_800DBE48; +extern s32 D_800DBE54; +extern s32 D_800DBE58; +extern s32 D_800DBE60; +extern s32 D_800DBE68; +extern s32 D_800DBE6C; +extern s32 D_800DBE70; +extern s32 D_800DBE74; +extern s32 D_800DBE80; +extern s32 D_800DBE88; +extern s32 D_800DBEA8; +extern s32 D_800DBEAB; +extern s32 D_800DBEAC; +extern s32 D_800DBEB0; +extern s32 D_800DBEC0; +extern s32 D_800DBED0; +extern s32 D_800DBEE0; +extern s32 D_800DBEE4; +extern s32 D_800DBEE8; +extern s32 D_800DBF08; +extern s32 D_800DBF48; +extern s32 D_800DBF94; +extern s32 D_800DBF98; +extern s32 D_800DBF9C; +extern s32 D_800DBFA0; +extern s32 D_800DBFA4; +extern s32 D_800DBFC0; +extern s32 D_800DBFC8; +extern s32 D_800DC000; +extern s32 D_800DC004; +extern s32 D_800DC024; +extern s32 D_800DC028; +extern s32 D_800DC0C0; +extern s32 D_800DC1F0; +extern s32 D_800DC1F4; +extern s32 D_800DC1F8; +extern s32 D_800DC1FC; +extern s32 D_800DC200; +extern s32 D_800DC204; +extern s32 D_800DC206; +extern s32 D_800DC280; +extern s32 D_800DC290; +extern s32 D_800DC2C0; +extern s32 D_800DC310; +extern s32 D_800DC320; +extern s32 D_800DC46A; +extern s32 D_800DC63A; +extern s32 D_800DC640; +extern s32 D_800DC9F0; +extern s32 D_800DCA00; +extern s32 D_800DCA04; +extern s32 D_800DCA08; +extern s32 D_800DCA0C; +extern s32 D_800DCA10; +extern s32 D_800DCA20; +extern s32 D_800DCA24; +extern s32 D_800DCA28; +extern s32 D_800DCA2C; +extern s32 D_800DCA30; +extern s32 D_800DCD10; +extern s32 D_800DCD23; +extern s32 D_800DCD27; +extern s32 D_800DCDA4; +extern s32 D_800DCDA8; +extern s32 D_800DCDAC; +extern s32 D_800DCDB0; +extern s32 D_800DCDB4; +extern s32 D_800DCDB8; +extern s32 D_800DCDBC; +extern s32 D_800DCDC0; +extern s32 D_800DCDE0; +extern s32 D_800DCE40; +extern s32 D_800DCE50; +extern s32 D_800DCE94; +extern s32 D_800DCF20; +extern s32 D_800DCF38; +extern s32 D_800DCF3C; +extern s32 D_800DD0E0; +extern s32 D_800DD1B0; +extern s32 D_800DD1B4; +extern s32 D_800DD1B8; +extern s32 D_800DD1BC; +extern s32 D_800DD1BE; +extern s32 D_800DD1C0; +extern s32 D_800DD1C2; +extern s32 D_800DD1C4; +extern s32 D_800DD1C6; +extern s32 D_800DD1C8; +extern s32 D_800DD1CA; +extern s32 D_800DD1CC; +extern s32 D_800DD1CE; +extern s32 D_800DD1D0; +extern s32 D_800DD1F8; +extern s32 D_800DD1FC; +extern s32 D_800DD200; +extern s32 D_800DD204; +extern s32 D_800DD206; +extern s32 D_800DD208; +extern s32 D_800DD20C; +extern s32 D_800DD210; +extern s32 D_800DD214; +extern s32 D_800DD218; +extern s32 D_800DD21C; +extern s32 D_800DD220; +extern s32 D_800DD224; +extern s32 D_800DD228; +extern s32 D_800DD230; +extern s32 D_800DD254; +extern s32 D_800DD258; +extern s32 D_800DD2B0; +extern s32 D_800DD2E0; +extern s32 D_800DD2E4; +extern s32 D_800DD2E8; +extern s32 D_800DD2EA; +extern s32 D_800DD2EC; +extern s32 D_800DD2EE; +extern s32 D_800DD2F0; +extern s32 D_800DD2F2; +extern s32 D_800DD2F4; +extern s32 D_800DD300; +extern s32 D_800DD310; +extern s32 D_800DD328; +extern s32 D_800DD340; +extern s32 D_800DD348; +extern s32 D_800DD3FC; +extern s32 D_800DD430; +extern s32 D_800DD432; +extern s32 D_800DD433; +extern s32 D_800DD434; +extern s32 D_800DD436; +extern s32 D_800DD438; +extern s32 D_800DD440; +extern s32 D_800DD446; +extern s32 D_800DD450; +extern s32 D_800DD468; +extern s32 D_800DD470; +extern s32 D_800DD472; +extern s32 D_800DD474; +extern s32 D_800DD4E0; +extern s32 D_800DD548; +extern s32 D_800DD5B0; +extern s32 D_800DDA98; +extern s32 D_800DDA9C; +extern s32 D_800DDAA8; +extern s32 D_800DDAAC; +extern s32 D_800DDAB8; +extern s32 D_800DDABC; +extern s32 D_800DDB80; +extern s32 D_800DDBC0; +extern s32 D_800DDBD0; +extern s32 D_800DDBE0; +extern s32 D_800DDBF0; +extern s32 D_800DDC10; +extern s32 D_800DDC20; +extern s32 D_800DDC40; +extern s32 D_800DDC7C; +extern s32 D_800DDC80; +extern s32 D_800DDC90; +extern s32 D_800DDD18; +extern s32 D_800DDD24; +extern s32 D_800DDD28; +extern s32 D_800DDD58; +extern s32 D_800DDD60; +extern s32 D_800DDD70; +extern s32 D_800DDD74; +extern s32 D_800DDD78; +extern s32 D_800DDD80; +extern s32 D_800DDD88; +extern s32 D_800DDD89; +extern s32 D_800DDD8A; +extern s32 D_800DDD8B; +extern s32 D_800DDD8C; +extern s32 D_800DDD90; +extern s32 D_800DDD9C; +extern s32 D_800DDDA0; +extern s32 D_800DDDC0; +extern s32 D_800DDDE8; +extern s32 D_800DDE10; +extern s32 D_800DDE44; +extern s32 D_800DDE48; +extern s32 D_800DDE4C; +extern s32 D_800DDE54; +extern s32 D_800DDE60; +extern s32 D_800DDE84; +extern s32 D_800DDE88; +extern s32 D_800DDE8C; +extern s32 D_800DDF14; +extern s32 D_800DDF20; +extern s32 D_800DDF64; +extern s32 D_800DDF69; +extern s32 D_800DDF6A; +extern s32 D_800DDF6B; +extern s32 D_800DDF6F; +extern s32 D_800DDF70; +extern s32 D_800DDF71; +extern s32 D_800DDF72; +extern s32 D_800DDF73; +extern s32 D_800DDF7C; +extern s32 D_800DDF80; +extern s32 D_800DDF84; +extern s32 D_800DDF98; +extern s32 D_800DDFA4; +extern s32 D_800DDFB0; +extern s32 D_800DE010; +extern s32 D_800DE01C; +extern s32 D_800DE020; +extern s32 D_800DE024; +extern s32 D_800DE028; +extern s32 D_800DE02C; +extern s32 D_800DE030; +extern s32 D_800DE034; +extern s32 D_800DE038; +extern s32 D_800DE03C; +extern s32 D_800DE040; +extern s32 D_800DE041; +extern s32 D_800DE048; +extern s32 D_800DF088; +extern s32 D_800DF090; +extern s32 D_800DF0D0; +extern s32 D_800DF0E0; +extern s32 D_800DF0E1; +extern s32 D_800DF0E4; +extern s32 D_800DF0E8; +extern s32 D_800DF0EC; +extern s32 D_800DF0F0; +extern s32 D_800DF0F4; +extern s32 D_800DF0F8; +extern s32 D_800DF2F8; +extern s32 D_800DF6F8; +extern s32 D_800DF700; +extern s32 D_800DF70C; +extern s32 D_800DF7B4; +extern s32 D_800DF7C0; +extern s32 D_800DF7C4; +extern s32 D_800DF7CC; +extern s32 D_800DF7D0; +extern s32 D_800DF7D1; +extern s32 D_800DF7D2; +extern s32 D_800DF7D3; +extern s32 D_800DF9B3; +extern s32 D_800DF9B8; +extern s32 D_800E0148; +extern s32 D_800E03E0; +extern s32 D_800E08E0; +extern s32 D_800E08E4; +extern s32 D_800E08E8; +extern s32 D_800E08EC; +extern s32 D_800E08F0; +extern s32 D_800E0920; +extern s32 D_800E0A00; +extern s32 D_800E0A20; +extern s32 D_800E0A24; +extern s32 D_800E0A28; +extern s32 D_800E0A2C; +extern s32 D_800E0A30; +extern s32 D_800E0A31; +extern s32 D_800E0A34; +extern s32 D_800E0A70; +extern s32 D_800E0A74; +extern s32 D_800E0A80; +extern s32 D_800E0A82; +extern s32 D_800E0A84; +extern s32 D_800E0A85; +extern s32 D_800E0A86; +extern s32 D_800E0A88; +extern s32 D_800E0A8C; +extern s32 D_800E0A90; +extern s32 D_800E0A94; +extern s32 D_800E0A95; +extern s32 D_800E0A96; +extern s32 D_800E0A97; +extern s32 D_800E0A98; +extern s32 D_800E0A99; +extern s32 D_800E0AA0; +extern s32 D_800E0AA8; +extern s32 D_800E0AA9; +extern s32 D_800E0AAA; +extern s32 D_800E0AB0; +extern s32 D_800E0AB1; +extern s32 D_800E0AB2; +extern s32 D_800E0AB3; +extern s32 D_800E0AC0; +extern s32 D_800E0AC1; +extern s32 D_800E0AC2; +extern s32 D_800E0AC3; +extern s32 D_800E0AC4; +extern s32 D_800E0AD0; +extern s32 D_800E0AF0; +extern s32 D_800E0B88; +extern s32 D_800E0B8C; +extern s32 D_800E0B90; +extern s32 D_800E0B95; +extern s32 D_800E0B96; +extern s32 D_800E0B97; +extern s32 D_800E0B98; +extern s32 D_800E0B99; +extern s32 D_800E0B9A; +extern s32 D_800E0BA0; +extern s32 D_800E0BA4; +extern s32 D_800E0BA8; +extern s32 D_800E0BAC; +extern s32 D_800E0BB0; +extern s32 D_800E0BB1; +extern s32 D_800E0BB8; +extern s32 D_800E0BC8; +extern s32 D_800E0BCC; +extern s32 D_800E0BCE; +extern s32 D_800E0BD0; +extern s32 D_800E0BD1; +extern s32 D_800E0BD2; +extern s32 D_800E0BD3; +extern s32 D_800E0BD4; +extern s32 D_800E0BD8; +extern s32 D_800E0BDC; +extern s32 D_800E0BE0; +extern s32 D_800E0BE1; +extern s32 D_800E0BE2; +extern s32 D_800E0BE3; +extern s32 D_800E0BE6; +extern s32 D_800E0BE7; +extern s32 D_800E0BE9; +extern s32 D_800E0BEA; +extern s32 D_800E0BEB; +extern s32 D_800E0BEE; +extern s32 D_800E0BF4; +extern s32 D_800E0BFC; +extern s32 D_800E0C00; +extern s32 D_800E0C10; +extern s32 D_800E0C18; +extern s32 D_800E0C30; +extern s32 D_800E0C38; +extern s32 D_800E0C78; +extern s32 D_800E0C7C; +extern s32 D_800E0C80; +extern s32 D_800E0C81; +extern s32 D_800E0C82; +extern s32 D_800E0C83; +extern s32 D_800E0C84; +extern s32 D_800E0C85; +extern s32 D_800E0C88; +extern s32 D_800E0D20; +extern s32 D_800E0D84; +extern s32 D_800E0D88; +extern s32 D_800E0D8C; +extern s32 D_800E0D8E; +extern s32 D_800E0D90; +extern s32 D_800E0D92; +extern s32 D_800E0D94; +extern s32 D_800E0D96; +extern s32 D_800E0D98; +extern s32 D_800E0D9A; +extern s32 D_800E0D9C; +extern s32 D_800E0D9E; +extern s32 D_800E0DA0; +extern s32 D_800E0DA2; +extern s32 D_800E0DA4; +extern s32 D_800E0DA8; +extern s32 D_800E0DAC; +extern s32 D_800E0DDC; +extern s32 D_800E0DE8; +extern s32 D_800E0DEC; +extern s32 D_800E0DF0; +extern s32 D_800E0DF4; +extern s32 D_800E0DF8; +extern s32 D_800E0E08; +extern s32 D_800E0E19; +extern s32 D_800E0E38; +extern s32 D_800E0EC8; +extern s32 D_800E0FE8; +extern s32 D_800E1078; +extern s32 D_800E1080; +extern s32 D_800E1480; +extern s32 D_800E1880; +extern s32 D_80E; +extern s32 D_82F; +extern s32 D_830; +extern s32 D_843; +extern s32 D_85D; +extern s32 D_87B; +extern s32 D_887; +extern s32 D_888; +extern s32 D_88C; +extern s32 D_891; +extern s32 D_89470; +extern s32 D_89C; +extern s32 D_A0000000; +extern s32 D_A0000010; +extern s32 D_A0000020; +extern s32 D_A0000030; +extern s32 D_A4040000; +extern s32 D_A4040004; +extern s32 D_A4040008; +extern s32 D_A404000C; +extern s32 D_A4040010; +extern s32 D_A4080000; +extern s32 D_A4300000; +extern s32 D_A4300008; +extern s32 D_A430000C; +extern s32 D_A4400000; +extern s32 D_A4400004; +extern s32 D_A4400008; +extern s32 D_A440000C; +extern s32 D_A4400010; +extern s32 D_A4400014; +extern s32 D_A4400018; +extern s32 D_A440001C; +extern s32 D_A4400020; +extern s32 D_A4400024; +extern s32 D_A4400028; +extern s32 D_A440002C; +extern s32 D_A4400030; +extern s32 D_A4400034; +extern s32 D_A4500000; +extern s32 D_A4500004; +extern s32 D_A4500008; +extern s32 D_A450000C; +extern s32 D_A4500010; +extern s32 D_A4500014; +extern s32 D_A4600000; +extern s32 D_A4600004; +extern s32 D_A4600008; +extern s32 D_A460000C; +extern s32 D_A4600010; +extern s32 D_A4600024; +extern s32 D_A4600028; +extern s32 D_A460002C; +extern s32 D_A4600030; +extern s32 D_A48; +extern s32 D_A4800000; +extern s32 D_A4800004; +extern s32 D_A4800010; +extern s32 D_A4800018; +extern s32 D_A5000508; +extern s32 D_A5000510; +extern s32 D_AB1950; +extern s32 D_C3E98; +extern s32 D_CF1; +extern s32 D_CF2; +extern s32 D_D0F; +extern s32 D_D10; +extern s32 D_D13; +extern s32 D_D14; +extern s32 D_D16; + +#endif diff --git a/conker/include/functions.h b/conker/include/functions.h index 382b468..6b3cac7 100644 --- a/conker/include/functions.h +++ b/conker/include/functions.h @@ -1127,4 +1127,16 @@ void func_151EF954(f32 arg0[4][4], f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 a void func_151F3C4C(void); void func_151FA130(void); void func_1019EA88(void); + +void func_151BC5A4(struct102 *arg0); +void *func_15167A68(s32 arg0, s32 arg1, s32 arg2, s32 arg3, u8 arg4, s32 arg5); +f32 func_150ADA68(void); +void func_15143134(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void func_100111C8(u16 arg0); +void func_15145EA4(s32 *arg0, s32 *arg1, s32 arg2, s32 arg3); +void func_1513A5E0(s32 arg0, u8 arg1, s32 arg2); + +/* Auto-generated function declarations for remaining undefined functions */ +#include "auto_funcs.h" + #endif diff --git a/conker/include/macro.inc b/conker/include/macro.inc index b02b19d..50c2992 100644 --- a/conker/include/macro.inc +++ b/conker/include/macro.inc @@ -19,3 +19,9 @@ .global \label \label: .endm + +.macro nonmatching label, size +.endm + +.macro enddlabel label +.endm diff --git a/conker/include/structs.h b/conker/include/structs.h index e601787..bbcbc3b 100644 --- a/conker/include/structs.h +++ b/conker/include/structs.h @@ -670,6 +670,27 @@ typedef struct { u8 unk3A; u8 pad3B[0x2]; u8 unk3D; + u8 pad3E[0x2]; + u16 unk40; + u8 pad42[0x2]; + u16 unk44; + u8 pad46[0xA]; + u8 unk50; + u8 pad51[0x3]; + s16 unk54; + u8 pad56[0x6]; + u8 unk5C; + u8 pad5D[0x3]; + s32 unk60; + u8 pad64[0x10]; + f32 unk74; + u8 pad78[0xB0]; + f32 unk128; + f32 unk12C; + u8 pad130[0x40]; + s32 unk170; + u8 pad174[0x60]; + s32 unk1D4; } struct102; typedef struct { diff --git a/conker/include/variables.h b/conker/include/variables.h index 29508e7..2d61408 100644 --- a/conker/include/variables.h +++ b/conker/include/variables.h @@ -425,6 +425,12 @@ extern s32 D_80089534[]; extern s16 D_80089550; extern void (*D_80089AAC[10])(void); extern void (*D_80089AD4[10])(void); +extern void (*D_80089B70[])(struct102 *arg0); +extern void (*D_80089B88[])(struct102 *arg0); +extern f32 D_800A4828; +extern f32 D_800A461C; +extern f32 D_800A4620; +extern s32 D_800A3FD8; extern void (*D_80089C44[])(void); extern void (*D_80089C54[])(void); extern void (*D_80089EE8[])(void); @@ -687,6 +693,7 @@ extern u8 D_800A3FBC[]; // "../Effects/Blood/blood.c" extern s32 D_800A4AA0; //? extern f32 D_800A5168; extern f32 D_800A5178; +extern f32 D_800A45B0; extern f32 D_800A45B4; extern f32 D_800A5644; extern f32 D_800A56A8; @@ -1429,4 +1436,7 @@ extern s32 D_151F3C4C; extern u16 D_BC000C02; extern s32 D_1FC007FC; +/* Auto-generated declarations for remaining undefined symbols */ +#include "auto_vars.h" + #endif diff --git a/conker/src/game_161520.c b/conker/src/game_161520.c index 2c5e618..6c979e6 100644 --- a/conker/src/game_161520.c +++ b/conker/src/game_161520.c @@ -2,6 +2,14 @@ #include "functions.h" #include "variables.h" +void func_1513555C(struct102 *arg0, s32 *arg1, u8 arg2); +void func_151355B8(struct102 *arg0, s32 *arg1, u8 arg2); +s32 func_15134070(struct102 *arg0); +void func_15138120(struct102 *arg0, s32 arg1, s32 arg2); +void func_151382E0(s32 *arg0, s32 arg1, s32 *arg2, u8 arg3, s32 arg4); +void func_15138424(struct102 *arg0, s32 *arg1, s32 arg2, s32 *arg3, u8 arg4, s32 arg5); +void func_1504715C(s32 *arg0, struct102 *arg1); + // requires jump table #pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15134070.s") @@ -90,39 +98,182 @@ void func_1513477C(struct102 *arg0) { #pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_151347CC.s") -#pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_151348F0.s") +void func_151348F0(f32 arg0, f32 arg1, s32 arg2, s32 arg3) { + +} -#pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15134908.s") +void *func_15134908(void *arg0, s32 arg1, u8 arg2, s32 arg3) { + void *temp; + temp = func_15167A68(0x2A, arg3, arg1 + 0x40, 1, arg2, 1); + if (temp == NULL) { + return NULL; + } + *(u8*)((u8*)arg0 + 0x16) |= 2; + memcpy((u8*)temp + 0x10, arg0, 0x1C); + *(f32*)((u8*)temp + 0x2C) = *(f32*)(*(s32*)((u8*)temp + 0x10)); + *(f32*)((u8*)temp + 0x30) = *(f32*)(*(s32*)((u8*)temp + 0x14)); + *(f32*)((u8*)temp + 0x34) = *(f32*)(*(s32*)((u8*)temp + 0x18)); + *(f32*)((u8*)temp + 0x38) = 1.0f / (2.0f * *(f32*)((u8*)temp + 0x1C)); + *(f32*)((u8*)temp + 0x3C) = 0.0f; + return temp; +} #pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_151349D0.s") +// near match: u8 truncation + extra sw a1 (15 vs 14 instr) #pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15134C98.s") -#pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15134CD4.s") +void func_15134CD4(f32 arg0, f32 arg1, s32 arg2, s32 arg3) { + +} + +s32 func_15134CEC(struct102 *arg0) { + f32 *sptr = &D_800BE9A4; + s32 alpha = *(u8*)((u8*)arg0 + 0x2E); -#pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15134CEC.s") + *(f32*)((u8*)arg0 + 0x70) += 0.125f * *sptr; + arg0->unk74 += D_800A45B0 * *sptr; + *(f32*)((u8*)arg0 + 0x14) += *(f32*)((u8*)arg0 + 0x70) * *sptr; + *(f32*)((u8*)arg0 + 0x1C) += arg0->unk74 * *sptr; -#pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15134DAC.s") + if (*(f32*)((u8*)arg0 + 0x14) > 130.0f) { + return 0; + } + + alpha -= D_800BE9E4 * 2; + if (alpha < 0) { + return 0; + } + *(u8*)((u8*)arg0 + 0x2E) = alpha; + return 1; +} + +void *func_15134DAC(s32 arg0, s32 arg1) { + void *temp = func_15167A68(0x29, 0, arg1 + 0x80, 1, 0xFF, 1); + if (temp == NULL) { + return NULL; + } + memcpy((u8*)temp + 0x18, (void*)arg0, 0x3C); *(s16*)((u8*)temp + 0x54) = -*(s16*)(arg0 + 0x28); + *(s32*)((u8*)temp + 0x10) = 1; + *(s32*)((u8*)temp + 0x14) = 0; + *(f32*)((u8*)temp + 0x70) = 0.0f; + *(f32*)((u8*)temp + 0x74) = 0.0f; + *(f32*)((u8*)temp + 0x78) = 0.0f; + return temp; +} #pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15134E48.s") -#pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_151352EC.s") +void func_151352EC(struct102 *arg0) { + func_15169804(arg0); +} -#pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_1513530C.s") +void func_1513530C(struct102 *arg0) { + func_15169824(arg0); +} -#pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_1513532C.s") +void func_1513532C(struct102 *arg0) { + s32 pad; + s32 idx = arg0->unk50; + if (idx < 0) { + idx = 0; + } else if (idx >= 6) { + idx = 0; + } + if (arg0->unk44 != 0) { + func_100111C8(arg0->unk44); + arg0->unk44 = 0; + } + D_80089B70[idx](arg0); +} -#pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_151353A8.s") +void func_151353A8(struct102 *arg0) { + s32 pad; + s32 idx = arg0->unk50; + if (idx < 0) { + idx = 0; + } else if (idx >= 6) { + idx = 0; + } + if (arg0->unk44 != 0) { + func_100111C8(arg0->unk44); + arg0->unk44 = 0; + } + D_80089B88[idx](arg0); +} -#pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15135424.s") +void func_15135424(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + s32 sp20[2]; + s32 sp18[2]; + sp20[0] = arg1; + sp20[1] = arg2; + sp18[0] = arg3; + sp18[1] = arg4; + func_15145EA4(sp20, sp18, arg0, 2); +} -#pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15135480.s") +void func_15135480(struct102 *arg0, s32 *arg1, u8 arg2) { + s32 v1; + s32 v0; + if (arg2 == 0x2D) { + v1 = arg1[0]; + v0 = *(s32*)((u8*)arg0 + 0x1C); + if (v1 == v0) { + *(s32*)((u8*)arg0 + 0x1C) = arg1[1]; + *(u8*)((u8*)arg0 + 0x18) = *(u8*)((u8*)arg1 + 9); + } else if (arg1[1] == v0) { + *(s32*)((u8*)arg0 + 0x1C) = v1; + *(u8*)((u8*)arg0 + 0x18) = *(u8*)((u8*)arg1 + 8); + } + } + v0 = *(u8*)((u8*)arg0 + 0x50); + switch (v0) { + case 1: + func_151355B8(arg0, arg1, arg2); + break; + case 2: + func_1513555C(arg0, arg1, arg2); + break; + default: + if (arg2 != 0) { + break; + } + if (arg1[0] == *(s32*)((u8*)arg0 + 0x1C) || *(u8*)((u8*)arg1 + 4) == *(u8*)((u8*)arg0 + 0x18)) { + func_1516972C(arg0); + } + break; + } +} -#pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_1513555C.s") +void func_1513555C(struct102 *arg0, s32 *arg1, u8 arg2) { + if (arg2 == 0 || arg2 == 0x12) { + if (arg1[0] == *(s32*)((u8*)arg0 + 0x1C) || *(u8*)((u8*)arg1 + 4) == *(u8*)((u8*)arg0 + 0x18)) { + func_1516972C(arg0); + } + } +} -#pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_151355B8.s") +void func_151355B8(struct102 *arg0, s32 *arg1, u8 arg2) { + switch (arg2) { + case 0: + if (arg1[0] == *(s32*)((u8*)arg0 + 0x1C) || *(u8*)((u8*)arg1 + 4) == *(u8*)((u8*)arg0 + 0x18)) { + func_1516972C(arg0); + } + break; + case 3: + if (arg1[0] == *(s32*)((u8*)arg0 + 0x1C) || *(u8*)((u8*)arg1 + 4) == *(u8*)((u8*)arg0 + 0x18)) { + s32 val = *(s32*)((u8*)arg0 + 0x10) & ~1; + *(s32*)((u8*)arg0 + 0x10) = val; + *(s32*)((u8*)arg0 + 0x10) = val; + } + break; + } +} -#pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15135658.s") +s32 func_15135658(s32 *arg0) { + *(f32*)((u8*)arg0 + 0x74) = 1.0f; + return 1; +} f32 func_15135670(s32 arg0) { // "power", "../Effects/Blood/blood.c" @@ -139,13 +290,59 @@ f32 func_15135670(s32 arg0) { #pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15136698.s") -#pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_151368A8.s") +s32 func_151368A8(struct102 *arg0) { + f32 *vel = &arg0->unk128; + s16 temp = arg0->unk1C; + if (temp < 32) { + s32 val = temp * 8; + if (val < arg0->unk5C) { + arg0->unk5C = (u8)val; + } + } + *(f32*)&arg0->unk2C += *vel * D_800BE9A4; + *(f32*)&arg0->unk30 += *vel * D_800BE9A4; + return 1; +} #pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15136918.s") -#pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15136A1C.s") +s32 func_15136A1C(struct102 *arg0) { + s16 temp_v0 = arg0->unk1C; + if (temp_v0 < 32) { + s32 temp_v1 = temp_v0 * 8; + if (temp_v1 < arg0->unk28) { + arg0->unk28 = temp_v1; + } + } + return 1; +} -#pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15136A50.s") +void func_15136A50(s32 arg0, s32 arg1, s32 arg2, s16 arg3, u8 arg4, s32 arg5) { + struct { + s32 unk0; + s32 unk4; + s32 unk8; + f32 unkC; + f32 unk10; + s16 unk14; + u8 unk16; + u8 unk17; + u8 unk18; + s8 unk19; + } sp; + + sp.unkC = D_800A461C; + sp.unk0 = arg0; + sp.unk4 = arg1; + sp.unk8 = arg2; + sp.unk10 = D_800A4620; + sp.unk14 = arg3; + sp.unk16 = 5; + sp.unk17 = 5; + sp.unk18 = 2; + sp.unk19 = -1; + func_15134908(&sp, 0, arg4, arg5); +} #pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15136AE4.s") @@ -159,13 +356,26 @@ f32 func_15135670(s32 arg0) { #pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15137C64.s") -#pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15137E10.s") +s32 func_15137E10(struct102 *arg0) { + arg0->unk74 = (func_150ADA68() * 50.0f + 580.0f) * D_800A4828; + return 1; +} #pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15137E60.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15137F30.s") -#pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_151380B4.s") +s32 func_151380B4(struct102 *arg0, s32 arg1, s32 arg2) { + s32 temp = arg0->unk1D4; + if (temp == 0) { + return 0; + } + if ((*(u8*)((u8*)arg0 + 0x74) & 0xF) == 0xF) { + return 0; + } + func_15143134((arg1 << 4) + (s32)&D_800A3FD8, arg2, temp + 0x300, arg1); + return 1; +} #pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15138120.s") @@ -175,6 +385,8 @@ f32 func_15135670(s32 arg0) { #pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_151389A8.s") +// NEAR MATCH: frame 0x68 vs 0x60 - s32 result forces s1+stack, removing it gives 0x58 +// near match: frame 0x68 vs 0x60 (all instructions match, +8 bytes from -g3) #pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15138BC0.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_15138C80.s") @@ -191,6 +403,7 @@ f32 func_15135670(s32 arg0) { #pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_1513A48C.s") +// near match: dead branch (19 vs 16 instr, lw+beqz eliminated by -O2) #pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_1513A594.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_1513A5E0.s") @@ -199,6 +412,13 @@ f32 func_15135670(s32 arg0) { #pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_1513ABB8.s") -#pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_1513B0B8.s") +void func_1513B0B8(struct102 *arg0, s32 arg1, u8 arg2) { + s32 *ptr = &arg0->unk170; + if (arg2 == 0x45) { + if (--*ptr < 0) { + arg0->unk60 |= 0x80; + } + } +} #pragma GLOBAL_ASM("asm/nonmatchings/game_161520/func_1513B0F8.s") diff --git a/conker/src/game_16EE20.c b/conker/src/game_16EE20.c index 46dc83c..ec1b797 100644 --- a/conker/src/game_16EE20.c +++ b/conker/src/game_16EE20.c @@ -95,17 +95,38 @@ s32 func_151422F8(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15142838.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15142914.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_151429E0.s") -#pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15142A5C.s") -#pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15142A80.s") -#pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15142AC0.s") -#pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15142B04.s") -#pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15142B44.s") +s32 func_15142A5C(s32 *arg0) { + s32 *p = *(s32**)((u8*)arg0 + 0x2D0); + s32 v0 = 0; + if (*(s16*)((u8*)p + 0x3C) > 0) { + return 1; + } + return v0; +} +extern f32 D_800A5624; + +f32 func_15142A80(f32 arg0) { + return (1.0f - arg0) * (arg0 - 2.0f) * arg0 * D_800A5624; +} +f32 func_15142AC0(f32 arg0) { + return (arg0 + 1.0f) * (arg0 - 1.0f) * (arg0 - 2.0f) * 0.5f; +} +f32 func_15142B04(f32 arg0) { + return (2.0f - arg0) * (arg0 + 1.0f) * arg0 * 0.5f; +} +extern f32 D_800A5628; + +f32 func_15142B44(f32 arg0) { + return (arg0 + 1.0f) * (arg0 - 1.0f) * arg0 * D_800A5628; +} #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15142B7C.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15142C10.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15142CF0.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15142E24.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15142FBC.s") -#pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15143044.s") +s16 func_15143044(u8 arg0, s32 arg1) { + return (s16)(0x7FFF - arg0); +} #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_1514306C.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15143134.s") @@ -169,6 +190,7 @@ s32 func_151422F8(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15143874.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_151438D8.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15143D18.s") +// near match: extra sw a0,0(sp) + beqz vs beqzl #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15143DA8.s") s32 func_15143E08(struct127 *arg0) { @@ -176,19 +198,29 @@ s32 func_15143E08(struct127 *arg0) { } #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15143E24.s") -#pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15143E64.s") +f32 func_15143E64(f32 *arg0) { + f32 x = arg0[0]; + f32 y = arg0[1]; + f32 z = arg0[2]; + return sqrtf(x * x + y * y + z * z); +} #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15143E94.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_1514401C.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_151441A4.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_151442FC.s") +// near match: loop structure #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_151444DC.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15144528.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15144598.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_1514462C.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_1514470C.s") -#pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15144A74.s") +f32 func_15144A74(f32 *arg0, f32 *arg1) { + return arg0[0] * arg1[0] + arg0[1] * arg1[1] + arg1[2] * arg0[2]; +} #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15144AA8.s") -#pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15144B34.s") +f32 *func_15144B34(s32 arg0) { + return &D_800DBFF0[arg0].unk2F8; +} #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15144B68.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_16EE20/func_15144BC8.s") diff --git a/conker/src/game_1944C0.c b/conker/src/game_1944C0.c index c012c69..8bf9c6c 100644 --- a/conker/src/game_1944C0.c +++ b/conker/src/game_1944C0.c @@ -34,7 +34,10 @@ #pragma GLOBAL_ASM("asm/nonmatchings/game_1944C0/func_1516865C.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_1944C0/func_15168800.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_1944C0/func_15168870.s") -#pragma GLOBAL_ASM("asm/nonmatchings/game_1944C0/func_15168A2C.s") +void func_15168B10(s32, s32); +void func_15168A2C(s32 arg0) { + func_15168B10(arg0, 0); +} #pragma GLOBAL_ASM("asm/nonmatchings/game_1944C0/func_15168A4C.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_1944C0/func_15168A9C.s") // void *func_15168A9C(struct12 *arg0) { @@ -67,7 +70,14 @@ void func_15168B10(s32 arg0, s32 arg1) { #pragma GLOBAL_ASM("asm/nonmatchings/game_1944C0/func_15168BAC.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_1944C0/func_15168BE4.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_1944C0/func_15168C4C.s") -#pragma GLOBAL_ASM("asm/nonmatchings/game_1944C0/func_15168E34.s") +void func_15168E34(s32 *arg0, s32 arg1) { + s32 temp_v0; + + temp_v0 = *arg0; + if (!(temp_v0 & 0x0F000000)) { + *arg0 = temp_v0 + arg1; + } +} #pragma GLOBAL_ASM("asm/nonmatchings/game_1944C0/func_15168E54.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_1944C0/func_15168F08.s") #pragma GLOBAL_ASM("asm/nonmatchings/game_1944C0/func_15168F84.s") diff --git a/conker/src/game_981E0.c b/conker/src/game_981E0.c index 11eac3a..859af29 100644 --- a/conker/src/game_981E0.c +++ b/conker/src/game_981E0.c @@ -797,7 +797,19 @@ void func_1506EE38(void) { D_800D154C->unk25C &= ~D_800D1580; } -#pragma GLOBAL_ASM("asm/nonmatchings/game_981E0/func_1506EE60.s") +s32 func_15188810(struct127 *, s32, s32); /* extern */ +s32 func_15188A9C(struct127 *, s32); /* extern */ + +void func_1506EE60(void) { + s32 temp_a1; + + temp_a1 = D_800D1580 & 0xFFFF; + if (D_800D1580 != 0) { + func_15188810(D_800D154C, temp_a1, (s32) D_800D1580 >> 0x10); + return; + } + func_15188A9C(D_800D154C, temp_a1); +} // NON-MATCHING: same issue as earlier // void func_1506EE60(void) { // s32 temp_a1; @@ -1449,7 +1461,10 @@ void func_15072AF8(void) { } #pragma GLOBAL_ASM("asm/nonmatchings/game_981E0/func_15072B44.s") -#pragma GLOBAL_ASM("asm/nonmatchings/game_981E0/func_15072DA0.s") +void func_15072DA0(void) { + D_800D154C->unk2F8 &= 0xFFF8; + D_800D154C->unk2F8 |= D_800D1580; +} void func_15072DD8(void) { func_15083568(D_800D154C, D_800D1580, 1.0f, 0); diff --git a/conker/tools/gen_expected.sh b/conker/tools/gen_expected.sh new file mode 100755 index 0000000..642d7e8 --- /dev/null +++ b/conker/tools/gen_expected.sh @@ -0,0 +1,53 @@ +#!/bin/bash +# Generate expected .o files from nonmatchings assembly for objdiff comparison. +# Usage: ./tools/gen_expected.sh +# Example: ./tools/gen_expected.sh game_161520 +# +# This creates build/expected/.o by assembling all original +# asm functions from asm/nonmatchings// into a single .o file. + +set -euo pipefail + +if [ $# -lt 1 ]; then + echo "Usage: $0 " + echo "Example: $0 game_161520" + exit 1 +fi + +BASENAME="$1" +ASM_DIR="asm/nonmatchings/${BASENAME}" +EXPECTED_DIR="build/expected" +COMBINED_ASM="${EXPECTED_DIR}/${BASENAME}.s" +OUTPUT_O="${EXPECTED_DIR}/${BASENAME}.o" + +AS="${CROSS:-mips-linux-gnu-}as" +ASFLAGS="-EB -mtune=vr4300 -march=vr4300 -mabi=32 -Iinclude" + +if [ ! -d "${ASM_DIR}" ]; then + echo "Error: Assembly directory ${ASM_DIR} not found" + exit 1 +fi + +mkdir -p "${EXPECTED_DIR}" + +# Create combined assembly file +{ + echo ".include \"include/macro.inc\"" + echo ".set noat" + echo ".set noreorder" + echo ".set gp=64" + echo "" + echo ".section .text" + echo "" + # Include all function asm files in sorted order (by address) + for f in $(ls "${ASM_DIR}"/*.s | sort); do + echo "/* $(basename "$f") */" + cat "$f" + echo "" + done +} > "${COMBINED_ASM}" + +# Assemble +${AS} ${ASFLAGS} -o "${OUTPUT_O}" "${COMBINED_ASM}" + +echo "Generated ${OUTPUT_O}" diff --git a/conker/tools/gen_progress.py b/conker/tools/gen_progress.py new file mode 100644 index 0000000..9c5447d --- /dev/null +++ b/conker/tools/gen_progress.py @@ -0,0 +1,107 @@ +#!/usr/bin/env python3 +"""Generate PROGRESS.md with decompilation status per file.""" +import re, os + +os.chdir(os.path.dirname(os.path.abspath(__file__)) + "/..") + +files = {} +for root, dirs, filenames in os.walk("src"): + for fn in sorted(filenames): + if not fn.endswith(".c"): + continue + path = os.path.join(root, fn) + rel = os.path.relpath(path, ".") + asm_count = 0 + c_count = 0 + asm_funcs = [] + c_funcs = [] + for line in open(path): + m = re.search(r'GLOBAL_ASM\("asm/nonmatchings/([^/]+)/(\w+)\.s"\)', line) + if m: + asm_count += 1 + folder, fname = m.group(1), m.group(2) + apath = f"asm/nonmatchings/{folder}/{fname}.s" + if os.path.exists(apath): + lines = sum(1 for _ in open(apath)) + asm_funcs.append((fname, lines)) + m2 = re.match(r"^(?:void|s32|u32|f32|u8|s8|s16|u16|struct\w*\s*\*?)\s+(func_\w+)\s*\(", line) + if m2: + c_count += 1 + c_funcs.append(m2.group(1)) + total = asm_count + c_count + if total == 0: + continue + pct = c_count * 100 // total + files[rel] = { + "asm": asm_count, "c": c_count, "total": total, "pct": pct, + "asm_funcs": sorted(asm_funcs, key=lambda x: x[1]), + "c_funcs": c_funcs, + "name": os.path.basename(path), + } + +by_priority = sorted(files.items(), key=lambda x: (-x[1]["pct"], x[1]["asm"])) +total_asm = sum(v["asm"] for v in files.values()) +total_c = sum(v["c"] for v in files.values()) +total_all = total_asm + total_c + +with open("PROGRESS.md", "w") as f: + f.write("# Conker's Bad Fur Day - Decompilation Progress\n\n") + f.write("## Gesamtfortschritt\n\n") + f.write("| | Anzahl | Anteil |\n|---|--------|--------|\n") + f.write(f"| Decompilierte Funktionen | {total_c} | {total_c*100//total_all}% |\n") + f.write(f"| Offene GLOBAL_ASM | {total_asm} | {total_asm*100//total_all}% |\n") + f.write(f"| **Gesamt** | **{total_all}** | |\n\n") + + f.write("## Was bedeutet decompilieren?\n\n") + f.write("Jede Funktion im Spiel liegt als kompilierter MIPS-Assembler vor.\n") + f.write("Decompilieren = den Assembler in C-Code uebersetzen, der byte-identischen Maschinencode erzeugt.\n\n") + f.write("Wir arbeiten **dateiweise**. Jede `.c`-Datei entspricht einer Original-Quelldatei des Spiels.\n") + f.write("Eine Datei ist fertig wenn alle `GLOBAL_ASM` durch matchenden C-Code ersetzt sind.\n\n") + + f.write("## Workflow\n\n") + f.write("```\n") + f.write("1. m2c Startpunkt: python3 tools/auto_decomp.py FUNC --dry-run\n") + f.write("2. Code einfuegen: GLOBAL_ASM in src/DATEI.c ersetzen\n") + f.write("3. Kompilieren: make CROSS=mips64-linux-gnu-\n") + f.write("4. Diff pruefen: python3 ../tools/asm-differ/diff.py -mw FUNC\n") + f.write("5. Iterieren bis OK\n") + f.write("```\n\n") + + # Almost done + f.write("## Fast fertig (1-3 Funktionen offen)\n\n") + f.write("| Datei | Offen | Fertig | % |\n|-------|-------|--------|---|\n") + for path, info in by_priority: + if 1 <= info["asm"] <= 3: + f.write(f"| `{info['name']}` | {info['asm']} | {info['c']} | {info['pct']}% |\n") + + f.write("\n## In Arbeit (4-15 offen)\n\n") + f.write("| Datei | Offen | Fertig | % |\n|-------|-------|--------|---|\n") + for path, info in by_priority: + if 4 <= info["asm"] <= 15: + f.write(f"| `{info['name']}` | {info['asm']} | {info['c']} | {info['pct']}% |\n") + + f.write("\n## Grosse Dateien (16+ offen)\n\n") + f.write("| Datei | Offen | Fertig | % |\n|-------|-------|--------|---|\n") + for path, info in by_priority: + if info["asm"] >= 16: + f.write(f"| `{info['name']}` | {info['asm']} | {info['c']} | {info['pct']}% |\n") + + done = [info["name"] for _, info in by_priority if info["asm"] == 0] + f.write(f"\n## Komplett fertig ({len(done)} Dateien)\n\n") + for d in done: + f.write(f"- `{d}`\n") + + # Detail + f.write("\n---\n\n## Detail: Offene Funktionen\n\n") + for path, info in by_priority: + if info["asm"] == 0: + continue + f.write(f"### `{info['name']}` ({info['asm']} offen, {info['pct']}%)\n\n") + if info["asm_funcs"]: + f.write("| Funktion | ASM-Zeilen | Schwierigkeit |\n|----------|-----------|---------------|\n") + for fname, lines in info["asm_funcs"]: + diff = "Trivial" if lines <= 20 else "Einfach" if lines <= 50 else "Mittel" if lines <= 100 else "Schwer" if lines <= 200 else "Sehr schwer" + f.write(f"| `{fname}` | {lines} | {diff} |\n") + f.write("\n") + +print(f"PROGRESS.md: {total_c} decompiliert, {total_asm} offen, {len(done)} Dateien fertig") diff --git a/conker/tools/score_functions.py b/conker/tools/score_functions.py new file mode 100755 index 0000000..fd19b82 --- /dev/null +++ b/conker/tools/score_functions.py @@ -0,0 +1,359 @@ +#!/usr/bin/env python3 +""" +Score and rank remaining GLOBAL_ASM functions by estimated decompilation difficulty. + +Usage: python3 tools/score_functions.py src/game_161520.c +""" + +import argparse +import os +import re +import sys +from collections import Counter +from pathlib import Path + +# Instruction categories +BRANCH_INSTRS = { + "beq", "bne", "beqz", "bnez", "bgtz", "bgez", "bltz", "blez", + "bgezal", "bltzal", "bgezl", "bltzl", "beql", "bnel", "bgtzl", "blezl", + "bc1t", "bc1f", "bc1tl", "bc1fl", +} +FLOAT_INSTRS = { + "mtc1", "mfc1", "lwc1", "swc1", "ldc1", "sdc1", + "add.s", "sub.s", "mul.s", "div.s", "neg.s", "abs.s", "sqrt.s", + "mov.s", "cvt.s.w", "cvt.w.s", "cvt.s.d", "cvt.d.s", "cvt.d.w", "cvt.w.d", + "add.d", "sub.d", "mul.d", "div.d", "neg.d", "abs.d", "sqrt.d", "mov.d", + "c.lt.s", "c.le.s", "c.eq.s", "c.lt.d", "c.le.d", "c.eq.d", + "trunc.w.s", "trunc.w.d", "round.w.s", "ceil.w.s", "floor.w.s", +} +MULDIV_INSTRS = {"mult", "multu", "div", "divu", "dmult", "dmultu", "ddiv", "ddivu"} + +# Regex to extract the mnemonic from an asm line like: +# /* 161520 15134070 90820004 */ lbu $v0, 0x4($a0) +RE_INSTR = re.compile(r"/\*[^*]*\*/\s+(\S+)") +# Memory offset pattern: 0x1234($reg) or decimal($reg) +RE_MEM_OFFSET = re.compile(r"(-?0x[0-9a-fA-F]+|-?\d+)\(\$\w+\)") +# GLOBAL_ASM pragma +RE_GLOBAL_ASM = re.compile(r'#pragma\s+GLOBAL_ASM\("([^"]+)"\)') + + +def parse_asm_file(filepath): + """Parse a .s assembly file and return analysis metrics.""" + if not os.path.isfile(filepath): + return None + + with open(filepath, "r") as f: + lines = f.readlines() + + instr_count = 0 + branch_count = 0 + call_count = 0 + float_ops = 0 + muldiv_ops = 0 + has_jump_table = False + mem_offsets = set() + instr_sequence = [] # for similarity matching + + for line in lines: + stripped = line.strip() + + # Check for jump table references + if "jtbl_" in stripped or "jtbl " in stripped: + has_jump_table = True + if re.match(r"\s*glabel\s+\.L\w+_game_data", stripped): + has_jump_table = True + + # Parse instruction lines + m = RE_INSTR.search(stripped) + if not m: + continue + + mnemonic = m.group(1).lower() + + # Skip pseudo-labels (glabel, .L*, etc.) + if mnemonic in ("glabel", ".text", ".set", ".balign", ".type", ".size", + ".globl", ".ent", ".end", ".word", ".space"): + continue + if mnemonic.startswith("."): + continue + + instr_count += 1 + instr_sequence.append(mnemonic) + + if mnemonic in BRANCH_INSTRS: + branch_count += 1 + if mnemonic == "jal": + call_count += 1 + if mnemonic in FLOAT_INSTRS: + float_ops += 1 + if mnemonic in MULDIV_INSTRS: + muldiv_ops += 1 + + # Collect memory offsets + for off_match in RE_MEM_OFFSET.finditer(stripped): + mem_offsets.add(off_match.group(1)) + + return { + "instr_count": instr_count, + "branch_count": branch_count, + "call_count": call_count, + "float_ops": float_ops, + "muldiv_ops": muldiv_ops, + "has_jump_table": has_jump_table, + "unique_offsets": len(mem_offsets), + "instr_sequence": instr_sequence, + } + + +def compute_score(metrics): + """ + Compute difficulty score. Lower = easier to decompile. + + Weights tuned for N64 MIPS decompilation experience: + - Base is instruction count (dominant factor) + - Branches add control flow complexity + - Jump tables are a major difficulty spike + - Function calls add interface complexity + - Float/muldiv add type complexity + - Many unique offsets suggest complex structs + """ + score = 0.0 + score += metrics["instr_count"] * 1.0 + score += metrics["branch_count"] * 3.0 + score += metrics["call_count"] * 2.0 + score += metrics["float_ops"] * 1.5 + score += metrics["muldiv_ops"] * 2.0 + score += metrics["unique_offsets"] * 1.0 + if metrics["has_jump_table"]: + score += 80.0 + return score + + +def find_decompiled_functions(source_file): + """ + Find functions in the source file that are NOT behind GLOBAL_ASM pragmas, + meaning they have already been decompiled. Return their instruction sequences + from corresponding .s files (if they still exist). + """ + # This is a best-effort approach: we look for function definitions in the + # source that are not GLOBAL_ASM. We cannot easily get asm for these, but + # we collect names for reference. + decompiled = [] + with open(source_file, "r") as f: + content = f.read() + + # Find all C function definitions (rough heuristic) + for m in re.finditer(r"^(?:(?:s32|u32|void|f32|s16|u16|s8|u8|struct\w*)\s*\*?\s+)?(func_[0-9a-fA-F]+)\s*\(", content, re.MULTILINE): + fname = m.group(1) + # Check it's not inside a GLOBAL_ASM pragma + # Find the line number + pos = m.start() + preceding = content[:pos] + lines_before = preceding.split("\n") + line_idx = len(lines_before) + # Check if the previous non-empty line is a GLOBAL_ASM + is_global_asm = False + for i in range(line_idx - 1, max(line_idx - 3, -1), -1): + if i >= 0 and i < len(lines_before): + l = lines_before[i].strip() + if l and "GLOBAL_ASM" in l: + is_global_asm = True + break + if not is_global_asm: + decompiled.append(fname) + + return decompiled + + +def similarity(seq_a, seq_b): + """ + Compute a rough similarity score between two instruction sequences + using instruction frequency distribution (cosine-like). + Returns a value between 0.0 and 1.0. + """ + if not seq_a or not seq_b: + return 0.0 + + counter_a = Counter(seq_a) + counter_b = Counter(seq_b) + + all_keys = set(counter_a) | set(counter_b) + dot = sum(counter_a.get(k, 0) * counter_b.get(k, 0) for k in all_keys) + mag_a = sum(v * v for v in counter_a.values()) ** 0.5 + mag_b = sum(v * v for v in counter_b.values()) ** 0.5 + + if mag_a == 0 or mag_b == 0: + return 0.0 + return dot / (mag_a * mag_b) + + +def main(): + parser = argparse.ArgumentParser( + description="Score and rank GLOBAL_ASM functions by decompilation difficulty." + ) + parser.add_argument( + "source_file", + help="Path to a .c source file (e.g. src/game_161520.c)", + ) + parser.add_argument( + "--top", "-n", + type=int, + default=0, + help="Show only top N easiest functions (0 = show all)", + ) + parser.add_argument( + "--sort", + choices=["score", "instrs", "branches", "calls"], + default="score", + help="Sort column (default: score)", + ) + parser.add_argument( + "--reverse", + action="store_true", + help="Reverse sort order (show hardest first)", + ) + args = parser.parse_args() + + # Resolve paths relative to project root + script_dir = Path(__file__).resolve().parent + project_root = script_dir.parent # conker/ + source_path = Path(args.source_file) + if not source_path.is_absolute(): + source_path = project_root / source_path + + if not source_path.is_file(): + print(f"Error: source file not found: {source_path}", file=sys.stderr) + sys.exit(1) + + # Read source file and find GLOBAL_ASM pragmas + with open(source_path, "r") as f: + source_content = f.read() + + asm_refs = RE_GLOBAL_ASM.findall(source_content) + if not asm_refs: + print("No #pragma GLOBAL_ASM found in this file.") + sys.exit(0) + + # Analyze each function + results = [] + for asm_path_str in asm_refs: + asm_path = project_root / asm_path_str + func_name = Path(asm_path_str).stem + + metrics = parse_asm_file(asm_path) + if metrics is None: + print(f" Warning: ASM file not found: {asm_path}", file=sys.stderr) + continue + + score = compute_score(metrics) + results.append({ + "name": func_name, + "score": score, + **metrics, + }) + + if not results: + print("No ASM files found to analyze.") + sys.exit(0) + + # Sort + sort_key = { + "score": "score", + "instrs": "instr_count", + "branches": "branch_count", + "calls": "call_count", + }[args.sort] + results.sort(key=lambda r: r[sort_key], reverse=args.reverse) + + if args.top > 0: + results = results[:args.top] + + # Find already decompiled functions for similarity comparison + decompiled_names = find_decompiled_functions(source_path) + basename = source_path.stem + asm_dir = project_root / "asm" / "nonmatchings" / basename + + # Load decompiled function asm sequences (if .s files still exist) + decompiled_sequences = {} + for dname in decompiled_names: + dpath = asm_dir / f"{dname}.s" + if dpath.is_file(): + dmetrics = parse_asm_file(dpath) + if dmetrics and dmetrics["instr_sequence"]: + decompiled_sequences[dname] = dmetrics["instr_sequence"] + + # Print header + total_global_asm = len(RE_GLOBAL_ASM.findall(source_content)) + total_funcs = total_global_asm + len(decompiled_names) + print(f"\nFile: {source_path.name}") + print(f"Functions: {len(decompiled_names)} decompiled, {total_global_asm} remaining, {total_funcs} total") + print() + + # Table header + hdr_name = "Function" + hdr_instr = "Instrs" + hdr_branch = "Branch" + hdr_calls = "Calls" + hdr_float = "Float" + hdr_jtbl = "JTbl" + hdr_offsets = "Offsets" + hdr_score = "Score" + hdr_similar = "Similar To" + + name_width = max(len(hdr_name), max(len(r["name"]) for r in results)) + sim_width = 20 + + fmt = ( + f" {{:<{name_width}}} {{:>6}} {{:>6}} {{:>5}} {{:>5}} {{:>4}} {{:>7}} {{:>7}}" + ) + fmt_sim = fmt + f" {{:<{sim_width}}}" + + header = fmt_sim.format( + hdr_name, hdr_instr, hdr_branch, hdr_calls, hdr_float, hdr_jtbl, hdr_offsets, hdr_score, hdr_similar + ) + print(header) + print(" " + "-" * (len(header) - 2)) + + for r in results: + # Find most similar decompiled function + best_sim = "" + best_sim_val = 0.0 + for dname, dseq in decompiled_sequences.items(): + sim = similarity(r["instr_sequence"], dseq) + if sim > best_sim_val: + best_sim_val = sim + best_sim = dname + + sim_str = "" + if best_sim_val >= 0.85: + sim_str = f"{best_sim} ({best_sim_val:.0%})" + + jtbl_str = "Y" if r["has_jump_table"] else "" + + line = fmt_sim.format( + r["name"], + r["instr_count"], + r["branch_count"], + r["call_count"], + r["float_ops"], + jtbl_str, + r["unique_offsets"], + f"{r['score']:.0f}", + sim_str, + ) + print(line) + + # Print summary + print() + scores = [r["score"] for r in results] + easy = sum(1 for s in scores if s < 50) + medium = sum(1 for s in scores if 50 <= s < 200) + hard = sum(1 for s in scores if s >= 200) + print(f" Difficulty breakdown: {easy} easy (<50), {medium} medium (50-200), {hard} hard (>200)") + if results: + print(f" Easiest: {results[0]['name']} (score {results[0]['score']:.0f})") + print() + + +if __name__ == "__main__": + main()