summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--Makefile21
-rw-r--r--arm7/Makefile175
-rw-r--r--arm7/arm7.lcf10
-rw-r--r--arm7/asm/arm7_rom.s (renamed from asm/arm7_rom.s)6
-rw-r--r--arm7/asm/macros.inc1
-rw-r--r--arm7/asm/macros/function.inc24
-rw-r--r--arm7/global.inc3517
-rw-r--r--arm7/undefined_syms.txt506
-rw-r--r--arm9/Makefile175
-rw-r--r--arm9/arm9.lcf84
-rw-r--r--arm9/asm/CARD_arm9.s (renamed from asm/CARD_arm9.s)0
-rw-r--r--arm9/asm/CP_arm9.s (renamed from asm/CP_arm9.s)0
-rw-r--r--arm9/asm/CTRDG_arm9.s (renamed from asm/CTRDG_arm9.s)0
-rw-r--r--arm9/asm/DGT_arm9.s (renamed from asm/DGT_arm9.s)0
-rw-r--r--arm9/asm/FS_arm9.s (renamed from asm/FS_arm9.s)0
-rw-r--r--arm9/asm/GX_arm9.s (renamed from asm/GX_arm9.s)0
-rw-r--r--arm9/asm/MATH_arm9.s (renamed from asm/MATH_arm9.s)0
-rw-r--r--arm9/asm/MI_arm9.s (renamed from asm/MI_arm9.s)0
-rw-r--r--arm9/asm/OS_arm9.s (renamed from asm/OS_arm9.s)0
-rw-r--r--arm9/asm/PM_arm9.s (renamed from asm/PM_arm9.s)0
-rw-r--r--arm9/asm/PXI_arm9.s (renamed from asm/PXI_arm9.s)0
-rw-r--r--arm9/asm/RTC_arm9.s (renamed from asm/RTC_arm9.s)0
-rw-r--r--arm9/asm/SDK_AUTOLOAD_LIST.s (renamed from asm/SDK_AUTOLOAD_LIST.s)5
-rw-r--r--arm9/asm/SND_arm9.s (renamed from asm/SND_arm9.s)0
-rw-r--r--arm9/asm/SPI_arm9.s (renamed from asm/SPI_arm9.s)0
-rw-r--r--arm9/asm/STD_arm9.s (renamed from asm/STD_arm9.s)0
-rw-r--r--arm9/asm/WM_arm9.s (renamed from asm/WM_arm9.s)0
-rw-r--r--arm9/asm/arm9_itcm.s (renamed from asm/arm9_itcm.s)0
-rw-r--r--arm9/asm/arm9overlay.s (renamed from asm/arm9overlay.s)0
-rw-r--r--arm9/asm/crt0.s (renamed from asm/crt0.s)0
-rw-r--r--arm9/asm/filesystem.s (renamed from asm/filesystem.s)0
-rw-r--r--arm9/asm/macros.inc1
-rw-r--r--arm9/asm/macros/function.inc24
-rw-r--r--arm9/asm/rom2.s (renamed from asm/rom2.s)0
-rw-r--r--arm9/asm/rom2_2.s (renamed from asm/rom2_2.s)0
-rw-r--r--arm9/asm/scrcmd.s (renamed from asm/scrcmd.s)0
-rw-r--r--arm9/asm/secure.s (renamed from asm/secure.s)0
-rw-r--r--arm9/asm/unk_02000E0C.s (renamed from asm/unk_02000E0C.s)0
-rw-r--r--arm9/asm/unk_020023C0.s (renamed from asm/unk_020023C0.s)0
-rw-r--r--arm9/asm/unk_02006864.s (renamed from asm/unk_02006864.s)0
-rw-r--r--arm9/asm/unk_02038C78.s (renamed from asm/unk_02038C78.s)0
-rw-r--r--arm9/asm/unk_02046030.s (renamed from asm/unk_02046030.s)0
-rw-r--r--arm9/asm/unk_0208AC14.s (renamed from asm/unk_0208AC14.s)0
-rw-r--r--arm9/asm/unk_020AF030.s (renamed from asm/unk_020AF030.s)0
-rw-r--r--arm9/asm/unk_10b724.s (renamed from asm/unk_10b724.s)0
-rw-r--r--arm9/global.inc3521
-rw-r--r--arm9/src/FUN_02000DF4.c (renamed from src/FUN_02000DF4.c)0
-rw-r--r--arm9/src/main.c (renamed from src/main.c)0
-rw-r--r--arm9/src/script.c (renamed from src/script.c)0
-rw-r--r--arm9/src/string_util.c (renamed from src/string_util.c)0
-rw-r--r--arm9/undefined_syms.txt506
-rw-r--r--pokediamond.lcf82
53 files changed, 8578 insertions, 82 deletions
diff --git a/.gitignore b/.gitignore
index b6cffd40..43a15d11 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,6 +6,8 @@ tools/mwccarm/**
# Build folder
build/**
+arm7/build/**
+arm9/build/**
# CLion folders
.idea/
diff --git a/Makefile b/Makefile
index 763dd714..bfb5ed9e 100644
--- a/Makefile
+++ b/Makefile
@@ -54,6 +54,9 @@ S_FILES := $(foreach dir,$(ASM_DIRS),$(wildcard $(dir)/*.s))
O_FILES := $(foreach file,$(C_FILES),$(BUILD_DIR)/$(file:.c=.o)) \
$(foreach file,$(S_FILES),$(BUILD_DIR)/$(file:.s=.o)) \
+ARM9BIN := arm9/build/arm9.bin
+ARM7BIN := arm7/build/arm7.bin
+
##################### Compiler Options #######################
MWCCVERSION := 2.0/base
@@ -107,7 +110,7 @@ else
NODEP := 1
endif
-.PHONY: all clean mostlyclean tidy tools $(TOOLDIRS) patch_mwasmarm
+.PHONY: all clean mostlyclean tidy tools $(TOOLDIRS) patch_mwasmarm $(ARM9BIN) $(ARM7BIN)
MAKEFLAGS += --no-print-directory
@@ -115,12 +118,18 @@ all: $(ROM)
@$(SHA1SUM) -c $(TARGET).sha1
clean: mostlyclean
+ make -C arm9 clean
+ make -C arm7 clean
make -C tools/mwasmarm_patcher clean
mostlyclean: tidy
+ make -C arm9 mostlyclean
+ make -C arm7 mostlyclean
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' \) -exec $(RM) {} +
tidy:
+ make -C arm9 tidy
+ make -C arm7 tidy
$(RM) -r $(BUILD_DIR)
tools: $(TOOLDIRS)
@@ -133,6 +142,12 @@ $(MWASMARM): patch_mwasmarm
patch_mwasmarm:
$(MWASMARM_PATCHER) $(MWASMARM)
+$(ARM9BIN):
+ @$(MAKE) -C arm9
+
+$(ARM7BIN):
+ @$(MAKE) -C arm7
+
ALL_DIRS := $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(ASM_DIRS))
$(BUILD_DIR)/%.o: %.c
@@ -144,8 +159,8 @@ $(BUILD_DIR)/%.o: %.s
$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) undefined_syms.txt
$(CPP) $(VERSION_CFLAGS) -MMD -MP -MT $@ -MF $@.d -I include/ -I . -DBUILD_DIR=$(BUILD_DIR) -o $@ $<
-$(ELF): $(O_FILES) $(BUILD_DIR)/$(LD_SCRIPT)
- $(LD) $(LDFLAGS) $(BUILD_DIR)/$(LD_SCRIPT) -o $(ELF) $(O_FILES)
+$(ELF): $(O_FILES) $(BUILD_DIR)/$(LD_SCRIPT) $(ARM9BIN) $(ARM7BIN)
+ $(LD) $(LDFLAGS) $(BUILD_DIR)/$(LD_SCRIPT) -o $(ELF) $(O_FILES) $(ARM9BIN) $(ARM7BIN)
$(ROM): $(ELF)
$(OBJCOPY) -O binary --gap-fill=0xFF --pad-to=0x04000000 $< $@
diff --git a/arm7/Makefile b/arm7/Makefile
new file mode 100644
index 00000000..d2c2681d
--- /dev/null
+++ b/arm7/Makefile
@@ -0,0 +1,175 @@
+# Makefile to build Pokemon Diamond image
+
+.PHONY: clean tidy all default patch_mwasmarm
+
+# Try to include devkitarm if installed
+TOOLCHAIN := $(DEVKITARM)
+
+ifneq (,$(wildcard $(TOOLCHAIN)/base_tools))
+include $(TOOLCHAIN)/base_tools
+endif
+
+### Default target ###
+
+default: all
+
+# If you are using WSL, it is recommended you build with NOWINE=1.
+WSLENV ?= no
+ifeq ($(WSLENV),)
+NOWINE = 1
+else
+NOWINE = 0
+endif
+
+ifeq ($(OS),Windows_NT)
+EXE := .exe
+WINE :=
+else
+EXE :=
+WINE := wine
+endif
+
+ifeq ($(NOWINE),1)
+WINE :=
+endif
+
+################ Target Executable and Sources ###############
+
+BUILD_DIR := build
+
+TARGET := arm7
+
+ROM := $(BUILD_DIR)/$(TARGET).bin
+ELF := $(BUILD_DIR)/$(TARGET).elf
+LD_SCRIPT := arm7.lcf
+
+# Directories containing source files
+SRC_DIRS := src
+ASM_DIRS := asm data files
+
+C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))
+S_FILES := $(foreach dir,$(ASM_DIRS),$(wildcard $(dir)/*.s))
+
+# Object files
+O_FILES := $(foreach file,$(C_FILES),$(BUILD_DIR)/$(file:.c=.o)) \
+ $(foreach file,$(S_FILES),$(BUILD_DIR)/$(file:.s=.o)) \
+
+##################### Compiler Options #######################
+
+MWCCVERSION := 2.0/base
+TOOLS_DIR = ../tools
+
+CROSS := arm-none-eabi-
+
+MWCCARM := $(TOOLS_DIR)/mwccarm/$(MWCCVERSION)/mwccarm.exe
+# Argh... due to EABI version shenanigans, we can't use GNU LD to link together
+# MWCC built objects and GNU built ones. mwldarm, however, doesn't care, so we
+# have to use mwldarm for now.
+# TODO: Is there a hack workaround to let us go back to GNU LD? Ideally, the
+# only dependency should be MWCCARM.
+MWLDARM := $(TOOLS_DIR)/mwccarm/$(MWCCVERSION)/mwldarm.exe
+MWASMARM := $(TOOLS_DIR)/mwccarm/$(MWCCVERSION)/mwasmarm.exe
+
+AS := $(WINE) $(MWASMARM)
+CC := $(WINE) $(MWCCARM)
+CPP := cpp -P
+LD := $(WINE) $(MWLDARM)
+AR := $(CROSS)ar
+OBJDUMP := $(CROSS)objdump
+OBJCOPY := $(CROSS)objcopy
+
+# ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm7_thumb.s -o arm7.o
+ASFLAGS = -proc arm5te -i ..
+CFLAGS = -O4,p -proc v5te -thumb -fp soft -lang c99 -Cpp_exceptions off -ir ../include
+LDFLAGS = -map -nodead -w off -proc v5te -interworking -map -symtab -m _start
+
+####################### Other Tools #########################
+
+# DS TOOLS
+SHA1SUM = sha1sum
+JSONPROC = $(TOOLS_DIR)/jsonproc/jsonproc
+GFX = $(TOOLS_DIR)/nitrogfx/nitrogfx
+MWASMARM_PATCHER = $(TOOLS_DIR)/mwasmarm_patcher/mwasmarm_patcher$(EXE)
+
+TOOLDIRS = $(filter-out $(TOOLS_DIR)/mwccarm,$(wildcard $(TOOLS_DIR)/*))
+TOOLBASE = $(TOOLDIRS:$(TOOLS_DIR)/%=%)
+TOOLS = $(foreach tool,$(TOOLBASE),$(TOOLS_DIR)/$(tool)/$(tool)$(EXE))
+
+######################### Targets ###########################
+
+infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line))))
+
+# Build tools when building the rom
+# Disable dependency scanning for clean/tidy/tools
+ifeq (,$(filter-out all,$(MAKECMDGOALS)))
+$(call infoshell, $(MAKE) tools patch_mwasmarm)
+else
+NODEP := 1
+endif
+
+.PHONY: all clean mostlyclean tidy tools $(TOOLDIRS) patch_mwasmarm
+
+MAKEFLAGS += --no-print-directory
+
+all: $(ROM)
+ # @$(SHA1SUM) -c $(TARGET).sha1
+
+clean: mostlyclean
+ make -C $(TOOLS_DIR)/mwasmarm_patcher clean
+
+mostlyclean: tidy
+ find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' \) -exec $(RM) {} +
+
+tidy:
+ $(RM) -r $(BUILD_DIR)
+
+tools: $(TOOLDIRS)
+
+$(TOOLDIRS):
+ @$(MAKE) -C $@
+
+$(MWASMARM): patch_mwasmarm
+
+patch_mwasmarm:
+ $(MWASMARM_PATCHER) $(MWASMARM)
+
+ALL_DIRS := $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(ASM_DIRS))
+
+$(BUILD_DIR)/%.o: %.c
+ $(CC) -c $(CFLAGS) -o $@ $<
+
+$(BUILD_DIR)/%.o: %.s
+ $(AS) $(ASFLAGS) $< -o $@
+
+$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) undefined_syms.txt
+ $(CPP) $(VERSION_CFLAGS) -MMD -MP -MT $@ -MF $@.d -I include/ -I . -DBUILD_DIR=$(BUILD_DIR) -o $@ $<
+
+$(ELF): $(O_FILES) $(BUILD_DIR)/$(LD_SCRIPT)
+ $(LD) $(LDFLAGS) $(BUILD_DIR)/$(LD_SCRIPT) -o $(ELF) $(O_FILES)
+
+$(ROM): $(ELF)
+ $(OBJCOPY) -O binary --gap-fill=0xFF $< $@
+
+# Make sure build directory exists before compiling anything
+DUMMY != mkdir -p $(ALL_DIRS)
+
+%.4bpp: %.png
+ $(GFX) $< $@
+
+%.gbapal: %.png
+ $(GFX) $< $@
+
+%.gbapal: %.pal
+ $(GFX) $< $@
+
+%.lz: %
+ $(GFX) $< $@
+
+%.png: ;
+%.pal: ;
+
+$(BUILD_DIR)/data/icon.o: graphics/icon.4bpp graphics/icon.gbapal
+
+### Debug Print ###
+
+print-% : ; $(info $* is a $(flavor $*) variable set to [$($*)]) @true
diff --git a/arm7/arm7.lcf b/arm7/arm7.lcf
new file mode 100644
index 00000000..784c4cbb
--- /dev/null
+++ b/arm7/arm7.lcf
@@ -0,0 +1,10 @@
+MEMORY {
+ .text (RX) : ORIGIN=0x02380000, LENGTH=0
+}
+
+SECTIONS {
+#include "undefined_syms.txt"
+ .text : AT (0x0) {
+ arm7_rom.o (.text)
+ } > .text
+}
diff --git a/asm/arm7_rom.s b/arm7/asm/arm7_rom.s
index fa248afc..3366eba4 100644
--- a/asm/arm7_rom.s
+++ b/arm7/asm/arm7_rom.s
@@ -3,9 +3,9 @@
.global ARM7AutoLoad
.section .text
- arm_func_start Entry_ARM7
+ arm_func_start _start
-Entry_ARM7:
+_start:
mov ip, #67108864 ; 0x4000000
str ip, [ip, #520] ; 0x208
ldr r1, _23800cc
@@ -74,7 +74,7 @@ _23800f0: .word 0x0380fffc
_23800f4: .word 0x037f853c
_23800f8: .word 0x037f8468
_23800fc: .word 0xffff0000
- arm_func_end Entry_ARM7
+ arm_func_end _start
arm_func_start FUN_2380100
FUN_2380100:
diff --git a/arm7/asm/macros.inc b/arm7/asm/macros.inc
new file mode 100644
index 00000000..156b2b09
--- /dev/null
+++ b/arm7/asm/macros.inc
@@ -0,0 +1 @@
+ .include "asm/macros/function.inc"
diff --git a/arm7/asm/macros/function.inc b/arm7/asm/macros/function.inc
new file mode 100644
index 00000000..6b9e5f40
--- /dev/null
+++ b/arm7/asm/macros/function.inc
@@ -0,0 +1,24 @@
+ .macro arm_func_start name
+ .balign 4, 0
+ .global \name
+ .arm
+ .endm
+
+ .macro arm_func_end name
+ .size \name, .-\name
+ .endm
+
+ .macro thumb_func_start name
+ .balign 4, 0
+ .global \name
+ .thumb
+ .endm
+
+ .macro non_word_aligned_thumb_func_start name
+ .global \name
+ .thumb
+ .endm
+
+ .macro thumb_func_end name
+ .size \name, .-\name
+ .endm
diff --git a/arm7/global.inc b/arm7/global.inc
new file mode 100644
index 00000000..478abdaa
--- /dev/null
+++ b/arm7/global.inc
@@ -0,0 +1,3517 @@
+.extern CARD_CancelBackupAsync
+.extern CARD_GetResultCode
+.extern CARD_IdentifyBackup
+.extern CARD_Init
+.extern CARD_IsPulledOut
+.extern CARD_LockBackup
+.extern CARD_LockRom
+.extern CARD_TryWaitBackupAsync
+.extern CARD_UnlockBackup
+.extern CARD_UnlockRom
+.extern CARD_WaitBackupAsync
+.extern CARDi_ReadRom
+.extern CARDi_RequestStreamCommand
+.extern CP_RestoreContext
+.extern CP_SaveContext
+.extern CTRDG_Init
+.extern CTRDG_IsExisting
+.extern CTRDG_IsPulledOut
+.extern Call_FillMemWithValue
+.extern ConvertUIntToDecimalString
+.extern DC_FlushAll
+.extern DC_FlushRange
+.extern DC_InvalidateAll
+.extern DC_InvalidateRange
+.extern DC_StoreAll
+.extern DC_StoreRange
+.extern DC_WaitWriteBufferEmpty
+.extern DGT_Hash1GetDigest_R
+.extern DGT_Hash1Reset
+.extern DGT_Hash1SetSource
+.extern DGTi_hash2_arm4_small
+.extern ErrorHandling
+.extern FS_CloseFile
+.extern FS_ConvertPathToFileID
+.extern FS_FindArchive
+.extern FS_Init
+.extern FS_InitFile
+.extern FS_IsAvailable
+.extern FS_LoadOverlay
+.extern FS_LoadOverlayImage
+.extern FS_LoadOverlayImageAsync
+.extern FS_LoadOverlayInfo
+.extern FS_OpenFile
+.extern FS_OpenFileFast
+.extern FS_ReadFile
+.extern FS_SeekFile
+.extern FS_SetDefaultDMA
+.extern FS_StartOverlay
+.extern FS_TryLoadTable
+.extern FS_UnloadOverlay
+.extern FS_WaitAsync
+.extern FUNRTC_Init
+.extern FUN_0200019E
+.extern FUN_020002FE
+.extern SVC_WaitByLoop
+.extern OSi_ReferSymbol
+.extern FUN_02000DF4
+.extern FUN_02000E7C
+.extern FUN_02000EE8
+.extern FUN_02000F18
+.extern FUN_02000FA4
+.extern FUN_02000FE8
+.extern FUN_020010A8
+.extern FUN_02001204
+.extern FUN_02001300
+.extern FUN_020013E8
+.extern FUN_02001448
+.extern FUN_02001470
+.extern FUN_02001B8C
+.extern FUN_02001C14
+.extern FUN_02001C5C
+.extern FUN_02001C78
+.extern FUN_02001D2C
+.extern FUN_02001E5C
+.extern FUN_020020EC
+.extern FUN_02002198
+.extern FUN_020021AC
+.extern FUN_02002840
+.extern FUN_02002B60
+.extern FUN_02002B7C
+.extern FUN_02002BB8
+.extern FUN_02002C14
+.extern FUN_02002C50
+.extern FUN_02002C84
+.extern FUN_02002CC0
+.extern FUN_02002CF8
+.extern FUN_02002DB0
+.extern FUN_02002DE0
+.extern FUN_02002E14
+.extern FUN_02002E4C
+.extern FUN_02002ED0
+.extern FUN_02002EEC
+.extern FUN_02002F08
+.extern FUN_02002FD0
+.extern FUN_02002FEC
+.extern FUN_02003008
+.extern FUN_02003038
+.extern FUN_02003054
+.extern FUN_020030E8
+.extern FUN_02003108
+.extern FUN_020031FC
+.extern FUN_02003210
+.extern FUN_0200372C
+.extern FUN_020038E4
+.extern FUN_020038F0
+.extern FUN_02003974
+.extern FUN_02003B98
+.extern FUN_02003C10
+.extern FUN_020040F4
+.extern FUN_02004104
+.extern FUN_02004124
+.extern FUN_0200414C
+.extern FUN_0200415C
+.extern FUN_0200433C
+.extern FUN_02004724
+.extern FUN_020047C8
+.extern FUN_02004810
+.extern FUN_0200488C
+.extern FUN_02004DCC
+.extern FUN_02004E08
+.extern FUN_0200516C
+.extern FUN_020051F4
+.extern FUN_0200521C
+.extern FUN_02005308
+.extern FUN_02005350
+.extern FUN_0200538C
+.extern FUN_020053CC
+.extern FUN_02005404
+.extern FUN_02005410
+.extern FUN_0200541C
+.extern FUN_020054C8
+.extern FUN_020054F0
+.extern FUN_02005508
+.extern FUN_02005514
+.extern FUN_02005578
+.extern FUN_02005670
+.extern FUN_020056AC
+.extern FUN_02005C28
+.extern FUN_02005CBC
+.extern FUN_02005D20
+.extern FUN_02005E28
+.extern FUN_02005E64
+.extern FUN_02005E6C
+.extern FUN_02005E80
+.extern FUN_02005E90
+.extern FUN_02005F14
+.extern FUN_02005F60
+.extern FUN_02005FDC
+.extern FUN_020061E8
+.extern FUN_0200621C
+.extern FUN_02006234
+.extern FUN_02006260
+.extern FUN_02006268
+.extern FUN_02006278
+.extern FUN_0200627C
+.extern FUN_0200628C
+.extern FUN_02006290
+.extern FUN_02006528
+.extern FUN_02006548
+.extern FUN_02006564
+.extern FUN_02006670
+.extern FUN_020066F4
+.extern FUN_02006704
+.extern FUN_02006774
+.extern FUN_02006814
+.extern FUN_0200687C
+.extern FUN_020068C8
+.extern FUN_02006930
+.extern FUN_02006BB0
+.extern FUN_02006C08
+.extern FUN_02006C98
+.extern FUN_02006D98
+.extern FUN_02006ED4
+.extern FUN_020072E8
+.extern FUN_02007314
+.extern FUN_0200737C
+.extern FUN_02007390
+.extern FUN_020073A0
+.extern FUN_02007534
+.extern FUN_02007558
+.extern FUN_0200782C
+.extern FUN_020079E0
+.extern FUN_02007E68
+.extern FUN_02007E98
+.extern FUN_02007F20
+.extern FUN_020080D0
+.extern FUN_020081C4
+.extern FUN_02008AA4
+.extern FUN_02008BE0
+.extern FUN_02008C80
+.extern FUN_02008C9C
+.extern FUN_02008D24
+.extern FUN_02008DEC
+.extern FUN_02008E2C
+.extern FUN_02008F34
+.extern FUN_02008FEC
+.extern FUN_020090AC
+.extern FUN_02009168
+.extern FUN_020093A8
+.extern FUN_02009424
+.extern FUN_02009448
+.extern FUN_02009630
+.extern FUN_0200965C
+.extern FUN_02009668
+.extern FUN_020096B4
+.extern FUN_020096CC
+.extern FUN_02009A50
+.extern FUN_02009B04
+.extern FUN_02009B44
+.extern FUN_02009B78
+.extern FUN_02009C0C
+.extern FUN_02009C30
+.extern FUN_02009CF0
+.extern FUN_02009DAC
+.extern FUN_02009DE0
+.extern FUN_02009E04
+.extern FUN_02009E28
+.extern FUN_02009E88
+.extern FUN_02009EAC
+.extern FUN_02009F80
+.extern FUN_02009FA0
+.extern FUN_0200A208
+.extern FUN_0200A274
+.extern FUN_0200A2AC
+.extern FUN_0200A318
+.extern FUN_0200A344
+.extern FUN_0200A648
+.extern FUN_0200A738
+.extern FUN_0200A86C
+.extern FUN_0200A8B8
+.extern FUN_0200A8E0
+.extern FUN_0200A914
+.extern FUN_0200A968
+.extern FUN_0200A99C
+.extern FUN_0200A9C4
+.extern FUN_0200AA50
+.extern FUN_0200AA80
+.extern FUN_0200AA90
+.extern FUN_0200AB18
+.extern FUN_0200ABB4
+.extern FUN_0200ABC0
+.extern FUN_0200ABE4
+.extern FUN_0200AC0C
+.extern FUN_0200AC60
+.extern FUN_0200ACA4
+.extern FUN_0200ACC0
+.extern FUN_0200ACF8
+.extern FUN_0200AD18
+.extern FUN_0200AD38
+.extern FUN_0200AD5C
+.extern FUN_0200AD94
+.extern FUN_0200ADCC
+.extern FUN_0200AE04
+.extern FUN_0200AE38
+.extern FUN_0200AE70
+.extern FUN_0200AEA8
+.extern FUN_0200AEE0
+.extern FUN_0200AF18
+.extern FUN_0200AF50
+.extern FUN_0200AFF4
+.extern FUN_0200B02C
+.extern FUN_0200B064
+.extern FUN_0200B09C
+.extern FUN_0200B164
+.extern FUN_0200B19C
+.extern FUN_0200B1D4
+.extern FUN_0200B20C
+.extern FUN_0200B244
+.extern FUN_0200B278
+.extern FUN_0200B2AC
+.extern FUN_0200B350
+.extern FUN_0200B388
+.extern FUN_0200B410
+.extern FUN_0200B4A0
+.extern FUN_0200B4D8
+.extern FUN_0200B518
+.extern FUN_0200B534
+.extern FUN_0200B568
+.extern FUN_0200B59C
+.extern FUN_0200B628
+.extern FUN_0200B660
+.extern FUN_0200B698
+.extern FUN_0200B6D0
+.extern FUN_0200B708
+.extern FUN_0200B764
+.extern FUN_0200B7A8
+.extern FUN_0200B7B8
+.extern FUN_0200B870
+.extern FUN_0200B990
+.extern FUN_0200B9A8
+.extern FUN_0200B9EC
+.extern FUN_0200BA78
+.extern FUN_0200BB14
+.extern FUN_0200BB34
+.extern FUN_0200BB68
+.extern FUN_0200BB6C
+.extern FUN_0200BBF0
+.extern FUN_0200BC1C
+.extern FUN_0200BC30
+.extern FUN_0200BCE0
+.extern FUN_0200BD04
+.extern FUN_0200BD20
+.extern FUN_0200BE38
+.extern FUN_0200BF60
+.extern FUN_0200C00C
+.extern FUN_0200C06C
+.extern FUN_0200C0DC
+.extern FUN_0200C124
+.extern FUN_0200C13C
+.extern FUN_0200C154
+.extern FUN_0200C358
+.extern FUN_0200C368
+.extern FUN_0200C378
+.extern FUN_0200C388
+.extern FUN_0200C398
+.extern FUN_0200C3DC
+.extern FUN_0200C5A8
+.extern FUN_0200C61C
+.extern FUN_0200C63C
+.extern FUN_0200C644
+.extern FUN_0200C664
+.extern FUN_0200C66C
+.extern FUN_0200C6E4
+.extern FUN_0200C714
+.extern FUN_0200C75C
+.extern FUN_0200C7A0
+.extern FUN_0200C82C
+.extern FUN_0200C840
+.extern FUN_0200C884
+.extern FUN_0200C9D8
+.extern FUN_0200CA0C
+.extern FUN_0200CA44
+.extern FUN_0200CAB4
+.extern FUN_0200CABC
+.extern FUN_0200CAFC
+.extern FUN_0200CB00
+.extern FUN_0200CCA4
+.extern FUN_0200CCF8
+.extern FUN_0200CD64
+.extern FUN_0200CD68
+.extern FUN_0200D0BC
+.extern FUN_0200D0E0
+.extern FUN_0200D274
+.extern FUN_0200D300
+.extern FUN_0200D6F8
+.extern FUN_0200D858
+.extern FUN_0200DBFC
+.extern FUN_0200DC4C
+.extern FUN_0200DCA4
+.extern FUN_0200E1D0
+.extern FUN_0200E2D8
+.extern FUN_0200E308
+.extern FUN_0200E388
+.extern FUN_0200E394
+.extern FUN_0200E3A0
+.extern FUN_0200E3BC
+.extern FUN_02011B20
+.extern FUN_02012420
+.extern FUN_0201259C
+.extern FUN_020125D4
+.extern FUN_0201265C
+.extern FUN_020126B4
+.extern FUN_020126D8
+.extern FUN_020126FC
+.extern FUN_0201277C
+.extern FUN_020127A8
+.extern FUN_020127C0
+.extern FUN_02012838
+.extern FUN_02012870
+.extern FUN_02012880
+.extern FUN_020128A0
+.extern FUN_02012CC8
+.extern FUN_02012CDC
+.extern FUN_02012DE4
+.extern FUN_0201318C
+.extern FUN_02013194
+.extern FUN_0201327C
+.extern FUN_020132BC
+.extern FUN_02013364
+.extern FUN_02013388
+.extern FUN_020133AC
+.extern FUN_020133C8
+.extern FUN_020133E8
+.extern FUN_0201343C
+.extern FUN_02013440
+.extern FUN_02013690
+.extern FUN_020136C0
+.extern FUN_020136E0
+.extern FUN_020136F8
+.extern FUN_0201373C
+.extern FUN_02013754
+.extern FUN_0201385C
+.extern FUN_02013918
+.extern FUN_02013920
+.extern FUN_02013924
+.extern FUN_02013928
+.extern FUN_02013960
+.extern FUN_020139D8
+.extern FUN_02013A10
+.extern FUN_02013A30
+.extern FUN_02013A9C
+.extern FUN_02013B5C
+.extern FUN_02013B68
+.extern FUN_02013B74
+.extern FUN_02013BC8
+.extern FUN_02013BE4
+.extern FUN_02013C0C
+.extern FUN_02013C18
+.extern FUN_020142EC
+.extern FUN_020143A8
+.extern FUN_020143D0
+.extern FUN_02014BF4
+.extern FUN_02014C28
+.extern FUN_02014C3C
+.extern FUN_02014C54
+.extern FUN_02014D7C
+.extern FUN_02014D9C
+.extern FUN_02015CF8
+.extern FUN_02015E30
+.extern FUN_02015E60
+.extern FUN_02015EF4
+.extern FUN_02015F10
+.extern FUN_02015F1C
+.extern FUN_02015F34
+.extern FUN_020161A4
+.extern FUN_020163BC
+.extern FUN_02016438
+.extern FUN_02016464
+.extern FUN_0201669C
+.extern FUN_020166C8
+.extern FUN_0201681C
+.extern FUN_02016828
+.extern FUN_020168D0
+.extern FUN_02016998
+.extern FUN_020169D8
+.extern FUN_02016A18
+.extern FUN_02016A8C
+.extern FUN_02016AF8
+.extern FUN_02016B94
+.extern FUN_02016BBC
+.extern FUN_02016C18
+.extern FUN_020178A0
+.extern FUN_020178BC
+.extern FUN_0201797C
+.extern FUN_020179E0
+.extern FUN_02017B48
+.extern FUN_02017B54
+.extern FUN_02017CD0
+.extern FUN_02017CE8
+.extern FUN_02017DFC
+.extern FUN_02017E14
+.extern FUN_02017F18
+.extern FUN_02017FB4
+.extern FUN_02017FE4
+.extern FUN_02018148
+.extern FUN_02018170
+.extern FUN_02018540
+.extern FUN_020186B4
+.extern FUN_02018744
+.extern FUN_0201886C
+.extern FUN_02018884
+.extern FUN_02018FF4
+.extern FUN_0201901C
+.extern FUN_02019048
+.extern FUN_02019064
+.extern FUN_02019150
+.extern FUN_02019178
+.extern FUN_020191A4
+.extern FUN_020191D0
+.extern FUN_02019220
+.extern FUN_02019548
+.extern FUN_02019570
+.extern FUN_0201958C
+.extern FUN_02019620
+.extern FUN_02019658
+.extern FUN_020196F4
+.extern FUN_0201974C
+.extern FUN_0201A8C8
+.extern FUN_0201AB08
+.extern FUN_0201AB0C
+.extern FUN_0201AB10
+.extern FUN_0201AB14
+.extern FUN_0201AB18
+.extern FUN_0201AB60
+.extern FUN_0201AC68
+.extern FUN_0201AEE4
+.extern FUN_0201AFBC
+.extern FUN_0201B234
+.extern FUN_0201B5CC
+.extern FUN_0201B6C4
+.extern FUN_0201B6C8
+.extern FUN_0201B6D0
+.extern FUN_0201B76C
+.extern FUN_0201B7DC
+.extern FUN_0201B8B8
+.extern FUN_0201B8E0
+.extern FUN_0201B914
+.extern FUN_0201B93C
+.extern FUN_0201B970
+.extern FUN_0201B9D4
+.extern FUN_0201B9E0
+.extern FUN_0201B9EC
+.extern FUN_0201BA10
+.extern FUN_0201BA1C
+.extern FUN_0201BA60
+.extern FUN_0201BCBC
+.extern FUN_0201BD5C
+.extern FUN_0201BD70
+.extern FUN_0201BD7C
+.extern FUN_0201BD84
+.extern FUN_0201BDE0
+.extern FUN_0201BE3C
+.extern FUN_0201C05C
+.extern FUN_0201C1EC
+.extern FUN_0201C24C
+.extern FUN_0201C29C
+.extern FUN_0201C30C
+.extern FUN_0201C620
+.extern FUN_0201C638
+.extern FUN_0201CC08
+.extern FUN_0201CC24
+.extern FUN_0201CD04
+.extern FUN_0201CDD0
+.extern FUN_0201CE04
+.extern FUN_0201D040
+.extern FUN_0201D12C
+.extern FUN_0201D168
+.extern FUN_0201E00C
+.extern FUN_0201E08C
+.extern FUN_0201E0BC
+.extern FUN_0201E28C
+.extern FUN_0201E66C
+.extern FUN_0201E6D8
+.extern FUN_0201E6E4
+.extern FUN_0201E740
+.extern FUN_0201E74C
+.extern FUN_0201E788
+.extern FUN_0201E7A0
+.extern FUN_0201EB64
+.extern FUN_0201EB70
+.extern FUN_0201EB8C
+.extern FUN_0201EBA4
+.extern FUN_0201EC68
+.extern FUN_0201EC88
+.extern FUN_0201EC94
+.extern FUN_0201ED10
+.extern FUN_0201EEF0
+.extern FUN_0201EF70
+.extern FUN_0201EF90
+.extern FUN_0201EFE0
+.extern FUN_0201EFEC
+.extern FUN_0201F04C
+.extern FUN_0201F854
+.extern FUN_0201FD58
+.extern FUN_0201FDEC
+.extern FUN_0201FE94
+.extern FUN_0201FFC8
+.extern FUN_02020044
+.extern FUN_020200A0
+.extern FUN_020200BC
+.extern FUN_02020100
+.extern FUN_0202011C
+.extern FUN_02020128
+.extern FUN_02020130
+.extern FUN_020201DC
+.extern FUN_020201E4
+.extern FUN_02020208
+.extern FUN_0202022C
+.extern FUN_02020248
+.extern FUN_02020310
+.extern FUN_02020354
+.extern FUN_02020388
+.extern FUN_02020398
+.extern FUN_02020968
+.extern FUN_02020988
+.extern FUN_02020AFC
+.extern FUN_02021590
+.extern FUN_020215C8
+.extern FUN_020215E0
+.extern FUN_02021750
+.extern FUN_020218D8
+.extern FUN_02021934
+.extern FUN_0202199C
+.extern FUN_020219F4
+.extern FUN_02021A20
+.extern FUN_02021A4C
+.extern FUN_02021A74
+.extern FUN_02021CE0
+.extern FUN_02021D3C
+.extern FUN_02021E28
+.extern FUN_02021EF0
+.extern FUN_02021F2C
+.extern FUN_0202212C
+.extern FUN_02022294
+.extern FUN_020222AC
+.extern FUN_020222B4
+.extern FUN_020222C4
+.extern FUN_020222E8
+.extern FUN_020222F0
+.extern FUN_020222F8
+.extern FUN_02022300
+.extern FUN_02022308
+.extern FUN_02022310
+.extern FUN_02022318
+.extern FUN_020223BC
+.extern FUN_02022504
+.extern FUN_02022510
+.extern FUN_02022528
+.extern FUN_02022534
+.extern FUN_02022540
+.extern FUN_0202254C
+.extern FUN_020225F8
+.extern FUN_02022610
+.extern FUN_0202263C
+.extern FUN_02022720
+.extern FUN_020227FC
+.extern FUN_02022800
+.extern FUN_02022804
+.extern FUN_0202280C
+.extern FUN_0202282C
+.extern FUN_02022830
+.extern FUN_0202287C
+.extern FUN_02023788
+.extern FUN_02023794
+.extern FUN_02023818
+.extern FUN_0202381C
+.extern FUN_02023828
+.extern FUN_02023874
+.extern FUN_02023884
+.extern FUN_020238F4
+.extern FUN_0202390C
+.extern FUN_02023918
+.extern FUN_02023924
+.extern FUN_02023928
+.extern FUN_0202393C
+.extern FUN_0202395C
+.extern FUN_0202397C
+.extern FUN_0202398C
+.extern FUN_02023990
+.extern FUN_020239A0
+.extern FUN_020239BC
+.extern FUN_020239C0
+.extern FUN_020239C8
+.extern FUN_020239CC
+.extern FUN_020239D0
+.extern FUN_020239E4
+.extern FUN_02023A10
+.extern FUN_02023A28
+.extern FUN_02023A2C
+.extern FUN_02023A30
+.extern FUN_02023A54
+.extern FUN_02023A68
+.extern FUN_02023A70
+.extern FUN_02023A78
+.extern FUN_02023A88
+.extern FUN_02023A90
+.extern FUN_02023A9C
+.extern FUN_02023AA4
+.extern FUN_02023AF4
+.extern FUN_02023B0C
+.extern FUN_02023BD4
+.extern FUN_02023C90
+.extern FUN_02023D58
+.extern FUN_02023D6C
+.extern FUN_02023D80
+.extern FUN_020243C8
+.extern FUN_02024404
+.extern FUN_02024440
+.extern FUN_0202445C
+.extern FUN_020244A4
+.extern FUN_020244EC
+.extern FUN_02024504
+.extern FUN_02024518
+.extern FUN_02024550
+.extern FUN_020245F0
+.extern FUN_0202471C
+.extern FUN_0202498C
+.extern FUN_02024AF0
+.extern FUN_02024C84
+.extern FUN_02024CA4
+.extern FUN_02024CE0
+.extern FUN_02024D4C
+.extern FUN_02024D64
+.extern FUN_02024D80
+.extern FUN_02024DA0
+.extern FUN_02024EB4
+.extern FUN_02024EC0
+.extern FUN_02024ECC
+.extern FUN_02024ED8
+.extern FUN_02024EE8
+.extern FUN_02024F0C
+.extern FUN_02024F30
+.extern FUN_02024F44
+.extern FUN_02024FF4
+.extern FUN_02025084
+.extern FUN_02025128
+.extern FUN_02025238
+.extern FUN_02025244
+.extern FUN_0202524C
+.extern FUN_02025268
+.extern FUN_02025274
+.extern FUN_020252AC
+.extern FUN_020252C4
+.extern FUN_020252D0
+.extern FUN_020252DC
+.extern FUN_020252E8
+.extern FUN_020252F4
+.extern FUN_020253E0
+.extern FUN_02025484
+.extern FUN_02025490
+.extern FUN_020254A0
+.extern FUN_020254B4
+.extern FUN_020254C0
+.extern FUN_02025520
+.extern FUN_02025614
+.extern FUN_02025658
+.extern FUN_020256AC
+.extern FUN_020256BC
+.extern FUN_020256D0
+.extern FUN_020256DC
+.extern FUN_020257C0
+.extern FUN_020257C4
+.extern FUN_020257C8
+.extern FUN_020257CC
+.extern FUN_020257D0
+.extern FUN_020257D8
+.extern FUN_020257DC
+.extern FUN_020257E0
+.extern FUN_02025814
+.extern FUN_02025824
+.extern FUN_02025838
+.extern FUN_02025864
+.extern FUN_02025878
+.extern FUN_02025888
+.extern FUN_0202589C
+.extern FUN_020258B0
+.extern FUN_020258D4
+.extern FUN_02025A60
+.extern FUN_02025B60
+.extern FUN_02025B94
+.extern FUN_02025BE8
+.extern FUN_02025C30
+.extern FUN_02025C40
+.extern FUN_02025D6C
+.extern FUN_02025D94
+.extern FUN_02025DB0
+.extern FUN_020260C4
+.extern FUN_02026298
+.extern FUN_020266B0
+.extern FUN_020266C8
+.extern FUN_020268D4
+.extern FUN_02026908
+.extern FUN_02026970
+.extern FUN_020269A0
+.extern FUN_020269CC
+.extern FUN_020269D4
+.extern FUN_02026BC8
+.extern FUN_02026C00
+.extern FUN_02026CB4
+.extern FUN_02026CC4
+.extern FUN_02026FE4
+.extern FUN_02026FE8
+.extern FUN_02027008
+.extern FUN_02027044
+.extern FUN_0202708C
+.extern FUN_02027098
+.extern FUN_020270B4
+.extern FUN_020270D8
+.extern FUN_02027100
+.extern FUN_02027114
+.extern FUN_02027168
+.extern FUN_02027184
+.extern FUN_020271A4
+.extern FUN_02027210
+.extern FUN_02027264
+.extern FUN_02027478
+.extern FUN_020275D8
+.extern FUN_02027608
+.extern FUN_0202763C
+.extern FUN_0202769C
+.extern FUN_020276A8
+.extern FUN_02027710
+.extern FUN_02027740
+.extern FUN_0202787C
+.extern FUN_020278AC
+.extern FUN_020278DC
+.extern FUN_02027914
+.extern FUN_02027964
+.extern FUN_02027E24
+.extern FUN_02027E34
+.extern FUN_02027E5C
+.extern FUN_02027F04
+.extern FUN_02027FBC
+.extern FUN_02027FDC
+.extern FUN_02028048
+.extern FUN_02028074
+.extern FUN_02028094
+.extern FUN_020280B8
+.extern FUN_020280F4
+.extern FUN_02028174
+.extern FUN_02028190
+.extern FUN_020281B8
+.extern FUN_02028448
+.extern FUN_020286EC
+.extern FUN_02028700
+.extern FUN_02028754
+.extern FUN_02028788
+.extern FUN_020287A4
+.extern FUN_020287A8
+.extern FUN_020287C0
+.extern FUN_020287EC
+.extern FUN_02028810
+.extern FUN_0202881C
+.extern FUN_02028828
+.extern FUN_02028840
+.extern FUN_02028930
+.extern FUN_02028934
+.extern FUN_02028954
+.extern FUN_0202896C
+.extern FUN_020289A4
+.extern FUN_020289B0
+.extern FUN_02028A20
+.extern FUN_02028AD4
+.extern FUN_02028FA4
+.extern FUN_02029048
+.extern FUN_02029120
+.extern FUN_0202912C
+.extern FUN_02029138
+.extern FUN_0202914C
+.extern FUN_0202918C
+.extern FUN_0202920C
+.extern FUN_0202942C
+.extern FUN_02029500
+.extern FUN_02029880
+.extern FUN_020299C0
+.extern FUN_020299DC
+.extern FUN_02029ABC
+.extern FUN_02029AC8
+.extern FUN_02029ACC
+.extern FUN_02029AD0
+.extern FUN_02029AD8
+.extern FUN_02029AFC
+.extern FUN_02029B38
+.extern FUN_02029B3C
+.extern FUN_02029C08
+.extern FUN_02029C74
+.extern FUN_02029C80
+.extern FUN_02029C8C
+.extern FUN_02029CC8
+.extern FUN_02029CE0
+.extern FUN_02029CEC
+.extern FUN_02029D44
+.extern FUN_02029DD4
+.extern FUN_02029E0C
+.extern FUN_02029E2C
+.extern FUN_02029EBC
+.extern FUN_02029EC0
+.extern FUN_02029EC4
+.extern FUN_02029EE4
+.extern FUN_02029EF8
+.extern FUN_02029F04
+.extern FUN_02029F10
+.extern FUN_02029F14
+.extern FUN_02029F4C
+.extern FUN_02029F9C
+.extern FUN_02029FC8
+.extern FUN_0202A07C
+.extern FUN_0202A0A8
+.extern FUN_0202A0E8
+.extern FUN_0202A11C
+.extern FUN_0202A150
+.extern FUN_0202A170
+.extern FUN_0202A1B8
+.extern FUN_0202A240
+.extern FUN_0202A2C4
+.extern FUN_0202A3B4
+.extern FUN_0202A498
+.extern FUN_0202A520
+.extern FUN_0202A538
+.extern FUN_0202A578
+.extern FUN_0202A5CC
+.extern FUN_0202A5D0
+.extern FUN_0202A5D4
+.extern FUN_0202A5F4
+.extern FUN_0202A74C
+.extern FUN_0202A864
+.extern FUN_0202A8CC
+.extern FUN_0202A8D8
+.extern FUN_0202A8E4
+.extern FUN_0202A918
+.extern FUN_0202A988
+.extern FUN_0202A990
+.extern FUN_0202A9AC
+.extern FUN_0202A9B0
+.extern FUN_0202A9D0
+.extern FUN_0202AA00
+.extern FUN_0202AA14
+.extern FUN_0202AA20
+.extern FUN_0202AA38
+.extern FUN_0202AA40
+.extern FUN_0202AA58
+.extern FUN_0202AA74
+.extern FUN_0202AAA0
+.extern FUN_0202AAFC
+.extern FUN_0202AB40
+.extern FUN_0202AB68
+.extern FUN_0202AF70
+.extern FUN_0202AF88
+.extern FUN_0202AF9C
+.extern FUN_0202AFC0
+.extern FUN_0202AFFC
+.extern FUN_0202B020
+.extern FUN_0202B03C
+.extern FUN_0202B050
+.extern FUN_0202B21C
+.extern FUN_0202B3C4
+.extern FUN_0202B4B0
+.extern FUN_0202B710
+.extern FUN_0202B838
+.extern FUN_0202B844
+.extern FUN_0202B850
+.extern FUN_0202B85C
+.extern FUN_0202B868
+.extern FUN_0202B870
+.extern FUN_0202B87C
+.extern FUN_0202B8E4
+.extern FUN_0202B8F0
+.extern FUN_0202BD6C
+.extern FUN_0202BDF0
+.extern FUN_0202BE6C
+.extern FUN_0202BEDC
+.extern FUN_0202BFD8
+.extern FUN_0202C000
+.extern FUN_0202C108
+.extern FUN_0202C144
+.extern FUN_0202CB8C
+.extern FUN_0202D8B0
+.extern FUN_0202D8D0
+.extern FUN_0202DBE0
+.extern FUN_0202DCF8
+.extern FUN_0202DDE8
+.extern FUN_0202DE78
+.extern FUN_0202DFA4
+.extern FUN_0202E020
+.extern FUN_0202E044
+.extern FUN_0202E25C
+.extern FUN_0202E4C8
+.extern FUN_0202EDD8
+.extern FUN_0202EDF8
+.extern FUN_0202EE0C
+.extern FUN_0202EE24
+.extern FUN_0202EE44
+.extern FUN_0202EF18
+.extern FUN_0202EF84
+.extern FUN_0202F078
+.extern FUN_0202F094
+.extern FUN_0202F0B8
+.extern FUN_0202FA10
+.extern FUN_0202FA1C
+.extern FUN_0202FA48
+.extern FUN_0202FB80
+.extern FUN_02030A78
+.extern FUN_02030ADC
+.extern FUN_02030B3C
+.extern FUN_02030BC4
+.extern FUN_02030C4C
+.extern FUN_02030C58
+.extern FUN_02030E7C
+.extern FUN_02030F20
+.extern FUN_02030F40
+.extern FUN_02030F60
+.extern FUN_02030F74
+.extern FUN_02030F88
+.extern FUN_02030FA8
+.extern FUN_02030FC8
+.extern FUN_02030FE0
+.extern FUN_02031190
+.extern FUN_020311D0
+.extern FUN_020311DC
+.extern FUN_020311E8
+.extern FUN_020311F0
+.extern FUN_02031248
+.extern FUN_02031280
+.extern FUN_020312BC
+.extern FUN_020313B4
+.extern FUN_020313EC
+.extern FUN_02031400
+.extern FUN_02031438
+.extern FUN_02031588
+.extern FUN_020315D8
+.extern FUN_020315FC
+.extern FUN_0203168C
+.extern FUN_020316AC
+.extern FUN_020316E0
+.extern FUN_02031810
+.extern FUN_02031824
+.extern FUN_02031860
+.extern FUN_02031880
+.extern FUN_020318B4
+.extern FUN_020318C4
+.extern FUN_02031914
+.extern FUN_02031924
+.extern FUN_02031934
+.extern FUN_02031948
+.extern FUN_02031990
+.extern FUN_020319D8
+.extern FUN_020319F4
+.extern FUN_02031A08
+.extern FUN_02031A2C
+.extern FUN_02031A7C
+.extern FUN_02031AC8
+.extern FUN_02031AF4
+.extern FUN_02031B2C
+.extern FUN_02031B50
+.extern FUN_02031BD0
+.extern FUN_02031BF4
+.extern FUN_02031C2C
+.extern FUN_02031C54
+.extern FUN_02031C64
+.extern FUN_02032888
+.extern FUN_020328C0
+.extern FUN_020328F4
+.extern FUN_02032B6C
+.extern FUN_02032DAC
+.extern FUN_020334E8
+.extern FUN_02033534
+.extern FUN_02033564
+.extern FUN_02033578
+.extern FUN_020335B8
+.extern FUN_020335F0
+.extern FUN_02033678
+.extern FUN_020337E8
+.extern FUN_0203384C
+.extern FUN_02033E74
+.extern FUN_02033ED0
+.extern FUN_02033F20
+.extern FUN_02033F70
+.extern FUN_02034188
+.extern FUN_020344AC
+.extern FUN_020344D8
+.extern FUN_020344FC
+.extern FUN_0203450C
+.extern FUN_0203451C
+.extern FUN_02034678
+.extern FUN_020346CC
+.extern FUN_02034774
+.extern FUN_02034788
+.extern FUN_020347B0
+.extern FUN_020347C4
+.extern FUN_02034824
+.extern FUN_0203484C
+.extern FUN_02034860
+.extern FUN_0203487C
+.extern FUN_02034898
+.extern FUN_020348B4
+.extern FUN_020348E4
+.extern FUN_02034908
+.extern FUN_02034930
+.extern FUN_02034944
+.extern FUN_02034964
+.extern FUN_02034998
+.extern FUN_020349D8
+.extern FUN_020349E4
+.extern FUN_02034A04
+.extern FUN_02034A60
+.extern FUN_02034AC8
+.extern FUN_02034AF0
+.extern FUN_02034AF8
+.extern FUN_02034B00
+.extern FUN_02034B64
+.extern FUN_02034B6C
+.extern FUN_02034B74
+.extern FUN_02034BAC
+.extern FUN_02034BDC
+.extern FUN_02034C0C
+.extern FUN_02034C24
+.extern FUN_02034C34
+.extern FUN_02034D2C
+.extern FUN_02034D44
+.extern FUN_02034DC4
+.extern FUN_02034DC8
+.extern FUN_02034DCC
+.extern FUN_02034DD0
+.extern FUN_02034DD4
+.extern FUN_02034DE8
+.extern FUN_02034DEC
+.extern FUN_02034DF4
+.extern FUN_02034DFC
+.extern FUN_02034E04
+.extern FUN_02034E0C
+.extern FUN_02034E10
+.extern FUN_02034E18
+.extern FUN_02034E20
+.extern FUN_02034E24
+.extern FUN_02034E28
+.extern FUN_02034E30
+.extern FUN_02034E48
+.extern FUN_02034E60
+.extern FUN_02034E8C
+.extern FUN_02034E90
+.extern FUN_02034EC4
+.extern FUN_02034EF8
+.extern FUN_02034F1C
+.extern FUN_02034F40
+.extern FUN_02034F88
+.extern FUN_02034FC0
+.extern FUN_02034FE4
+.extern FUN_02035068
+.extern FUN_020351A0
+.extern FUN_02035D04
+.extern FUN_02035E50
+.extern FUN_02036A78
+.extern FUN_02036AB8
+.extern FUN_02036B90
+.extern FUN_02036BC4
+.extern FUN_02036BDC
+.extern FUN_02036D94
+.extern FUN_02036DD4
+.extern FUN_02037024
+.extern FUN_02037350
+.extern FUN_02037394
+.extern FUN_0203739C
+.extern FUN_020373AC
+.extern FUN_020373C4
+.extern FUN_020373D4
+.extern FUN_02037760
+.extern FUN_02037778
+.extern FUN_020377A8
+.extern FUN_020377AC
+.extern FUN_020377B0
+.extern FUN_020377C8
+.extern FUN_0203780C
+.extern FUN_0203789C
+.extern FUN_020378FC
+.extern FUN_02037944
+.extern FUN_020379F8
+.extern FUN_02037A1C
+.extern FUN_02037A40
+.extern FUN_02037A48
+.extern FUN_02037A70
+.extern FUN_02037A78
+.extern FUN_02037B44
+.extern FUN_02037BB0
+.extern FUN_02037C00
+.extern FUN_02037CF0
+.extern FUN_02037D5C
+.extern FUN_02037D60
+.extern FUN_02037E18
+.extern FUN_02037E80
+.extern FUN_02037E90
+.extern FUN_02037EB8
+.extern FUN_02037F2C
+.extern FUN_02037F58
+.extern FUN_02037FC4
+.extern FUN_02037FE4
+.extern FUN_020380CC
+.extern FUN_02038130
+.extern FUN_020383D8
+.extern FUN_020383F8
+.extern FUN_0203842C
+.extern FUN_0203846C
+.extern FUN_020385CC
+.extern FUN_02038680
+.extern FUN_020386A4
+.extern FUN_020386B4
+.extern FUN_020386E0
+.extern FUN_02038790
+.extern FUN_02038804
+.extern FUN_02038814
+.extern FUN_02038824
+.extern FUN_02038854
+.extern FUN_02038864
+.extern FUN_0203888C
+.extern FUN_020388B4
+.extern FUN_020389CC
+.extern FUN_02038AD0
+.extern FUN_02038AF4
+.extern FUN_02038B6C
+.extern FUN_02038C78
+.extern FUN_02038CA8
+.extern FUN_02038CD8
+.extern FUN_02038D10
+.extern FUN_02038EB0
+.extern FUN_02039438
+.extern FUN_02039460
+.extern FUN_020394B8
+.extern FUN_020394F0
+.extern FUN_02039504
+.extern FUN_02039528
+.extern FUN_0203953C
+.extern FUN_02039550
+.extern FUN_02039564
+.extern FUN_0203959C
+.extern FUN_020395BC
+.extern FUN_020395F4
+.extern FUN_02039618
+.extern FUN_0203962C
+.extern FUN_02039640
+.extern FUN_0203965C
+.extern FUN_02039678
+.extern FUN_02039694
+.extern FUN_02039874
+.extern FUN_0203989C
+.extern FUN_020399A0
+.extern FUN_020399A4
+.extern FUN_020399A8
+.extern FUN_020399B4
+.extern FUN_02039A10
+.extern FUN_02039A28
+.extern FUN_02039A40
+.extern FUN_02039A5C
+.extern FUN_02039A78
+.extern FUN_02039A90
+.extern FUN_02039AAC
+.extern FUN_02039ACC
+.extern FUN_02039AF8
+.extern FUN_02039B28
+.extern FUN_02039B50
+.extern FUN_02039B78
+.extern FUN_02039BA0
+.extern FUN_02039BBC
+.extern FUN_02039BDC
+.extern FUN_02039C08
+.extern FUN_02039C40
+.extern FUN_02039C78
+.extern FUN_02039CE4
+.extern FUN_02039CF8
+.extern FUN_02039D10
+.extern FUN_02039D48
+.extern FUN_02039D78
+.extern FUN_02039DAC
+.extern FUN_02039DC4
+.extern FUN_02039DD0
+.extern FUN_02039E04
+.extern FUN_02039E38
+.extern FUN_02039E50
+.extern FUN_02039E68
+.extern FUN_02039E84
+.extern FUN_02039EC0
+.extern FUN_02039EE8
+.extern FUN_02039F0C
+.extern FUN_02039F30
+.extern FUN_02039F58
+.extern FUN_02039F88
+.extern FUN_02039FB8
+.extern FUN_02039FDC
+.extern FUN_0203A00C
+.extern FUN_0203A038
+.extern FUN_0203A04C
+.extern FUN_0203A098
+.extern FUN_0203A0FC
+.extern FUN_0203A13C
+.extern FUN_0203A188
+.extern FUN_0203A210
+.extern FUN_0203A288
+.extern FUN_0203A2C4
+.extern FUN_0203A304
+.extern FUN_0203A340
+.extern FUN_0203A388
+.extern FUN_0203A3C4
+.extern FUN_0203A400
+.extern FUN_0203A45C
+.extern FUN_0203A484
+.extern FUN_0203A4D0
+.extern FUN_0203A560
+.extern FUN_0203A590
+.extern FUN_0203A5D8
+.extern FUN_0203A608
+.extern FUN_0203A630
+.extern FUN_0203A780
+.extern FUN_0203A830
+.extern FUN_0203A85C
+.extern FUN_0203A878
+.extern FUN_0203A8B8
+.extern FUN_0203A9F0
+.extern FUN_0203AA90
+.extern FUN_0203AAA0
+.extern FUN_0203AB44
+.extern FUN_0203AB74
+.extern FUN_0203AB8C
+.extern FUN_0203AC14
+.extern FUN_0203AC9C
+.extern FUN_0203ACC4
+.extern FUN_0203AD08
+.extern FUN_0203AD54
+.extern FUN_0203ADC4
+.extern FUN_0203AE4C
+.extern FUN_0203AED4
+.extern FUN_0203AF34
+.extern FUN_0203AF58
+.extern FUN_0203AF84
+.extern FUN_0203AFA4
+.extern FUN_0203AFC4
+.extern FUN_0203B024
+.extern FUN_0203B148
+.extern FUN_0203B1F0
+.extern FUN_0203B2E0
+.extern FUN_0203B3B0
+.extern FUN_0203B3C0
+.extern FUN_0203B3DC
+.extern FUN_0203B3F8
+.extern FUN_0203B440
+.extern FUN_0203B468
+.extern FUN_0203B500
+.extern FUN_0203B544
+.extern FUN_0203B574
+.extern FUN_0203B5B8
+.extern FUN_0203B618
+.extern FUN_0203B640
+.extern FUN_0203B724
+.extern FUN_0203B758
+.extern FUN_0203B790
+.extern FUN_0203B7D8
+.extern FUN_0203B7F0
+.extern FUN_0203B81C
+.extern FUN_0203B85C
+.extern FUN_0203B8A0
+.extern FUN_0203B8E4
+.extern FUN_0203B914
+.extern FUN_0203B944
+.extern FUN_0203B968
+.extern FUN_0203B9B4
+.extern FUN_0203BA3C
+.extern FUN_0203BAB0
+.extern FUN_0203BAF4
+.extern FUN_0203BB34
+.extern FUN_0203BB80
+.extern FUN_0203BB84
+.extern FUN_0203BB88
+.extern FUN_0203BB8C
+.extern FUN_0203BC1C
+.extern FUN_0203BC2C
+.extern FUN_0203BCBC
+.extern FUN_0203BCCC
+.extern FUN_0203BCD8
+.extern FUN_0203BD08
+.extern FUN_0203BD28
+.extern FUN_0203BDB8
+.extern FUN_0203BE50
+.extern FUN_0203BE68
+.extern FUN_0203BE80
+.extern FUN_0203BECC
+.extern FUN_0203BF00
+.extern FUN_0203BF20
+.extern FUN_0203BF2C
+.extern FUN_0203BF84
+.extern FUN_0203BFEC
+.extern FUN_0203C054
+.extern FUN_0203C090
+.extern FUN_0203C0CC
+.extern FUN_0203C0FC
+.extern FUN_0203C118
+.extern FUN_0203C12C
+.extern FUN_0203C174
+.extern FUN_0203C1AC
+.extern FUN_0203C200
+.extern FUN_0203C278
+.extern FUN_0203C2C4
+.extern FUN_0203C2E0
+.extern FUN_0203C2F0
+.extern FUN_0203C300
+.extern FUN_0203C32C
+.extern FUN_0203C33C
+.extern FUN_0203C368
+.extern FUN_0203C3C8
+.extern FUN_0203C3E8
+.extern FUN_0203C430
+.extern FUN_0203C460
+.extern FUN_0203C4B0
+.extern FUN_0203C4F0
+.extern FUN_0203C520
+.extern FUN_0203C58C
+.extern FUN_0203C5BC
+.extern FUN_0203C614
+.extern FUN_0203C680
+.extern FUN_0203C6C4
+.extern FUN_0203C70C
+.extern FUN_0203C730
+.extern FUN_0203C788
+.extern FUN_0203C7E4
+.extern FUN_0203C7F4
+.extern FUN_0203C820
+.extern FUN_0203C844
+.extern FUN_0203C874
+.extern FUN_0203C8B4
+.extern FUN_0203C8E4
+.extern FUN_0203C930
+.extern FUN_0203C960
+.extern FUN_0203C990
+.extern FUN_0203CA20
+.extern FUN_0203CA2C
+.extern FUN_0203CA5C
+.extern FUN_0203CAE8
+.extern FUN_0203CB08
+.extern FUN_0203CB20
+.extern FUN_0203CB48
+.extern FUN_0203CB60
+.extern FUN_0203CB70
+.extern FUN_0203CBBC
+.extern FUN_0203CBE8
+.extern FUN_0203CC88
+.extern FUN_0203CD20
+.extern FUN_0203CDB8
+.extern FUN_0203CDC4
+.extern FUN_0203CDD0
+.extern FUN_0203CE00
+.extern FUN_0203CE0C
+.extern FUN_0203CE8C
+.extern FUN_0203CEBC
+.extern FUN_0203CF04
+.extern FUN_0203CF34
+.extern FUN_0203CF64
+.extern FUN_0203CF94
+.extern FUN_0203CFC4
+.extern FUN_0203CFC8
+.extern FUN_0203D050
+.extern FUN_0203D0A4
+.extern FUN_0203D0F8
+.extern FUN_0203D134
+.extern FUN_0203D140
+.extern FUN_0203D150
+.extern FUN_0203D178
+.extern FUN_0203D194
+.extern FUN_0203D1A4
+.extern FUN_0203D1C0
+.extern FUN_0203D214
+.extern FUN_0203D23C
+.extern FUN_0203D248
+.extern FUN_0203D278
+.extern FUN_0203D2A4
+.extern FUN_0203D2E4
+.extern FUN_0203D330
+.extern FUN_0203D33C
+.extern FUN_0203D36C
+.extern FUN_0203D3A4
+.extern FUN_0203D3DC
+.extern FUN_0203D448
+.extern FUN_0203D458
+.extern FUN_0203D490
+.extern FUN_0203D4E8
+.extern FUN_0203D528
+.extern FUN_0203D560
+.extern FUN_0203D5B0
+.extern FUN_0203D5F8
+.extern FUN_0203D60C
+.extern FUN_0203D61C
+.extern FUN_0203D630
+.extern FUN_0203D66C
+.extern FUN_0203D6C4
+.extern FUN_0203D728
+.extern FUN_0203D738
+.extern FUN_0203D774
+.extern FUN_0203D7DC
+.extern FUN_0203D834
+.extern FUN_0203D868
+.extern FUN_0203D874
+.extern FUN_0203D8A0
+.extern FUN_0203D8D0
+.extern FUN_0203D8E8
+.extern FUN_0203D8EC
+.extern FUN_0203D920
+.extern FUN_0203D938
+.extern FUN_0203D948
+.extern FUN_0203D958
+.extern FUN_0203D998
+.extern FUN_0203D9E8
+.extern FUN_0203DA78
+.extern FUN_0203DAB0
+.extern FUN_0203DAE8
+.extern FUN_0203DB38
+.extern FUN_0203DB88
+.extern FUN_0203DBD4
+.extern FUN_0203DC00
+.extern FUN_0203DC58
+.extern FUN_0203DC70
+.extern FUN_0203DC88
+.extern FUN_0203DCA0
+.extern FUN_0203DCB8
+.extern FUN_0203DCC8
+.extern FUN_0203DCD8
+.extern FUN_0203DCE8
+.extern FUN_0203DCF8
+.extern FUN_0203DD08
+.extern FUN_0203DD18
+.extern FUN_0203DD34
+.extern FUN_0203DD50
+.extern FUN_0203DD60
+.extern FUN_0203DE00
+.extern FUN_0203DE4C
+.extern FUN_0203DE58
+.extern FUN_0203DE80
+.extern FUN_0203DEA8
+.extern FUN_0203DEC4
+.extern FUN_0203DEF8
+.extern FUN_0203DF2C
+.extern FUN_0203DF38
+.extern FUN_0203DF64
+.extern FUN_0203DF84
+.extern FUN_0203DFA8
+.extern FUN_0203DFE0
+.extern FUN_0203E018
+.extern FUN_0203E054
+.extern FUN_0203E078
+.extern FUN_0203E0CC
+.extern FUN_0203E120
+.extern FUN_0203E138
+.extern FUN_0203E168
+.extern FUN_0203E254
+.extern FUN_0203E258
+.extern FUN_0203E29C
+.extern FUN_0203E2F8
+.extern FUN_0203E35C
+.extern FUN_0203E38C
+.extern FUN_0203E3D0
+.extern FUN_0203E408
+.extern FUN_0203E440
+.extern FUN_0203E470
+.extern FUN_0203E4A0
+.extern FUN_0203E4B0
+.extern FUN_0203E4D8
+.extern FUN_0203E4F0
+.extern FUN_0203E510
+.extern FUN_0203E568
+.extern FUN_0203E5DC
+.extern FUN_0203E674
+.extern FUN_0203E684
+.extern FUN_0203E6B4
+.extern FUN_0203E6C4
+.extern FUN_0203E6FC
+.extern FUN_0203E72C
+.extern FUN_0203E744
+.extern FUN_0203E774
+.extern FUN_0203E7F0
+.extern FUN_0203E81C
+.extern FUN_0203E848
+.extern FUN_0203E858
+.extern FUN_0203E870
+.extern FUN_0203E894
+.extern FUN_0203E8C4
+.extern FUN_0203E8F4
+.extern FUN_0203E928
+.extern FUN_0203E940
+.extern FUN_0203E954
+.extern FUN_0203E968
+.extern FUN_0203E9CC
+.extern FUN_0203EA68
+.extern FUN_0203EA90
+.extern FUN_0203EAB0
+.extern FUN_0203EB20
+.extern FUN_0203EB48
+.extern FUN_0203EB88
+.extern FUN_0203EBC8
+.extern FUN_0203EBE4
+.extern FUN_0203ECAC
+.extern FUN_0203ECD8
+.extern FUN_0203ECF4
+.extern FUN_0203ED10
+.extern FUN_0203ED70
+.extern FUN_0203EDA4
+.extern FUN_0203EDC8
+.extern FUN_0203EDE0
+.extern FUN_0203EE08
+.extern FUN_0203EE18
+.extern FUN_0203EE28
+.extern FUN_0203EE58
+.extern FUN_0203EE68
+.extern FUN_0203EE78
+.extern FUN_0203EE98
+.extern FUN_0203EED8
+.extern FUN_0203EF58
+.extern FUN_0203F00C
+.extern FUN_0203F020
+.extern FUN_0203F034
+.extern FUN_0203F058
+.extern FUN_0203F07C
+.extern FUN_0203F110
+.extern FUN_0203F174
+.extern FUN_0203F19C
+.extern FUN_0203F234
+.extern FUN_0203F254
+.extern FUN_0203F26C
+.extern FUN_0203F2AC
+.extern FUN_0203F2E4
+.extern FUN_0203F31C
+.extern FUN_0203F348
+.extern FUN_0203F38C
+.extern FUN_0203F39C
+.extern FUN_0203F3AC
+.extern FUN_0203F418
+.extern FUN_0203F44C
+.extern FUN_0203F484
+.extern FUN_0203F4D8
+.extern FUN_0203F508
+.extern FUN_0203F5D4
+.extern FUN_0203F604
+.extern FUN_0203F634
+.extern FUN_0203F664
+.extern FUN_0203F6E4
+.extern FUN_0203F720
+.extern FUN_0203F760
+.extern FUN_0203F7C8
+.extern FUN_0203F80C
+.extern FUN_0203F880
+.extern FUN_0203F8C0
+.extern FUN_0203F924
+.extern FUN_0203F954
+.extern FUN_0203F988
+.extern FUN_0203F9B0
+.extern FUN_0203F9DC
+.extern FUN_0203FA14
+.extern FUN_0203FA58
+.extern FUN_0203FB4C
+.extern FUN_0203FB64
+.extern FUN_0203FB94
+.extern FUN_0203FBA0
+.extern FUN_0203FBAC
+.extern FUN_0203FBBC
+.extern FUN_0203FC1C
+.extern FUN_0203FC58
+.extern FUN_0203FC80
+.extern FUN_0203FCB0
+.extern FUN_0203FCDC
+.extern FUN_0203FCF4
+.extern FUN_0203FDBC
+.extern FUN_0203FE08
+.extern FUN_0203FE48
+.extern FUN_0203FE80
+.extern FUN_0203FE90
+.extern FUN_0203FEC0
+.extern FUN_0203FF10
+.extern FUN_02040028
+.extern FUN_02040074
+.extern FUN_020400C8
+.extern FUN_0204011C
+.extern FUN_02040170
+.extern FUN_020401CC
+.extern FUN_02040204
+.extern FUN_02040220
+.extern FUN_0204025C
+.extern FUN_02040298
+.extern FUN_020402D4
+.extern FUN_02040304
+.extern FUN_02040340
+.extern FUN_02040370
+.extern FUN_020403A0
+.extern FUN_020403D0
+.extern FUN_02040414
+.extern FUN_02040458
+.extern FUN_02040488
+.extern FUN_020404FC
+.extern FUN_0204052C
+.extern FUN_0204056C
+.extern FUN_0204059C
+.extern FUN_020405B4
+.extern FUN_020405CC
+.extern FUN_020405F8
+.extern FUN_02040638
+.extern FUN_0204064C
+.extern FUN_02040660
+.extern FUN_020406C0
+.extern FUN_020406CC
+.extern FUN_02040700
+.extern FUN_02040724
+.extern FUN_02040748
+.extern FUN_02040790
+.extern FUN_020407C8
+.extern FUN_02040800
+.extern FUN_0204083C
+.extern FUN_02040874
+.extern FUN_020408BC
+.extern FUN_0204091C
+.extern FUN_02040964
+.extern FUN_020409C0
+.extern FUN_020409F8
+.extern FUN_02040A30
+.extern FUN_02040A7C
+.extern FUN_02040B0C
+.extern FUN_02040B5C
+.extern FUN_02040BAC
+.extern FUN_02040BFC
+.extern FUN_02040C34
+.extern FUN_02040C6C
+.extern FUN_02040CA4
+.extern FUN_02040D04
+.extern FUN_02040D7C
+.extern FUN_02040DB4
+.extern FUN_02040DEC
+.extern FUN_02040E4C
+.extern FUN_02040EB4
+.extern FUN_02040EF8
+.extern FUN_02040F34
+.extern FUN_02040F6C
+.extern FUN_02040FA4
+.extern FUN_02040FDC
+.extern FUN_02041014
+.extern FUN_0204104C
+.extern FUN_02041094
+.extern FUN_020410C8
+.extern FUN_02041100
+.extern FUN_02041138
+.extern FUN_02041174
+.extern FUN_02041194
+.extern FUN_020411C4
+.extern FUN_02041340
+.extern FUN_020413C0
+.extern FUN_020413E8
+.extern FUN_020413F8
+.extern FUN_0204140C
+.extern FUN_02041424
+.extern FUN_0204143C
+.extern FUN_02041478
+.extern FUN_0204149C
+.extern FUN_020414B8
+.extern FUN_020414CC
+.extern FUN_020414E0
+.extern FUN_020414FC
+.extern FUN_02041518
+.extern FUN_02041558
+.extern FUN_02041588
+.extern FUN_020415AC
+.extern FUN_020415BC
+.extern FUN_020415E0
+.extern FUN_02041618
+.extern FUN_02041644
+.extern FUN_02041650
+.extern FUN_02041664
+.extern FUN_02041674
+.extern FUN_020416A8
+.extern FUN_02041770
+.extern FUN_020417E0
+.extern FUN_02041808
+.extern FUN_0204185C
+.extern FUN_0204188C
+.extern FUN_0204190C
+.extern FUN_02041970
+.extern FUN_020419F8
+.extern FUN_02041A80
+.extern FUN_02041AB4
+.extern FUN_02041AD4
+.extern FUN_02041AE0
+.extern FUN_02041B10
+.extern FUN_02041B40
+.extern FUN_02041B70
+.extern FUN_02041B9C
+.extern FUN_02041BC4
+.extern FUN_02041BF0
+.extern FUN_02041C38
+.extern FUN_02041E40
+.extern FUN_02041FDC
+.extern FUN_02042000
+.extern FUN_02042038
+.extern FUN_02042110
+.extern FUN_0204214C
+.extern FUN_02042354
+.extern FUN_02042364
+.extern FUN_02042394
+.extern FUN_020423B0
+.extern FUN_02042700
+.extern FUN_02042780
+.extern FUN_020427A8
+.extern FUN_020427D0
+.extern FUN_02042864
+.extern FUN_02042894
+.extern FUN_020428E0
+.extern FUN_02042950
+.extern FUN_02042980
+.extern FUN_02042998
+.extern FUN_020429B8
+.extern FUN_020429E8
+.extern FUN_02042A18
+.extern FUN_02042A48
+.extern FUN_02042A98
+.extern FUN_02042B0C
+.extern FUN_02042B40
+.extern FUN_02042B74
+.extern FUN_02042BA8
+.extern FUN_02042BDC
+.extern FUN_02042C10
+.extern FUN_02042C44
+.extern FUN_02042C8C
+.extern FUN_02042CBC
+.extern FUN_02042D1C
+.extern FUN_0204387C
+.extern FUN_020438D0
+.extern FUN_02043918
+.extern FUN_020439B4
+.extern FUN_02043A44
+.extern FUN_02043A94
+.extern FUN_02043AAC
+.extern FUN_02043ACC
+.extern FUN_02043AFC
+.extern FUN_02043B28
+.extern FUN_02043B54
+.extern FUN_02043B84
+.extern FUN_02043BD0
+.extern FUN_02043C28
+.extern FUN_02043C6C
+.extern FUN_02043C90
+.extern FUN_02043CB4
+.extern FUN_02043CE4
+.extern FUN_02043D28
+.extern FUN_02043D78
+.extern FUN_02043DC8
+.extern FUN_02043DE0
+.extern FUN_02043E00
+.extern FUN_02043E20
+.extern FUN_02043E50
+.extern FUN_02043E68
+.extern FUN_02043E9C
+.extern FUN_02043EFC
+.extern FUN_02043F50
+.extern FUN_02043FA0
+.extern FUN_02043FF4
+.extern FUN_02044034
+.extern FUN_020440C0
+.extern FUN_020440F0
+.extern FUN_02044120
+.extern FUN_02044138
+.extern FUN_0204413C
+.extern FUN_02044140
+.extern FUN_02044158
+.extern FUN_0204416C
+.extern FUN_02044198
+.extern FUN_020442BC
+.extern FUN_0204434C
+.extern FUN_020443A8
+.extern FUN_02044414
+.extern FUN_0204449C
+.extern FUN_020444F4
+.extern FUN_02044598
+.extern FUN_02044658
+.extern FUN_0204469C
+.extern FUN_02044730
+.extern FUN_0204478C
+.extern FUN_02044800
+.extern FUN_0204488C
+.extern FUN_020448D4
+.extern FUN_020449A4
+.extern FUN_02044A0C
+.extern FUN_02044A6C
+.extern FUN_02044A94
+.extern FUN_02044B00
+.extern FUN_02044B2C
+.extern FUN_02044B84
+.extern FUN_02044C0C
+.extern FUN_02044C88
+.extern FUN_02044CE0
+.extern FUN_02044D44
+.extern FUN_02044D8C
+.extern FUN_02044E34
+.extern FUN_02044E78
+.extern FUN_02044ED8
+.extern FUN_02044F20
+.extern FUN_02044F58
+.extern FUN_02044FE8
+.extern FUN_0204505C
+.extern FUN_02045104
+.extern FUN_02045170
+.extern FUN_020451D0
+.extern FUN_02045264
+.extern FUN_02045268
+.extern FUN_020452B4
+.extern FUN_02045308
+.extern FUN_02045398
+.extern FUN_0204539C
+.extern FUN_020453A0
+.extern FUN_020453F4
+.extern FUN_02045424
+.extern FUN_02045438
+.extern FUN_02045468
+.extern FUN_02045484
+.extern FUN_020454CC
+.extern FUN_02045500
+.extern FUN_0204552C
+.extern FUN_0204557C
+.extern FUN_02045590
+.extern FUN_020455BC
+.extern FUN_020455D0
+.extern FUN_020455E4
+.extern FUN_02045610
+.extern FUN_02045624
+.extern FUN_02045638
+.extern FUN_02045664
+.extern FUN_02045678
+.extern FUN_020456D4
+.extern FUN_0204572C
+.extern FUN_02045784
+.extern FUN_020457DC
+.extern FUN_02045834
+.extern FUN_0204588C
+.extern FUN_020458E4
+.extern FUN_02045918
+.extern FUN_02045950
+.extern FUN_02045954
+.extern FUN_02045958
+.extern FUN_020459AC
+.extern FUN_020459E8
+.extern FUN_02045A3C
+.extern FUN_02045A78
+.extern FUN_02045ACC
+.extern FUN_02045B08
+.extern FUN_02045B44
+.extern FUN_02045B80
+.extern FUN_02045BC8
+.extern FUN_02045C04
+.extern FUN_02045C40
+.extern FUN_02045C7C
+.extern FUN_02045CD4
+.extern FUN_02045D10
+.extern FUN_02045D4C
+.extern FUN_02045D88
+.extern FUN_02045DD0
+.extern FUN_02045E1C
+.extern FUN_02045E20
+.extern FUN_02045EE0
+.extern FUN_02045EE4
+.extern FUN_02045F24
+.extern FUN_02045F84
+.extern FUN_02045F88
+.extern FUN_02045FCC
+.extern FUN_02046010
+.extern FUN_0204601C
+.extern FUN_02046028
+.extern FUN_0204602C
+.extern FUN_02046030
+.extern FUN_020462AC
+.extern FUN_020462B8
+.extern FUN_020462E4
+.extern FUN_0204630C
+.extern FUN_02046338
+.extern FUN_02046380
+.extern FUN_020463CC
+.extern FUN_020463EC
+.extern FUN_0204640C
+.extern FUN_02046420
+.extern FUN_0204646C
+.extern FUN_0204647C
+.extern FUN_0204649C
+.extern FUN_020464A4
+.extern FUN_02046500
+.extern FUN_02046528
+.extern FUN_0204652C
+.extern FUN_02046530
+.extern FUN_02046534
+.extern FUN_02046DB4
+.extern FUN_02046E18
+.extern FUN_02046FA0
+.extern FUN_020470AC
+.extern FUN_020470E8
+.extern FUN_02047174
+.extern FUN_020480B8
+.extern FUN_020480C8
+.extern FUN_020480D8
+.extern FUN_02048498
+.extern FUN_02048694
+.extern FUN_02048C58
+.extern FUN_02048D90
+.extern FUN_02048EC8
+.extern FUN_02048FC8
+.extern FUN_02049240
+.extern FUN_02049274
+.extern FUN_02049EA4
+.extern FUN_02049F98
+.extern FUN_02049FFC
+.extern FUN_0204A048
+.extern FUN_0204A0C8
+.extern FUN_0204A120
+.extern FUN_0204A20C
+.extern FUN_0204A248
+.extern FUN_0204A32C
+.extern FUN_0204A6E0
+.extern FUN_0204AB20
+.extern FUN_0204AB58
+.extern FUN_0204ABA8
+.extern FUN_0204ABDC
+.extern FUN_0204AD0C
+.extern FUN_0204ADBC
+.extern FUN_0204ADE0
+.extern FUN_0204AF3C
+.extern FUN_0204AF84
+.extern FUN_0204B2A4
+.extern FUN_0204B2B4
+.extern FUN_0204B2C0
+.extern FUN_0204B2D8
+.extern FUN_0204B33C
+.extern FUN_0204B4FC
+.extern FUN_0204B57C
+.extern FUN_0204B5A8
+.extern FUN_0204B5FC
+.extern FUN_0204B63C
+.extern FUN_0204B660
+.extern FUN_0204B684
+.extern FUN_0204B6A4
+.extern FUN_0204B9A0
+.extern FUN_0204B9CC
+.extern FUN_0204B9EC
+.extern FUN_0204BA1C
+.extern FUN_0204BAB0
+.extern FUN_0204BAC4
+.extern FUN_0204BAD4
+.extern FUN_0204BAE4
+.extern FUN_0204BEC8
+.extern FUN_0204BED0
+.extern FUN_0204BED8
+.extern FUN_0204C104
+.extern FUN_0204C1A8
+.extern FUN_0204D6C0
+.extern FUN_0204E2FC
+.extern FUN_0204F6DC
+.extern FUN_0204FF5C
+.extern FUN_02050024
+.extern FUN_02050048
+.extern FUN_020524CC
+.extern FUN_02052544
+.extern FUN_02052604
+.extern FUN_02052608
+.extern FUN_02052648
+.extern FUN_0205265C
+.extern FUN_02052714
+.extern FUN_02052718
+.extern FUN_020527A8
+.extern FUN_020527D8
+.extern FUN_0205296C
+.extern FUN_02052A10
+.extern FUN_02052B74
+.extern FUN_02052C0C
+.extern FUN_02052CD8
+.extern FUN_02052D08
+.extern FUN_02052DE8
+.extern FUN_02052E10
+.extern FUN_02052F74
+.extern FUN_020534DC
+.extern FUN_0205363C
+.extern FUN_02053678
+.extern FUN_020536D0
+.extern FUN_020545B8
+.extern FUN_02054608
+.extern FUN_02054658
+.extern FUN_020546C8
+.extern FUN_020547A4
+.extern FUN_02054C14
+.extern FUN_02054CB0
+.extern FUN_02054CC8
+.extern FUN_02054D1C
+.extern FUN_02054DEC
+.extern FUN_02054E30
+.extern FUN_02054F50
+.extern FUN_0205502C
+.extern FUN_020552F8
+.extern FUN_02055304
+.extern FUN_02055320
+.extern FUN_0205532C
+.extern FUN_020553A0
+.extern FUN_020553C4
+.extern FUN_020553D4
+.extern FUN_020553E8
+.extern FUN_02055468
+.extern FUN_02055474
+.extern FUN_02055488
+.extern FUN_02055560
+.extern FUN_02055720
+.extern FUN_020557F4
+.extern FUN_02055A38
+.extern FUN_02055B14
+.extern FUN_02055B30
+.extern FUN_02055B8C
+.extern FUN_0205753C
+.extern FUN_020575D4
+.extern FUN_02057654
+.extern FUN_02057688
+.extern FUN_02057800
+.extern FUN_0205785C
+.extern FUN_02057BAC
+.extern FUN_02058060
+.extern FUN_020580B4
+.extern FUN_02058448
+.extern FUN_02058458
+.extern FUN_02058480
+.extern FUN_02058488
+.extern FUN_02058510
+.extern FUN_02058738
+.extern FUN_02058780
+.extern FUN_020587B0
+.extern FUN_02058854
+.extern FUN_0205889C
+.extern FUN_020588B8
+.extern FUN_020588D4
+.extern FUN_02058908
+.extern FUN_02058914
+.extern FUN_02058994
+.extern FUN_02058B2C
+.extern FUN_02058B4C
+.extern FUN_02058B7C
+.extern FUN_02058BB4
+.extern FUN_02058BE4
+.extern FUN_02058D74
+.extern FUN_02058E28
+.extern FUN_02058E90
+.extern FUN_02058EB0
+.extern FUN_02059D1C
+.extern FUN_02059E74
+.extern FUN_0205AE28
+.extern FUN_0205AEA4
+.extern FUN_0205AEF0
+.extern FUN_0205AEFC
+.extern FUN_0205CA4C
+.extern FUN_0205CA64
+.extern FUN_0205CA78
+.extern FUN_0205CE48
+.extern FUN_0205CE80
+.extern FUN_0205DD18
+.extern FUN_0205DD38
+.extern FUN_0205DD40
+.extern FUN_0205E7C4
+.extern FUN_0205ECD4
+.extern FUN_0205ECE0
+.extern FUN_0205ECFC
+.extern FUN_0205ED0C
+.extern FUN_0205ED1C
+.extern FUN_0205ED2C
+.extern FUN_0205ED3C
+.extern FUN_0205ED4C
+.extern FUN_0205ED5C
+.extern FUN_0205ED6C
+.extern FUN_0205F1C4
+.extern FUN_0205F1D4
+.extern FUN_0205F1F4
+.extern FUN_0205F204
+.extern FUN_0205F214
+.extern FUN_0205F224
+.extern FUN_0205F234
+.extern FUN_0205F244
+.extern FUN_0205F264
+.extern FUN_0205F274
+.extern FUN_0205F284
+.extern FUN_0205F294
+.extern FUN_0205F2A4
+.extern FUN_0205F2B4
+.extern FUN_0205F2C4
+.extern FUN_0205F2D4
+.extern FUN_0205F2E4
+.extern FUN_0205F368
+.extern FUN_0205F378
+.extern FUN_0205F388
+.extern FUN_0205F398
+.extern FUN_0205F3C0
+.extern FUN_0205F3F8
+.extern FUN_0205F478
+.extern FUN_0205F4A0
+.extern FUN_0205F4E4
+.extern FUN_0205F50C
+.extern FUN_0205F524
+.extern FUN_0205F54C
+.extern FUN_0205F55C
+.extern FUN_0205F594
+.extern FUN_0205F5A4
+.extern FUN_0205F5D8
+.extern FUN_0205F5FC
+.extern FUN_0205F648
+.extern FUN_0205F668
+.extern FUN_0205F688
+.extern FUN_0205F698
+.extern FUN_0205F6A8
+.extern FUN_0205F6C8
+.extern FUN_0205F6D8
+.extern FUN_0205F710
+.extern FUN_0205F720
+.extern FUN_0205F740
+.extern FUN_0205F760
+.extern FUN_0205F7A0
+.extern FUN_0205FD38
+.extern FUN_0205FDDC
+.extern FUN_0205FE10
+.extern FUN_0205FF5C
+.extern FUN_02060144
+.extern FUN_0206015C
+.extern FUN_02060490
+.extern FUN_02060790
+.extern FUN_020607D4
+.extern FUN_02060F3C
+.extern FUN_02060F88
+.extern FUN_02060F9C
+.extern FUN_02060FD0
+.extern FUN_020612EC
+.extern FUN_020612F8
+.extern FUN_02061374
+.extern FUN_020613CC
+.extern FUN_02061460
+.extern FUN_02061574
+.extern FUN_02061A8C
+.extern FUN_02063650
+.extern FUN_0206367C
+.extern FUN_02063888
+.extern FUN_020638BC
+.extern FUN_02063948
+.extern FUN_02063964
+.extern FUN_0206486C
+.extern FUN_020649B0
+.extern FUN_020649D4
+.extern FUN_02064CA8
+.extern FUN_02064CC8
+.extern FUN_02064D10
+.extern FUN_02064D4C
+.extern FUN_02064D88
+.extern FUN_02064E20
+.extern FUN_02064E60
+.extern FUN_02064E90
+.extern FUN_02065054
+.extern FUN_02065070
+.extern FUN_02065078
+.extern FUN_02065314
+.extern FUN_02065344
+.extern FUN_02066818
+.extern FUN_02066978
+.extern FUN_020669A0
+.extern FUN_020669C0
+.extern FUN_020669D4
+.extern FUN_02066A20
+.extern FUN_02066ACC
+.extern FUN_02066ED8
+.extern FUN_020671BC
+.extern FUN_020672BC
+.extern FUN_02067830
+.extern FUN_02068678
+.extern FUN_02068854
+.extern FUN_020689E0
+.extern FUN_02068AAC
+.extern FUN_02068B68
+.extern FUN_02068C00
+.extern FUN_02068E14
+.extern FUN_020690C4
+.extern FUN_020690CC
+.extern FUN_020690E4
+.extern FUN_02069168
+.extern FUN_020699A4
+.extern FUN_02069A64
+.extern FUN_02069B40
+.extern FUN_02069B88
+.extern FUN_0206A23C
+.extern FUN_0206AC74
+.extern FUN_0206AD4C
+.extern FUN_0206B20C
+.extern FUN_0206B3E4
+.extern FUN_0206B484
+.extern FUN_0206B57C
+.extern FUN_0206B5E4
+.extern FUN_0206B620
+.extern FUN_0206B644
+.extern FUN_0206B6C8
+.extern FUN_0206B7BC
+.extern FUN_0206B900
+.extern FUN_0206B9AC
+.extern FUN_0206B9B0
+.extern FUN_0206BAE4
+.extern FUN_0206BB1C
+.extern FUN_0206BB28
+.extern FUN_0206C700
+.extern FUN_0206C91C
+.extern FUN_0206C92C
+.extern FUN_0206E2F0
+.extern FUN_0206E308
+.extern FUN_0206E314
+.extern FUN_0206E340
+.extern FUN_0206E354
+.extern FUN_0206E358
+.extern FUN_0206E360
+.extern FUN_0206E37C
+.extern FUN_0206E384
+.extern FUN_0206E38C
+.extern FUN_0206E7B8
+.extern FUN_0206EA30
+.extern FUN_0206EA98
+.extern FUN_0206EAB8
+.extern FUN_0206EB1C
+.extern FUN_0206ED24
+.extern FUN_0206ED38
+.extern FUN_0206EDD4
+.extern FUN_0206EE50
+.extern FUN_0206EE64
+.extern FUN_0206EEF8
+.extern FUN_0206EFEC
+.extern FUN_0206F158
+.extern FUN_0206F164
+.extern FUN_0206F17C
+.extern FUN_0206F190
+.extern FUN_0206F3B8
+.extern FUN_0206F3D8
+.extern FUN_02077A84
+.extern FUN_02077AC4
+.extern FUN_02079C70
+.extern FUN_0207B000
+.extern FUN_0207C2A4
+.extern FUN_0207FC5C
+.extern FUN_0207FCE0
+.extern FUN_0208089C
+.extern FUN_02080C38
+.extern FUN_02080E0C
+.extern FUN_02081214
+.extern FUN_020814E8
+.extern FUN_02081DC4
+.extern FUN_02081EB8
+.extern FUN_0208201C
+.extern FUN_02082034
+.extern FUN_0208206C
+.extern FUN_02082090
+.extern FUN_020820B8
+.extern FUN_020820DC
+.extern FUN_0208210C
+.extern FUN_0208213C
+.extern FUN_02082140
+.extern FUN_02082158
+.extern FUN_0208217C
+.extern FUN_02082190
+.extern FUN_020821B4
+.extern FUN_020821C4
+.extern FUN_020821DC
+.extern FUN_020821F0
+.extern FUN_02082214
+.extern FUN_0208223C
+.extern FUN_0208224C
+.extern FUN_02082254
+.extern FUN_02082284
+.extern FUN_020822F0
+.extern FUN_02082444
+.extern FUN_02082508
+.extern FUN_020825A0
+.extern FUN_02082630
+.extern FUN_02085140
+.extern FUN_020851B8
+.extern FUN_020851DC
+.extern FUN_020851F8
+.extern FUN_0208524C
+.extern FUN_02085258
+.extern FUN_02085264
+.extern FUN_0208526C
+.extern FUN_02085290
+.extern FUN_020852E8
+.extern FUN_02085338
+.extern FUN_020853A8
+.extern FUN_020853B0
+.extern FUN_020853B4
+.extern FUN_020853BC
+.extern FUN_020853E4
+.extern FUN_020853E8
+.extern FUN_020853EC
+.extern FUN_020853F0
+.extern FUN_020853FC
+.extern FUN_020854E0
+.extern FUN_02085538
+.extern FUN_02085578
+.extern FUN_020855B0
+.extern FUN_020855E4
+.extern FUN_0208560C
+.extern FUN_0208562C
+.extern FUN_02085F48
+.extern FUN_020863DC
+.extern FUN_02087A1C
+.extern FUN_02087A50
+.extern FUN_02087D00
+.extern FUN_02087E14
+.extern FUN_0208881C
+.extern FUN_02088960
+.extern FUN_02088D40
+.extern FUN_02088DD8
+.extern FUN_02088DF0
+.extern FUN_02088DF8
+.extern FUN_02088EF8
+.extern FUN_02089D90
+.extern FUN_0208A0B8
+.extern FUN_0208A300
+.extern FUN_0208A320
+.extern FUN_0208A338
+.extern FUN_0208A9B8
+.extern FUN_0208ACEC
+.extern FUN_0208AD80
+.extern FUN_0208AF80
+.extern FUN_0208AF94
+.extern FUN_0208AFA8
+.extern FUN_0208B05C
+.extern FUN_0208B128
+.extern FUN_0208B4A0
+.extern FUN_02090CC8
+.extern FUN_02090DB8
+.extern FUN_02096B14
+.extern FUN_02096B78
+.extern FUN_02096CCC
+.extern FUN_02096D2C
+.extern FUN_02096DA0
+.extern FUN_02096F18
+.extern FUN_02096F80
+.extern FUN_02096FB0
+.extern FUN_0209700C
+.extern FUN_020973B4
+.extern FUN_020ADA84
+.extern FUN_020ADA98
+.extern FUN_020ADAB0
+.extern FUN_020ADB18
+.extern FUN_020ADBE8
+.extern FUN_020ADC74
+.extern FUN_020ADDC0
+.extern FUN_020ADDC8
+.extern FUN_020ADDF0
+.extern FUN_020ADE2C
+.extern FUN_020AE554
+.extern FUN_020AE5B0
+.extern FUN_020AE600
+.extern FUN_020AE638
+.extern FUN_020AE684
+.extern FUN_020AE82C
+.extern FUN_020AE84C
+.extern FUN_020AE868
+.extern FUN_020AE8CC
+.extern FUN_020AE918
+.extern FUN_020AEB70
+.extern FUN_020AEC7C
+.extern FUN_020AEC98
+.extern FUN_020AEE40
+.extern FUN_020AEEB8
+.extern FUN_020AEF1C
+.extern FUN_020AF2E0
+.extern FUN_020AF2F4
+.extern FUN_020AF30C
+.extern FUN_020AF894
+.extern FUN_020AF9C4
+.extern FUN_020AFA28
+.extern FUN_020AFA80
+.extern FUN_020AFBA8
+.extern FUN_020AFBFC
+.extern FUN_020AFC04
+.extern FUN_020AFEB8
+.extern FUN_020AFFD8
+.extern FUN_020B0030
+.extern FUN_020B0088
+.extern FUN_020B00F0
+.extern FUN_020B0138
+.extern FUN_020B0180
+.extern FUN_020B0250
+.extern FUN_020B02C8
+.extern FUN_020B0448
+.extern FUN_020B0870
+.extern FUN_020B0BB0
+.extern FUN_020B0C7C
+.extern FUN_020B0E34
+.extern FUN_020B0FC0
+.extern FUN_020B10E8
+.extern FUN_020B1240
+.extern FUN_020B1340
+.extern FUN_020B1528
+.extern FUN_020B1768
+.extern FUN_020B19C4
+.extern FUN_020B19DC
+.extern FUN_020B1A14
+.extern FUN_020B1A24
+.extern FUN_020B1EA4
+.extern FUN_020B1EC4
+.extern FUN_020B1EE4
+.extern FUN_020B1EFC
+.extern FUN_020B1F80
+.extern FUN_020B20C8
+.extern FUN_020B2194
+.extern FUN_020B224C
+.extern FUN_020B23D8
+.extern FUN_020B242C
+.extern FUN_020B2794
+.extern FUN_020B28B4
+.extern FUN_020B2A08
+.extern FUN_020B2B08
+.extern FUN_020B2B58
+.extern FUN_020B2D9C
+.extern FUN_020B317C
+.extern FUN_020B31F0
+.extern FUN_020B326C
+.extern FUN_020B3334
+.extern FUN_020B3390
+.extern FUN_020B33A0
+.extern FUN_020B4358
+.extern FUN_020B43A4
+.extern FUN_020B442C
+.extern FUN_020B4568
+.extern FUN_020B4F38
+.extern FUN_020B502C
+.extern FUN_020B772C
+.extern FUN_020B7790
+.extern FUN_020B7C58
+.extern FUN_020B7C78
+.extern FUN_020B7CDC
+.extern FUN_020B7CE4
+.extern FUN_020B7CF0
+.extern FUN_020B7D28
+.extern FUN_020B7DFC
+.extern FUN_020B7E10
+.extern FUN_020B7E1C
+.extern FUN_020B80B4
+.extern FUN_020B844C
+.extern FUN_020B8474
+.extern FUN_020B849C
+.extern FUN_020BAC98
+.extern FUN_020BAFB8
+.extern FUN_020BB1C0
+.extern FUN_020BB394
+.extern FUN_020BB59C
+.extern FUN_020BB7F4
+.extern FUN_020BC0FC
+.extern FUN_020BC13C
+.extern FUN_020BC2A0
+.extern FUN_020C0174
+.extern FUN_020C01A0
+.extern FUN_020C01D0
+.extern FUN_020C03B8
+.extern FUN_020C041C
+.extern FUN_020C044C
+.extern FUN_020C04DC
+.extern FUN_020C0510
+.extern FUN_020C054C
+.extern FUN_020C0670
+.extern FUN_020C0688
+.extern FUN_020C0DD4
+.extern FUN_020C0E14
+.extern FUN_020C0E7C
+.extern FUN_020C0EA4
+.extern FUN_020C0EF4
+.extern FUN_020C0F30
+.extern FUN_020C0F50
+.extern FUN_020C0F68
+.extern FUN_020C0F80
+.extern FUN_020C0F8C
+.extern FUN_020C0F9C
+.extern FUN_020C0FDC
+.extern FUN_020C1040
+.extern FUN_020C10A4
+.extern FUN_020C1148
+.extern FUN_020C1180
+.extern FUN_020C1E58
+.extern FUN_020C1E68
+.extern FUN_020C1EA4
+.extern FUN_020C1F54
+.extern FUN_020C1FA4
+.extern FUN_020C1FF0
+.extern FUN_020C20DC
+.extern FUN_020C2104
+.extern FUN_020C217C
+.extern FUN_020C226C
+.extern FUN_020C22D0
+.extern FUN_020C23FC
+.extern FUN_020C26F8
+.extern FUN_020C2828
+.extern FUN_020C290C
+.extern FUN_020C2A94
+.extern FUN_020C35E0
+.extern FUN_020C360C
+.extern FUN_020C3640
+.extern FUN_020C3674
+.extern FUN_020C36A8
+.extern FUN_020C3910
+.extern FUN_020C3980
+.extern FUN_020C39CC
+.extern FUN_020C3EA4
+.extern FUN_020C3EB0
+.extern FUN_020C6034
+.extern FUN_020C605C
+.extern FUN_021D74E0
+.extern FUN_021D76AC
+.extern FUN_021D77C4
+.extern FUN_021D7800
+.extern FUN_021D78FC
+.extern FUN_021D79B4
+.extern FUN_021D7CA4
+.extern FUN_021D7F8C
+.extern FUN_021D8018
+.extern FUN_021D8164
+.extern FUN_021D82BC
+.extern FUN_021D8320
+.extern FUN_021D836C
+.extern FUN_021D83A8
+.extern FUN_021D83C0
+.extern FUN_021D844C
+.extern FUN_021D8494
+.extern FUN_021D85FC
+.extern FUN_021D8624
+.extern FUN_021D865C
+.extern FUN_021D8758
+.extern FUN_021D8820
+.extern FUN_021D88E4
+.extern FUN_021D89CC
+.extern FUN_021D8B64
+.extern FUN_021D8C24
+.extern FUN_021D917C
+.extern FUN_021D959C
+.extern FUN_021D967C
+.extern FUN_021D96F4
+.extern FUN_021D9708
+.extern FUN_021D971C
+.extern FUN_021D9820
+.extern FUN_021D99F8
+.extern FUN_021DA464
+.extern FUN_021DA4EC
+.extern FUN_021DA54C
+.extern FUN_021DA58C
+.extern FUN_021DA5B8
+.extern FUN_021DA5C8
+.extern FUN_021DA5D0
+.extern FUN_021DA5D8
+.extern FUN_021DA7B4
+.extern FUN_021DAAA4
+.extern FUN_021DAC70
+.extern FUN_021DAE40
+.extern FUN_021DAED4
+.extern FUN_021DAF28
+.extern FUN_021DAF78
+.extern FUN_021DAF98
+.extern FUN_021DB030
+.extern FUN_021DB7E8
+.extern FUN_021DB858
+.extern FUN_021DC174
+.extern FUN_021DD6F0
+.extern FUN_021DD718
+.extern FUN_021DDB08
+.extern FUN_021E1374
+.extern FUN_021E1858
+.extern FUN_021E1994
+.extern FUN_021E1BF8
+.extern FUN_021E1C4C
+.extern FUN_021E1C54
+.extern FUN_021E1ECC
+.extern FUN_021E1F34
+.extern FUN_021E1F58
+.extern FUN_021E1F60
+.extern FUN_021E2464
+.extern FUN_021E2608
+.extern FUN_021E26CC
+.extern FUN_021E27E8
+.extern FUN_021E288C
+.extern FUN_021E28A0
+.extern FUN_021E2950
+.extern FUN_021E29B4
+.extern FUN_021E29C8
+.extern FUN_021E2A70
+.extern FUN_021E2AD4
+.extern FUN_021E2B80
+.extern FUN_021E2B9C
+.extern FUN_021E2BB8
+.extern FUN_021E2BD0
+.extern FUN_021E2C24
+.extern FUN_021E2C58
+.extern FUN_021E2CBC
+.extern FUN_021E32F0
+.extern FUN_021E331C
+.extern FUN_021E3424
+.extern FUN_021E3444
+.extern FUN_021E495C
+.extern FUN_021E4C54
+.extern FUN_021E4C60
+.extern FUN_021E4DE4
+.extern FUN_021E5614
+.extern FUN_021E57D4
+.extern FUN_021E5970
+.extern FUN_021E5B30
+.extern FUN_021E5FD8
+.extern FUN_021E5FE0
+.extern FUN_021E6410
+.extern FUN_021E643C
+.extern FUN_021E6990
+.extern FUN_021E69BC
+.extern FUN_021E6BF4
+.extern FUN_021E7030
+.extern FUN_021E70F0
+.extern FUN_021E7138
+.extern FUN_021E7184
+.extern FUN_021E71E8
+.extern FUN_021E7750
+.extern FUN_021E799C
+.extern FUN_021E7AC0
+.extern FUN_021E7EA0
+.extern FUN_021E7EB0
+.extern FUN_021E7EC4
+.extern FUN_021E7EC8
+.extern FUN_021E7ED0
+.extern FUN_021E7ED8
+.extern FUN_021E7FBC
+.extern FUN_021E8128
+.extern FUN_021E8130
+.extern FUN_021E8140
+.extern FUN_021E8144
+.extern FUN_021E8148
+.extern FUN_021E8158
+.extern FUN_021E81BC
+.extern FUN_021E84F4
+.extern FUN_021E856C
+.extern FUN_021E8588
+.extern FUN_021E85E4
+.extern FUN_021E85FC
+.extern FUN_021EAE90
+.extern FUN_021EB044
+.extern FUN_021EC57C
+.extern FUN_021EC71C
+.extern FUN_021EC854
+.extern FUN_021EC864
+.extern FUN_021ECD64
+.extern FUN_021ECF14
+.extern FUN_021ED0CC
+.extern FUN_021ED49C
+.extern FUN_021ED4E0
+.extern FUN_021ED52C
+.extern FUN_021ED5C4
+.extern FUN_021ED5EC
+.extern FUN_021ED644
+.extern FUN_021ED940
+.extern FUN_021EDA48
+.extern FUN_021EDBC8
+.extern FUN_021EF5E0
+.extern FUN_021EF604
+.extern FUN_021EF620
+.extern FUN_021EF654
+.extern FUN_021EF824
+.extern FUN_021EF844
+.extern FUN_021EF8C8
+.extern FUN_021EF8DC
+.extern FUN_021EFA9C
+.extern FUN_021F02C4
+.extern FUN_021F1D8C
+.extern FUN_021F1DC8
+.extern FUN_021F1DFC
+.extern FUN_021F1EC0
+.extern FUN_021F1F78
+.extern FUN_021F2094
+.extern FUN_021F20D8
+.extern FUN_021F20F8
+.extern FUN_021F2AF4
+.extern FUN_021F2E0C
+.extern FUN_021F2E28
+.extern FUN_021F2F48
+.extern FUN_021F2F6C
+.extern FUN_021F3A18
+.extern FUN_021F3AB4
+.extern FUN_021F3B4C
+.extern FUN_021F3B7C
+.extern FUN_021F3DA4
+.extern FUN_021F44D8
+.extern FUN_021F4520
+.extern FUN_021F4568
+.extern FUN_021F4594
+.extern FUN_021F45E8
+.extern FUN_021F4608
+.extern FUN_021F4BD0
+.extern FUN_021F4C88
+.extern FUN_021F4D80
+.extern FUN_021F4DC8
+.extern FUN_021F4E7C
+.extern FUN_021F57EC
+.extern FUN_021F5C44
+.extern FUN_021F61DC
+.extern FUN_021F61E8
+.extern FUN_02211E60
+.extern FUN_0222D5C0
+.extern FUN_0222DAEC
+.extern FUN_0222DD1C
+.extern FUN_0222DD38
+.extern FUN_0222E2BC
+.extern FUN_0222E360
+.extern FUN_0222E3A0
+.extern FUN_0222E7E8
+.extern FUN_0222E874
+.extern FUN_0222ED34
+.extern FUN_0222EDBC
+.extern FUN_0222F440
+.extern FUN_0222F480
+.extern FUN_0222F7E0
+.extern FUN_0222F990
+.extern FUN_022300D4
+.extern FUN_022300DC
+.extern FUN_022300E4
+.extern FUN_022300E8
+.extern FUN_022300F4
+.extern FUN_02230100
+.extern FUN_0223010C
+.extern FUN_02230118
+.extern FUN_02230124
+.extern FUN_02230F3C
+.extern FUN_02230F70
+.extern FUN_02230F80
+.extern FUN_02231344
+.extern FUN_02231350
+.extern FUN_0223135C
+.extern FUN_02231368
+.extern FUN_02231374
+.extern FUN_02239944
+.extern FUN_02239AAC
+.extern FUN_0223CACC
+.extern FUN_0223CB08
+.extern FUN_0223CCDC
+.extern FUN_0223CD7C
+.extern FUN_0223D3D0
+.extern FUN_0223D638
+.extern FUN_0223D648
+.extern FUN_0223DFB4
+.extern FUN_0223E060
+.extern FUN_0223E118
+.extern FUN_0223E154
+.extern FUN_0223E1A4
+.extern FUN_0223E1E0
+.extern FUN_0223E2AC
+.extern FUN_0223E4A8
+.extern FUN_0223E4D4
+.extern FUN_0223E554
+.extern FUN_0223E6B8
+.extern FUN_0223E734
+.extern FUN_0223E7FC
+.extern FUN_0223EB8C
+.extern FUN_0223EF7C
+.extern FUN_0223F4D8
+.extern FUN_0223F4F4
+.extern FUN_0223F8D8
+.extern FUN_0223FCE8
+.extern FUN_02240790
+.extern FUN_022407CC
+.extern FUN_022407DC
+.extern FUN_022407F8
+.extern FUN_02240834
+.extern FUN_02240844
+.extern FUN_0224089C
+.extern FUN_022408FC
+.extern FUN_022411F4
+.extern FUN_02241230
+.extern FUN_02241914
+.extern FUN_02242A38
+.extern FUN_02242BE0
+.extern FUN_0224312C
+.extern FUN_022432E4
+.extern FUN_0224339C
+.extern FUN_022433A8
+.extern FUN_022433B0
+.extern FUN_022433B8
+.extern FUN_022433F8
+.extern FUN_02243408
+.extern FUN_02243428
+.extern FUN_02243448
+.extern FUN_0224345C
+.extern FUN_022434AC
+.extern FUN_022434BC
+.extern FUN_022434D0
+.extern FUN_02243694
+.extern FUN_022436C8
+.extern FUN_022436E8
+.extern FUN_02243780
+.extern FUN_02243838
+.extern FUN_022438DC
+.extern FUN_022438E0
+.extern FUN_022438FC
+.extern FUN_02243920
+.extern FUN_022439F8
+.extern FUN_02243AD8
+.extern FUN_02243BA8
+.extern FUN_02243C5C
+.extern FUN_02243D3C
+.extern FUN_02243DA0
+.extern FUN_02243DB8
+.extern FUN_02243DC0
+.extern FUN_02243DC4
+.extern FUN_02243DD8
+.extern FUN_02243DE0
+.extern FUN_02243E34
+.extern FUN_02243E74
+.extern FUN_02243F18
+.extern FUN_02243F50
+.extern FUN_02243F9C
+.extern FUN_02244210
+.extern FUN_02244558
+.extern FUN_02244660
+.extern FUN_022446BC
+.extern FUN_022446E0
+.extern FUN_022446FC
+.extern FUN_02244758
+.extern FUN_02244770
+.extern FUN_02244824
+.extern FUN_0224484C
+.extern FUN_02244D1C
+.extern FUN_02244D20
+.extern FUN_02244D3C
+.extern FUN_02244D40
+.extern FUN_02244D58
+.extern FUN_02244D98
+.extern FUN_02244DA0
+.extern FUN_02244DB0
+.extern FUN_02244DBC
+.extern FUN_02244DC4
+.extern FUN_02244EF8
+.extern FUN_02244F18
+.extern FUN_02244F24
+.extern FUN_02244F2C
+.extern FUN_02245088
+.extern FUN_02245114
+.extern FUN_02245190
+.extern FUN_02245198
+.extern FUN_022451F0
+.extern FUN_0224525C
+.extern FUN_022452A4
+.extern FUN_02245324
+.extern FUN_02245340
+.extern FUN_02245358
+.extern FUN_0224566C
+.extern FUN_022456E8
+.extern FUN_02245844
+.extern FUN_02245910
+.extern FUN_02245F1C
+.extern FUN_02245F4C
+.extern FUN_02245FA0
+.extern FUN_022461A4
+.extern FUN_022461B8
+.extern FUN_0224666C
+.extern FUN_022466A0
+.extern FUN_022466AC
+.extern FUN_02246F1C
+.extern FUN_02247294
+.extern FUN_022472AC
+.extern FUN_02247544
+.extern FUN_02247614
+.extern FUN_02247728
+.extern FUN_02247808
+.extern FUN_02247970
+.extern FUN_02247A34
+.extern FUN_022483BC
+.extern FUN_022483E0
+.extern FUN_022483EC
+.extern FUN_02248724
+.extern FUN_0224884C
+.extern FUN_022488CC
+.extern FUN_022488EC
+.extern FUN_022488F4
+.extern FUN_022488FC
+.extern FUN_0224891C
+.extern FUN_02248B54
+.extern FUN_02248B58
+.extern FUN_02248B5C
+.extern FUN_02248B60
+.extern FUN_02248B6C
+.extern FUN_02248CC0
+.extern FUN_02248CD0
+.extern FUN_02248DF8
+.extern FUN_02248F70
+.extern FUN_02248FE0
+.extern FUN_02249038
+.extern FUN_022490A0
+.extern FUN_022491FC
+.extern FUN_022494C8
+.extern FUN_02249508
+.extern FUN_02249668
+.extern FUN_022497E8
+.extern FUN_02249E6C
+.extern FUN_02249E78
+.extern FUN_02249E84
+.extern FUN_02249E90
+.extern FUN_0224A310
+.extern FUN_0224A528
+.extern FUN_0224A7C8
+.extern FUN_0224ABAC
+.extern FUN_0224B124
+.extern FUN_0224B2C4
+.extern FUN_0224B568
+.extern FUN_0224B818
+.extern FUN_0224B86C
+.extern FUN_0224B9E0
+.extern FUN_0224BBEC
+.extern FUN_0224BD90
+.extern FUN_0224C038
+.extern FUN_0224C27C
+.extern FUN_0224C520
+.extern FUN_0224C678
+.extern FUN_0224C6E8
+.extern FUN_0224C6F4
+.extern FUN_0224C700
+.extern FUN_0224C8C8
+.extern FUN_0224CA2C
+.extern FUN_0224CA54
+.extern FUN_0224CA58
+.extern FUN_0224CA88
+.extern FUN_0224CA94
+.extern FUN_0224CAA0
+.extern FUN_0224CAB4
+.extern FUN_0224CB30
+.extern FUN_0224CBB0
+.extern FUN_0224CC24
+.extern FUN_0224CECC
+.extern FUN_0224D14C
+.extern FUN_0224D2E0
+.extern FUN_0224D3E8
+.extern FUN_0224D70C
+.extern FUN_0224D76C
+.extern FUN_0224D79C
+.extern FUN_0224DCB8
+.extern FUN_0224DD94
+.extern FUN_0224DDB8
+.extern FUN_0224E554
+.extern FUN_0224E764
+.extern FUN_0224E7C4
+.extern FUN_0224F12C
+.extern FUN_02252534
+.extern FUN_02252538
+.extern FUN_022567E0
+.extern FX_Div
+.extern FX_GetDivResult
+.extern FX_GetDivResultFx64c
+.extern FX_Init
+.extern FX_InvAsync
+.extern FX_Modf
+.extern FX_Sqrt
+.extern G2S_GetBG0CharPtr
+.extern G2S_GetBG1CharPtr
+.extern G2S_GetBG2CharPtr
+.extern G2S_GetBG3CharPtr
+.extern G2_GetBG0CharPtr
+.extern G2_GetBG1CharPtr
+.extern G2_GetBG2CharPtr
+.extern G2_GetBG3CharPtr
+.extern G2x_SetBGyAffine_
+.extern G2x_SetBlendAlpha_
+.extern G2x_SetBlendBrightness_
+.extern G3X_GetBoxTestResult
+.extern G3X_GetClipMtx
+.extern G3X_GetVectorMtx
+.extern G3X_Init
+.extern G3X_InitMtxStack
+.extern G3X_ResetMtxStack
+.extern G3X_SetClearColor
+.extern G3X_SetFog
+.extern G3_LoadMtx43
+.extern G3_MultMtx33
+.extern G3_MultMtx43
+.extern G3_RotX
+.extern G3_RotY
+.extern G3_RotZ
+.extern G3i_LookAt_
+.extern G3i_OrthoW_
+.extern G3i_PerspectiveW_
+.extern GXS_BeginLoadBGExtPltt
+.extern GXS_BeginLoadOBJExtPltt
+.extern GXS_EndLoadBGExtPltt
+.extern GXS_EndLoadOBJExtPltt
+.extern GXS_LoadBG0Char
+.extern GXS_LoadBG0Scr
+.extern GXS_LoadBG1Char
+.extern GXS_LoadBG1Scr
+.extern GXS_LoadBG2Char
+.extern GXS_LoadBG2Scr
+.extern GXS_LoadBG3Char
+.extern GXS_LoadBG3Scr
+.extern GXS_LoadBGExtPltt
+.extern GXS_LoadBGPltt
+.extern GXS_LoadOAM
+.extern GXS_LoadOBJ
+.extern GXS_LoadOBJExtPltt
+.extern GXS_LoadOBJPltt
+.extern GXS_SetGraphicsMode
+.extern GX_BeginLoadBGExtPltt
+.extern GX_BeginLoadClearImage
+.extern GX_BeginLoadOBJExtPltt
+.extern GX_BeginLoadTex
+.extern GX_BeginLoadTexPltt
+.extern GX_DisableBankForLCDC
+.extern GX_DispOff
+.extern GX_DispOn
+.extern GX_EndLoadBGExtPltt
+.extern GX_EndLoadClearImage
+.extern GX_EndLoadOBJExtPltt
+.extern GX_EndLoadTex
+.extern GX_EndLoadTexPltt
+.extern GX_GetBankForOBJ
+.extern GX_GetBankForOBJExtPltt
+.extern GX_GetBankForSubOBJ
+.extern GX_GetBankForSubOBJExtPltt
+.extern GX_HBlankIntr
+.extern GX_Init
+.extern GX_LoadBG0Char
+.extern GX_LoadBG0Scr
+.extern GX_LoadBG1Char
+.extern GX_LoadBG1Scr
+.extern GX_LoadBG2Char
+.extern GX_LoadBG2Scr
+.extern GX_LoadBG3Char
+.extern GX_LoadBG3Scr
+.extern GX_LoadBGExtPltt
+.extern GX_LoadBGPltt
+.extern GX_LoadClearImageColor
+.extern GX_LoadClearImageDepth
+.extern GX_LoadOAM
+.extern GX_LoadOBJ
+.extern GX_LoadOBJExtPltt
+.extern GX_LoadOBJPltt
+.extern GX_LoadTex
+.extern GX_LoadTexPltt
+.extern GX_ResetBankForBG
+.extern GX_ResetBankForBGExtPltt
+.extern GX_ResetBankForOBJ
+.extern GX_ResetBankForOBJExtPltt
+.extern GX_ResetBankForSubBG
+.extern GX_ResetBankForSubOBJ
+.extern GX_ResetBankForTex
+.extern GX_ResetBankForTexPltt
+.extern GX_SetBankForBG
+.extern GX_SetBankForBGExtPltt
+.extern GX_SetBankForLCDC
+.extern GX_SetBankForOBJ
+.extern GX_SetBankForOBJExtPltt
+.extern GX_SetBankForSubBG
+.extern GX_SetBankForSubBGExtPltt
+.extern GX_SetBankForSubOBJ
+.extern GX_SetBankForSubOBJExtPltt
+.extern GX_SetBankForTex
+.extern GX_SetBankForTexPltt
+.extern GX_SetGraphicsMode
+.extern GX_VBlankIntr
+.extern GXx_SetMasterBrightness_
+.extern IC_InvalidateAll
+.extern IC_InvalidateRange
+.extern InitGraphicMemory
+.extern InitScriptContext
+.extern InitSystemForTheGame
+.extern LoadFromNARC
+.extern LoadFromNARC_7
+.extern LoadFromNarc_2
+.extern LoadPlayerDataAddress
+.extern MATH_CalcCRC16
+.extern MATH_CalcCRC16CCITT
+.extern MATH_CalcCRC32
+.extern MATH_CalcCRC8
+.extern MATH_CalcHMACSHA1
+.extern MATH_CalcMD5
+.extern MATH_CalcSHA1
+.extern MATH_CountPopulation
+.extern MATH_MD5GetHash
+.extern MATH_MD5Init
+.extern MATH_MD5Update
+.extern MATH_SHA1GetHash
+.extern MATH_SHA1Init
+.extern MATH_SHA1Update
+.extern MATHi_CRC16InitTable
+.extern MATHi_CRC16InitTableRev
+.extern MATHi_CRC32InitTableRev
+.extern MATHi_CRC8InitTable
+.extern MATHi_CalcHMAC
+.extern MIC_DoSamplingAsync
+.extern MIC_Init
+.extern MIC_StartAutoSampling
+.extern MIC_StopAutoSampling
+.extern MI_Copy36B
+.extern MI_Copy48B
+.extern MI_Copy64B
+.extern MI_CpuCopy8
+.extern MI_CpuFill8
+.extern MI_DmaCopy16
+.extern MI_DmaCopy32
+.extern MI_DmaCopy32Async
+.extern MI_DmaFill32
+.extern MI_DmaFill32Async
+.extern MI_HBlankDmaCopy16
+.extern MI_HBlankDmaCopy32
+.extern MI_Init
+.extern MI_SendGXCommandAsync
+.extern MI_SendGXCommandAsyncFast
+.extern MI_StopDma
+.extern MI_SwapWord
+.extern MI_UncompressLZ8
+.extern MI_WaitDma
+.extern MI_Zero36B
+.extern MIi_CardDmaCopy32
+.extern MIi_CheckDma0SourceAddress
+.extern MIi_CpuClear16
+.extern MIi_CpuClear32
+.extern MIi_CpuClearFast
+.extern MIi_CpuCopy16
+.extern MIi_CpuCopy32
+.extern MIi_CpuCopyFast
+.extern MIi_CpuSend32
+.extern MIi_DmaSetParams
+.extern MIi_DmaSetParams_noInt
+.extern MIi_DmaSetParams_wait
+.extern MIi_DmaSetParams_wait_noInt
+.extern MIi_UncompressBackward
+.extern MTX_Concat33
+.extern MTX_Concat43
+.extern MTX_Identity33_
+.extern MTX_Identity43_
+.extern MTX_MultVec33
+.extern MTX_MultVec43
+.extern MTX_RotX33_
+.extern MTX_RotY33_
+.extern MTX_RotZ33_
+.extern MTX_Scale43_
+.extern NitroMain
+.extern OS_AllocFromArenaHi
+.extern OS_AllocFromArenaLo
+.extern OS_AllocFromHeap
+.extern OS_CancelAlarm
+.extern OS_CreateAlarm
+.extern OS_CreateThread
+.extern OS_DestroyThread
+.extern OS_DisableInterrupts
+.extern OS_DisableIrqMask
+.extern OS_DisableScheduler
+.extern OS_EnableIrqMask
+.extern OS_EnableScheduler
+.extern OS_ExitThread
+.extern OS_FreeToHeap
+.extern OS_GetCpsrIrq
+.extern OS_GetDTCMAddress
+.extern OS_GetInitArenaHi
+.extern OS_GetInitArenaLo
+.extern OS_GetIrqFunction
+.extern OS_GetLockID
+.extern OS_GetLowEntropyData
+.extern OS_GetMacAddress
+.extern OS_GetOwnerInfo
+.extern OS_GetOwnerRtcOffset
+.extern OS_GetProcMode
+.extern OS_GetThreadPriority
+.extern OS_GetTick
+.extern OS_GetTickLo
+.extern OS_Halt
+.extern OS_IRQTable
+.extern OS_Init
+.extern OS_InitAlarm
+.extern OS_InitMessageQueue
+.extern OS_InitMutex
+.extern OS_InitTick
+.extern OS_IrqDummy
+.extern OS_IrqHandler
+.extern OS_IsAlarmAvailable
+.extern OS_IsRunOnEmulator
+.extern OS_IsThreadTerminated
+.extern OS_IsTickAvailable
+.extern OS_JamMessage
+.extern OS_JoinThread
+.extern OS_LockCartridge
+.extern OS_LockMutex
+.extern OS_ReadMessage
+.extern OS_ReadOwnerOfLockWord
+.extern OS_ReceiveMessage
+.extern OS_ReleaseLockID
+.extern OS_RescheduleThread
+.extern OS_ResetRequestIrqMask
+.extern OS_ResetSystem
+.extern OS_RestoreInterrupts
+.extern OS_SNPrintf
+.extern OS_SendMessage
+.extern OS_SetAlarm
+.extern OS_SetArenaHi
+.extern OS_SetArenaLo
+.extern OS_SetDPermissionsForProtectionRegion
+.extern OS_SetIrqFunction
+.extern OS_SetIrqMask
+.extern OS_SetThreadPriority
+.extern OS_Sleep
+.extern OS_SleepThread
+.extern OS_SpinWait
+.extern OS_Terminate
+.extern OS_TryLockCard
+.extern OS_TryLockCartridge
+.extern OS_TryLockMutex
+.extern OS_UnlockCard
+.extern OS_UnlockCartridge
+.extern OS_UnlockCartridge2
+.extern OS_UnlockMutex
+.extern OS_WaitIrq
+.extern OS_WakeupThread
+.extern OS_WakeupThreadDirect
+.extern OS_YieldThread
+.extern OSi_DoResetSystem
+.extern OSi_EnterDmaCallback
+.extern OSi_IrqDma0
+.extern OSi_IrqDma1
+.extern OSi_IrqDma2
+.extern OSi_IrqDma3
+.extern OSi_IrqThreadQueue
+.extern OSi_IrqTimer0
+.extern OSi_IrqTimer1
+.extern OSi_IrqTimer2
+.extern OSi_IrqTimer3
+.extern OSi_IsResetOccurred
+.extern OSi_MainExArenaEnabled
+.extern OSi_ThreadInfo
+.extern OSi_TryLockVram
+.extern OSi_UnlockVram
+.extern PM_AppendPostSleepCallback
+.extern PM_DeletePostSleepCallback
+.extern PM_DeletePreSleepCallback
+.extern PM_ForceToPowerOff
+.extern PM_GetBackLight
+.extern PM_GetLCDPower
+.extern PM_GoSleepMode
+.extern PM_Init
+.extern PM_PrependPreSleepCallback
+.extern PM_SetAmp
+.extern PM_SetAmpGain
+.extern PM_SetBackLight
+.extern PM_SetLCDPower
+.extern PMi_Lock
+.extern PMi_ReadRegister
+.extern PMi_SendPxiData
+.extern PMi_SendSleepStart
+.extern PMi_SetLED
+.extern PMi_SetLEDAsync
+.extern PMi_WaitBusy
+.extern PXI_Init
+.extern PXI_IsCallbackReady
+.extern PXI_SendWordByFifo
+.extern PXI_SetFifoRecvCallback
+.extern PXIi_HandlerRecvFifoNotEmpty
+.extern ProcessBlock
+.extern RTC_ConvertDateTimeToSecond
+.extern RTC_ConvertDateToDay
+.extern RTC_ConvertSecondToDateTime
+.extern RTC_GetDate
+.extern RTC_GetDateTimeAsync
+.extern RTC_GetTime
+.extern RTC_Init
+.extern RunScriptCommand
+.extern SDK_AUTOLOAD_DTCM_START
+.extern SDK_AUTOLOAD_LIST
+.extern SDK_AUTOLOAD_LIST_END
+.extern SDK_AUTOLOAD_START
+.extern SDK_MAIN_ARENA_LO
+.extern SDK_SECTION_ARENA_DTCM_START
+.extern SDK_SECTION_ARENA_EX_START
+.extern SDK_SECTION_ARENA_ITCM_START
+.extern SDK_STATIC_BSS_END
+.extern SDK_STATIC_BSS_START
+.extern SND_AssignWaveArc
+.extern SND_CalcChannelVolume
+.extern SND_DestroyBank
+.extern SND_DestroyWaveArc
+.extern SND_FlushCommand
+.extern SND_GetChannelStatus
+.extern SND_GetCurrentCommandTag
+.extern SND_GetFirstInstDataPos
+.extern SND_GetNextInstData
+.extern SND_GetPlayerStatus
+.extern SND_GetPlayerTickCounter
+.extern SND_GetWaveDataAddress
+.extern SND_GetWaveDataCount
+.extern SND_Init
+.extern SND_InvalidateBankData
+.extern SND_InvalidateSeqData
+.extern SND_InvalidateWaveData
+.extern SND_IsFinishedCommandTag
+.extern SND_LockChannel
+.extern SND_PauseSeq
+.extern SND_PrepareSeq
+.extern SND_RecvCommandReply
+.extern SND_ResetMasterPan
+.extern SND_SetChannelPan
+.extern SND_SetChannelTimer
+.extern SND_SetChannelVolume
+.extern SND_SetMasterPan
+.extern SND_SetOutputSelector
+.extern SND_SetPlayerChannelPriority
+.extern SND_SetPlayerVolume
+.extern SND_SetTrackAllocatableChannel
+.extern SND_SetTrackPan
+.extern SND_SetTrackPitch
+.extern SND_SetWaveDataAddress
+.extern SND_SetupAlarm
+.extern SND_SetupCapture
+.extern SND_SetupChannelPcm
+.extern SND_StartPreparedSeq
+.extern SND_StartTimer
+.extern SND_StopSeq
+.extern SND_StopTimer
+.extern SND_UnlockChannel
+.extern SND_WaitForCommandProc
+.extern STD_CopyLString
+.extern ScriptCall
+.extern ScriptJump
+.extern ScriptReadHalfword
+.extern ScriptReadWord
+.extern ScriptReturn
+.extern SetupBytecodeScript
+.extern SetupNativeScript
+.extern StopScript
+.extern StringCopy
+.extern StringCopyN
+.extern StringFillEOS
+.extern StringLength
+.extern StringNotEqual
+.extern StringNotEqualN
+.extern TP_CheckError
+.extern TP_GetCalibratedPoint
+.extern TP_GetLatestIndexInAuto
+.extern TP_GetLatestRawPointInAuto
+.extern TP_GetUserInfo
+.extern TP_Init
+.extern TP_RequestAutoSamplingStartAsync
+.extern TP_RequestAutoSamplingStopAsync
+.extern TP_RequestSamplingAsync
+.extern TP_SetCalibrateParam
+.extern TP_WaitBusy
+.extern TP_WaitRawResult
+.extern VEC_Add
+.extern VEC_CrossProduct
+.extern VEC_DotProduct
+.extern VEC_Fx16CrossProduct
+.extern VEC_Fx16DotProduct
+.extern VEC_Fx16Normalize
+.extern VEC_Mag
+.extern VEC_Normalize
+.extern VEC_Subtract
+.extern WM_Disable
+.extern WM_Disconnect
+.extern WM_Enable
+.extern WM_End
+.extern WM_EndDCF
+.extern WM_EndMP
+.extern WM_EndParent
+.extern WM_EndScan
+.extern WM_Finish
+.extern WM_GetAllowedChannel
+.extern WM_GetDispersionBeaconPeriod
+.extern WM_GetDispersionScanPeriod
+.extern WM_GetLinkLevel
+.extern WM_Init
+.extern WM_Initialize
+.extern WM_MeasureChannel
+.extern WM_PowerOff
+.extern WM_PowerOn
+.extern WM_Reset
+.extern WM_SetBeaconIndication
+.extern WM_SetDCFData
+.extern WM_SetEntry
+.extern WM_SetGameInfo
+.extern WM_SetIndCallback
+.extern WM_SetLifeTime
+.extern WM_SetMPDataToPortEx
+.extern WM_SetParentParameter
+.extern WM_SetPortCallback
+.extern WM_SetWEPKeyEx
+.extern WM_StartConnectEx
+.extern WM_StartDCF
+.extern WM_StartMP
+.extern WM_StartParent
+.extern WM_StartScan
+.extern WM_StartScanEx
+.extern WMi_GetStatusAddress
+.extern __call_static_initializers
+.extern __destroy_global_chain
+.extern _ddiv
+.extern _fadd
+.extern _fdiv
+.extern _feq
+.extern _ffix
+.extern _ffixu
+.extern _fflt
+.extern _ffltu
+.extern _fgr
+.extern _fmul
+.extern _fp_init
+.extern _fsub
+.extern _ll_mod
+.extern _ll_mul
+.extern _ll_sdiv
+.extern _ll_shl
+.extern _ll_udiv
+.extern _s32_div_f
+.extern _u32_div_f
+.extern _u32_div_not_0_f
+.extern abs
+.extern cardi_common
+.extern gScriptCmdTable
+.extern memcmp
+.extern memcpy
+.extern memmove
+.extern strcmp
+.extern strcpy
+.extern strlen
+.extern tempName_NNS_FndAllocFromExpHeapEx
+.extern tempName_NNS_FndCreateExpHeapEx
+.extern thunk_FUN_02096e4c
+.extern thunk_FUN_02097190
+.extern thunk_FUN_020adc8c
+.extern thunk_FUN_020adc8c_2
+.extern thunk_FUN_020afda0
+.extern thunk_FUN_020afda0_2
+.extern thunk_FUN_020b5040
+.extern Unk_0210683C
+.extern Unk_02106840
+.extern Unk_02106900
+.extern Unk_02106A00
+.extern Unk_02106A04
+.extern OSi_IrqCallbackInfo
+.extern OSi_IrqCallbackInfoIndex
+.extern SDK_SYS_STACKSIZE
+.extern SDK_IRQ_STACKSIZE
+.extern OSi_IsThreadInitialized
+.extern OSi_LauncherThread
+.extern OSi_CurrentThreadPtr
+.extern OSi_IdleThread
+.extern OSi_IdleThreadStack
+.extern OSi_RescheduleCount
+.extern OSi_SystemCallbackInSwitchThread
+.extern OSi_Initialized
+.extern OSi_HeapInfo
+.extern OSi_DebuggerHandler
+.extern OSi_ExContext
+.extern OSi_UserExceptionHandler
+.extern OSi_UserExceptionHandlerArg
+.extern OSi_TimerReserved
+.extern OSi_UseTick
+.extern OSi_NeedResetTimer
+.extern OSi_TickCounter
+.extern OSi_UseAlarm
+.extern OSi_AlarmQueue
+.extern OSi_UseVAlarm
+.extern OSi_PreviousVCount
+.extern OSi_VFrameCount
+.extern OSi_VAlarmQueue
+.extern OSi_IsInitReset
+.extern OSi_vramExclusive
+.extern OSi_vramLockId
+.extern OSi_ThreadIdCount
+.extern OSi_StackForDestructor
diff --git a/arm7/undefined_syms.txt b/arm7/undefined_syms.txt
new file mode 100644
index 00000000..075d22a9
--- /dev/null
+++ b/arm7/undefined_syms.txt
@@ -0,0 +1,506 @@
+SDK_SYS_STACKSIZE = 0x00000000;
+CONST_34 = 0x00000034;
+CONST_3F = 0x0000003F;
+SDK_IRQ_STACKSIZE = 0x00000400;
+
+// .data
+// OS
+OSi_IrqCallbackInfoIndex = 0x02106818;
+// DGT
+Unk_0210683C = 0x0210683C;
+Unk_02106840 = 0x02106840;
+Unk_02106900 = 0x02106900;
+Unk_02106A00 = 0x02106A00;
+Unk_02106A04 = 0x02106A04;
+
+// .bss
+gBacklightTop = 0x02106FA0;
+gBacklightTop_2 = 0x02106FA0;
+gUnknown2106FB8 = 0x02106FB8;
+gUnknown21C48B8 = 0x021C48B8;
+gUnk021C4918 = 0x021C4918;
+OSi_IrqCallbackInfo = 0x021D341C;
+isInitialized = 0x021D347C;
+OSi_StackForDestructor = 0x021D3480;
+OSi_RescheduleCount = 0x021D3484;
+OSi_ThreadIdCount = 0x021D3488;
+OSi_SystemCallbackInSwitchThread = 0x021D348C;
+OSi_CurrentThreadPtr = 0x021D3490;
+OSi_IsThreadInitialized = 0x021D3494;
+OSi_ThreadInfo = 0x021D3498;
+OSi_IdleThread = 0x021D34A8;
+OSi_LauncherThread = 0x021D3568;
+OSi_IdleThreadStack = 0x021D3628;
+OSi_Initialized = 0x021D36F0;
+OSi_MainExArenaEnabled = 0x021D36F4;
+OSi_HeapInfo = 0x021D36F8;
+OSi_UserExceptionHandler = 0x021D371C;
+OSi_UserExceptionHandlerArg = 0x21D3720;
+OSi_DebuggerHandler = 0x021D3724;
+OSi_ExContext = 0x021D3728;
+OSi_TimerReserved = 0x021D37A8;
+OSi_UseTick = 0x021D37AC;
+OSi_NeedResetTimer = 0x021D37B0;
+OSi_TickCounter = 0x021D37B4;
+OSi_UseAlarm = 0x021D37BC;
+OSi_AlarmQueue = 0x021D37C0;
+OSi_UseVAlarm = 0x021D37C8;
+OSi_PreviousVCount = 0x021D37CC;
+OSi_VFrameCount = 0x021D37D0;
+OSi_VAlarmQueue = 0x021D37D4;
+OSi_IsInitReset = 0x021D37DC;
+OSi_IsResetOccurred = 0x021D37E0;
+OSi_vramExclusive = 0x021D37E4;
+OSi_vramLockId = 0x021D37E8;
+cardi_common = 0x021D55C0;
+
+// Overlay
+FUN_021D74E0 = 0x021D74E0;
+FUN_021D76AC = 0x021D76AC;
+gUnk021D76C8 = 0x021D76C8;
+FUN_021D77C4 = 0x021D77C4;
+FUN_021D7800 = 0x021D7800;
+FUN_021D78FC = 0x021D78FC;
+FUN_021D79B4 = 0x021D79B4;
+FUN_021D7CA4 = 0x021D7CA4;
+FUN_021D7F8C = 0x021D7F8C;
+FUN_021D8018 = 0x021D8018;
+FUN_021D8164 = 0x021D8164;
+FUN_021D82BC = 0x021D82BC;
+FUN_021D8320 = 0x021D8320;
+FUN_021D836C = 0x021D836C;
+FUN_021D83A8 = 0x021D83A8;
+FUN_021D83C0 = 0x021D83C0;
+FUN_021D844C = 0x021D844C;
+FUN_021D8494 = 0x021D8494;
+FUN_021D85FC = 0x021D85FC;
+FUN_021D8624 = 0x021D8624;
+FUN_021D865C = 0x021D865C;
+FUN_021D8758 = 0x021D8758;
+FUN_021D8820 = 0x021D8820;
+FUN_021D88E4 = 0x021D88E4;
+FUN_021D89CC = 0x021D89CC;
+FUN_021D8B64 = 0x021D8B64;
+FUN_021D8C24 = 0x021D8C24;
+FUN_021D917C = 0x021D917C;
+FUN_021D959C = 0x021D959C;
+FUN_021D967C = 0x021D967C;
+FUN_021D96F4 = 0x021D96F4;
+FUN_021D9708 = 0x021D9708;
+FUN_021D971C = 0x021D971C;
+FUN_021D9820 = 0x021D9820;
+FUN_021D99F8 = 0x021D99F8;
+FUN_021DA464 = 0x021DA464;
+FUN_021DA4EC = 0x021DA4EC;
+FUN_021DA54C = 0x021DA54C;
+FUN_021DA58C = 0x021DA58C;
+FUN_021DA5B8 = 0x021DA5B8;
+FUN_021DA5C8 = 0x021DA5C8;
+FUN_021DA5D0 = 0x021DA5D0;
+FUN_021DA5D8 = 0x021DA5D8;
+FUN_021DA7B4 = 0x021DA7B4;
+FUN_021DAAA4 = 0x021DAAA4;
+FUN_021DAC70 = 0x021DAC70;
+FUN_021DAE40 = 0x021DAE40;
+FUN_021DAED4 = 0x021DAED4;
+FUN_021DAF28 = 0x021DAF28;
+FUN_021DAF78 = 0x021DAF78;
+FUN_021DAF98 = 0x021DAF98;
+FUN_021DB030 = 0x021DB030;
+FUN_021DB7E8 = 0x021DB7E8;
+FUN_021DB858 = 0x021DB858;
+gUnk021DBE18 = 0x021DBE18;
+FUN_021DC174 = 0x021DC174;
+FUN_021DD6F0 = 0x021DD6F0;
+FUN_021DD718 = 0x021DD718;
+FUN_021DDB08 = 0x021DDB08;
+FUN_021E1374 = 0x021E1374;
+FUN_021E1858 = 0x021E1858;
+FUN_021E1994 = 0x021E1994;
+FUN_021E1BF8 = 0x021E1BF8;
+FUN_021E1C4C = 0x021E1C4C;
+FUN_021E1C54 = 0x021E1C54;
+FUN_021E1ECC = 0x021E1ECC;
+FUN_021E1F34 = 0x021E1F34;
+FUN_021E1F58 = 0x021E1F58;
+FUN_021E1F60 = 0x021E1F60;
+FUN_021E2464 = 0x021E2464;
+FUN_021E2608 = 0x021E2608;
+FUN_021E26CC = 0x021E26CC;
+FUN_021E27E8 = 0x021E27E8;
+FUN_021E288C = 0x021E288C;
+FUN_021E28A0 = 0x021E28A0;
+FUN_021E2950 = 0x021E2950;
+FUN_021E29B4 = 0x021E29B4;
+FUN_021E29C8 = 0x021E29C8;
+FUN_021E2A70 = 0x021E2A70;
+FUN_021E2AD4 = 0x021E2AD4;
+FUN_021E2B80 = 0x021E2B80;
+FUN_021E2B9C = 0x021E2B9C;
+FUN_021E2BB8 = 0x021E2BB8;
+FUN_021E2BD0 = 0x021E2BD0;
+FUN_021E2C24 = 0x021E2C24;
+FUN_021E2C58 = 0x021E2C58;
+FUN_021E2CBC = 0x021E2CBC;
+FUN_021E32F0 = 0x021E32F0;
+FUN_021E331C = 0x021E331C;
+FUN_021E3424 = 0x021E3424;
+FUN_021E3444 = 0x021E3444;
+FUN_021E495C = 0x021E495C;
+FUN_021E4C54 = 0x021E4C54;
+FUN_021E4C60 = 0x021E4C60;
+FUN_021E4DE4 = 0x021E4DE4;
+FUN_021E5614 = 0x021E5614;
+FUN_021E57D4 = 0x021E57D4;
+FUN_021E5970 = 0x021E5970;
+FUN_021E5B30 = 0x021E5B30;
+FUN_021E5FD8 = 0x021E5FD8;
+FUN_021E5FE0 = 0x021E5FE0;
+FUN_021E6410 = 0x021E6410;
+FUN_021E643C = 0x021E643C;
+FUN_021E6990 = 0x021E6990;
+FUN_021E69BC = 0x021E69BC;
+FUN_021E6BF4 = 0x021E6BF4;
+FUN_021E7030 = 0x021E7030;
+FUN_021E70F0 = 0x021E70F0;
+FUN_021E7138 = 0x021E7138;
+FUN_021E7184 = 0x021E7184;
+FUN_021E71E8 = 0x021E71E8;
+FUN_021E7750 = 0x021E7750;
+FUN_021E799C = 0x021E799C;
+FUN_021E7AC0 = 0x021E7AC0;
+FUN_021E7EA0 = 0x021E7EA0;
+FUN_021E7EB0 = 0x021E7EB0;
+FUN_021E7EC4 = 0x021E7EC4;
+FUN_021E7EC8 = 0x021E7EC8;
+FUN_021E7ED0 = 0x021E7ED0;
+FUN_021E7ED8 = 0x021E7ED8;
+FUN_021E7FBC = 0x021E7FBC;
+FUN_021E8128 = 0x021E8128;
+FUN_021E8130 = 0x021E8130;
+FUN_021E8140 = 0x021E8140;
+FUN_021E8144 = 0x021E8144;
+FUN_021E8148 = 0x021E8148;
+FUN_021E8158 = 0x021E8158;
+FUN_021E81BC = 0x021E81BC;
+FUN_021E84F4 = 0x021E84F4;
+FUN_021E856C = 0x021E856C;
+FUN_021E8588 = 0x021E8588;
+FUN_021E85E4 = 0x021E85E4;
+FUN_021E85FC = 0x021E85FC;
+FUN_021EAE90 = 0x021EAE90;
+FUN_021EB044 = 0x021EB044;
+FUN_021EC57C = 0x021EC57C;
+FUN_021EC71C = 0x021EC71C;
+FUN_021EC854 = 0x021EC854;
+FUN_021EC864 = 0x021EC864;
+FUN_021ECD64 = 0x021ECD64;
+FUN_021ECF14 = 0x021ECF14;
+FUN_021ED0CC = 0x021ED0CC;
+FUN_021ED49C = 0x021ED49C;
+FUN_021ED4E0 = 0x021ED4E0;
+FUN_021ED52C = 0x021ED52C;
+FUN_021ED5C4 = 0x021ED5C4;
+FUN_021ED5EC = 0x021ED5EC;
+FUN_021ED644 = 0x021ED644;
+FUN_021ED940 = 0x021ED940;
+FUN_021EDA48 = 0x021EDA48;
+FUN_021EDBC8 = 0x021EDBC8;
+FUN_021EF5E0 = 0x021EF5E0;
+FUN_021EF604 = 0x021EF604;
+FUN_021EF620 = 0x021EF620;
+FUN_021EF654 = 0x021EF654;
+FUN_021EF824 = 0x021EF824;
+FUN_021EF844 = 0x021EF844;
+FUN_021EF8C8 = 0x021EF8C8;
+FUN_021EF8DC = 0x021EF8DC;
+FUN_021EFA9C = 0x021EFA9C;
+FUN_021F02C4 = 0x021F02C4;
+FUN_021F1D8C = 0x021F1D8C;
+FUN_021F1DC8 = 0x021F1DC8;
+FUN_021F1DFC = 0x021F1DFC;
+FUN_021F1EC0 = 0x021F1EC0;
+FUN_021F1F78 = 0x021F1F78;
+FUN_021F2094 = 0x021F2094;
+FUN_021F20D8 = 0x021F20D8;
+FUN_021F20F8 = 0x021F20F8;
+FUN_021F2AF4 = 0x021F2AF4;
+FUN_021F2E0C = 0x021F2E0C;
+FUN_021F2E28 = 0x021F2E28;
+FUN_021F2F48 = 0x021F2F48;
+FUN_021F2F6C = 0x021F2F6C;
+FUN_021F3A18 = 0x021F3A18;
+FUN_021F3AB4 = 0x021F3AB4;
+FUN_021F3B4C = 0x021F3B4C;
+FUN_021F3B7C = 0x021F3B7C;
+FUN_021F3DA4 = 0x021F3DA4;
+FUN_021F44D8 = 0x021F44D8;
+FUN_021F4520 = 0x021F4520;
+FUN_021F4568 = 0x021F4568;
+FUN_021F4594 = 0x021F4594;
+FUN_021F45E8 = 0x021F45E8;
+FUN_021F4608 = 0x021F4608;
+FUN_021F4BD0 = 0x021F4BD0;
+FUN_021F4C88 = 0x021F4C88;
+FUN_021F4D80 = 0x021F4D80;
+FUN_021F4DC8 = 0x021F4DC8;
+FUN_021F4E7C = 0x021F4E7C;
+FUN_021F57EC = 0x021F57EC;
+FUN_021F5C44 = 0x021F5C44;
+FUN_021F61DC = 0x021F61DC;
+FUN_021F61E8 = 0x021F61E8;
+FUN_02211E60 = 0x02211E60;
+FUN_0222D5C0 = 0x0222D5C0;
+FUN_0222DAEC = 0x0222DAEC;
+FUN_0222DD1C = 0x0222DD1C;
+FUN_0222DD38 = 0x0222DD38;
+FUN_0222E2BC = 0x0222E2BC;
+FUN_0222E360 = 0x0222E360;
+FUN_0222E3A0 = 0x0222E3A0;
+FUN_0222E7E8 = 0x0222E7E8;
+FUN_0222E874 = 0x0222E874;
+FUN_0222ED34 = 0x0222ED34;
+FUN_0222EDBC = 0x0222EDBC;
+FUN_0222F440 = 0x0222F440;
+FUN_0222F480 = 0x0222F480;
+FUN_0222F7E0 = 0x0222F7E0;
+FUN_0222F990 = 0x0222F990;
+FUN_022300D4 = 0x022300D4;
+FUN_022300DC = 0x022300DC;
+FUN_022300E4 = 0x022300E4;
+FUN_022300E8 = 0x022300E8;
+FUN_022300F4 = 0x022300F4;
+FUN_02230100 = 0x02230100;
+FUN_0223010C = 0x0223010C;
+FUN_02230118 = 0x02230118;
+FUN_02230124 = 0x02230124;
+FUN_02230F3C = 0x02230F3C;
+FUN_02230F70 = 0x02230F70;
+FUN_02230F80 = 0x02230F80;
+FUN_02231344 = 0x02231344;
+FUN_02231350 = 0x02231350;
+FUN_0223135C = 0x0223135C;
+FUN_02231368 = 0x02231368;
+FUN_02231374 = 0x02231374;
+FUN_02239944 = 0x02239944;
+FUN_02239AAC = 0x02239AAC;
+FUN_0223CACC = 0x0223CACC;
+FUN_0223CB08 = 0x0223CB08;
+FUN_0223CCDC = 0x0223CCDC;
+FUN_0223CD7C = 0x0223CD7C;
+FUN_0223D3D0 = 0x0223D3D0;
+FUN_0223D638 = 0x0223D638;
+FUN_0223D648 = 0x0223D648;
+FUN_0223DFB4 = 0x0223DFB4;
+FUN_0223E060 = 0x0223E060;
+FUN_0223E118 = 0x0223E118;
+FUN_0223E154 = 0x0223E154;
+FUN_0223E1A4 = 0x0223E1A4;
+FUN_0223E1E0 = 0x0223E1E0;
+FUN_0223E2AC = 0x0223E2AC;
+FUN_0223E4A8 = 0x0223E4A8;
+FUN_0223E4D4 = 0x0223E4D4;
+FUN_0223E554 = 0x0223E554;
+FUN_0223E6B8 = 0x0223E6B8;
+FUN_0223E734 = 0x0223E734;
+FUN_0223E7FC = 0x0223E7FC;
+FUN_0223EB8C = 0x0223EB8C;
+FUN_0223EF7C = 0x0223EF7C;
+FUN_0223F4D8 = 0x0223F4D8;
+FUN_0223F4F4 = 0x0223F4F4;
+FUN_0223F8D8 = 0x0223F8D8;
+FUN_0223FCE8 = 0x0223FCE8;
+FUN_02240790 = 0x02240790;
+FUN_022407CC = 0x022407CC;
+FUN_022407DC = 0x022407DC;
+FUN_022407F8 = 0x022407F8;
+FUN_02240834 = 0x02240834;
+FUN_02240844 = 0x02240844;
+FUN_0224089C = 0x0224089C;
+FUN_022408FC = 0x022408FC;
+FUN_022411F4 = 0x022411F4;
+FUN_02241230 = 0x02241230;
+FUN_02241914 = 0x02241914;
+FUN_02242A38 = 0x02242A38;
+FUN_02242BE0 = 0x02242BE0;
+FUN_0224312C = 0x0224312C;
+FUN_022432E4 = 0x022432E4;
+FUN_0224339C = 0x0224339C;
+FUN_022433A8 = 0x022433A8;
+FUN_022433B0 = 0x022433B0;
+FUN_022433B8 = 0x022433B8;
+FUN_022433F8 = 0x022433F8;
+FUN_02243408 = 0x02243408;
+FUN_02243428 = 0x02243428;
+FUN_02243448 = 0x02243448;
+FUN_0224345C = 0x0224345C;
+FUN_022434AC = 0x022434AC;
+FUN_022434BC = 0x022434BC;
+FUN_022434D0 = 0x022434D0;
+FUN_02243694 = 0x02243694;
+FUN_022436C8 = 0x022436C8;
+FUN_022436E8 = 0x022436E8;
+FUN_02243780 = 0x02243780;
+FUN_02243838 = 0x02243838;
+FUN_022438DC = 0x022438DC;
+FUN_022438E0 = 0x022438E0;
+FUN_022438FC = 0x022438FC;
+FUN_02243920 = 0x02243920;
+FUN_022439F8 = 0x022439F8;
+FUN_02243AD8 = 0x02243AD8;
+FUN_02243BA8 = 0x02243BA8;
+FUN_02243C5C = 0x02243C5C;
+FUN_02243D3C = 0x02243D3C;
+FUN_02243DA0 = 0x02243DA0;
+FUN_02243DB8 = 0x02243DB8;
+FUN_02243DC0 = 0x02243DC0;
+FUN_02243DC4 = 0x02243DC4;
+FUN_02243DD8 = 0x02243DD8;
+FUN_02243DE0 = 0x02243DE0;
+FUN_02243E34 = 0x02243E34;
+FUN_02243E74 = 0x02243E74;
+FUN_02243F18 = 0x02243F18;
+FUN_02243F50 = 0x02243F50;
+FUN_02243F9C = 0x02243F9C;
+FUN_02244210 = 0x02244210;
+FUN_02244558 = 0x02244558;
+FUN_02244660 = 0x02244660;
+FUN_022446BC = 0x022446BC;
+FUN_022446E0 = 0x022446E0;
+FUN_022446FC = 0x022446FC;
+FUN_02244758 = 0x02244758;
+FUN_02244770 = 0x02244770;
+FUN_02244824 = 0x02244824;
+FUN_0224484C = 0x0224484C;
+FUN_02244D1C = 0x02244D1C;
+FUN_02244D20 = 0x02244D20;
+FUN_02244D3C = 0x02244D3C;
+FUN_02244D40 = 0x02244D40;
+FUN_02244D58 = 0x02244D58;
+FUN_02244D98 = 0x02244D98;
+FUN_02244DA0 = 0x02244DA0;
+FUN_02244DB0 = 0x02244DB0;
+FUN_02244DBC = 0x02244DBC;
+FUN_02244DC4 = 0x02244DC4;
+FUN_02244EF8 = 0x02244EF8;
+FUN_02244F18 = 0x02244F18;
+FUN_02244F24 = 0x02244F24;
+FUN_02244F2C = 0x02244F2C;
+FUN_02245088 = 0x02245088;
+FUN_02245114 = 0x02245114;
+FUN_02245190 = 0x02245190;
+FUN_02245198 = 0x02245198;
+FUN_022451F0 = 0x022451F0;
+FUN_0224525C = 0x0224525C;
+FUN_022452A4 = 0x022452A4;
+FUN_02245324 = 0x02245324;
+FUN_02245340 = 0x02245340;
+FUN_02245358 = 0x02245358;
+FUN_0224566C = 0x0224566C;
+FUN_022456E8 = 0x022456E8;
+FUN_02245844 = 0x02245844;
+FUN_02245910 = 0x02245910;
+FUN_02245F1C = 0x02245F1C;
+FUN_02245F4C = 0x02245F4C;
+FUN_02245FA0 = 0x02245FA0;
+FUN_022461A4 = 0x022461A4;
+FUN_022461B8 = 0x022461B8;
+FUN_0224666C = 0x0224666C;
+FUN_022466A0 = 0x022466A0;
+FUN_022466AC = 0x022466AC;
+FUN_02246F1C = 0x02246F1C;
+FUN_02247294 = 0x02247294;
+FUN_022472AC = 0x022472AC;
+FUN_02247544 = 0x02247544;
+FUN_02247614 = 0x02247614;
+FUN_02247728 = 0x02247728;
+FUN_02247808 = 0x02247808;
+FUN_02247970 = 0x02247970;
+FUN_02247A34 = 0x02247A34;
+FUN_022483BC = 0x022483BC;
+FUN_022483E0 = 0x022483E0;
+FUN_022483EC = 0x022483EC;
+FUN_02248724 = 0x02248724;
+FUN_0224884C = 0x0224884C;
+FUN_022488CC = 0x022488CC;
+FUN_022488EC = 0x022488EC;
+FUN_022488F4 = 0x022488F4;
+FUN_022488FC = 0x022488FC;
+FUN_0224891C = 0x0224891C;
+FUN_02248B54 = 0x02248B54;
+FUN_02248B58 = 0x02248B58;
+FUN_02248B5C = 0x02248B5C;
+FUN_02248B60 = 0x02248B60;
+FUN_02248B6C = 0x02248B6C;
+FUN_02248CC0 = 0x02248CC0;
+FUN_02248CD0 = 0x02248CD0;
+FUN_02248DF8 = 0x02248DF8;
+FUN_02248F70 = 0x02248F70;
+FUN_02248FE0 = 0x02248FE0;
+FUN_02249038 = 0x02249038;
+FUN_022490A0 = 0x022490A0;
+FUN_022491FC = 0x022491FC;
+FUN_022494C8 = 0x022494C8;
+FUN_02249508 = 0x02249508;
+FUN_02249668 = 0x02249668;
+FUN_022497E8 = 0x022497E8;
+FUN_02249E6C = 0x02249E6C;
+FUN_02249E78 = 0x02249E78;
+FUN_02249E84 = 0x02249E84;
+FUN_02249E90 = 0x02249E90;
+FUN_0224A310 = 0x0224A310;
+FUN_0224A528 = 0x0224A528;
+FUN_0224A7C8 = 0x0224A7C8;
+FUN_0224ABAC = 0x0224ABAC;
+FUN_0224B124 = 0x0224B124;
+FUN_0224B2C4 = 0x0224B2C4;
+FUN_0224B568 = 0x0224B568;
+FUN_0224B818 = 0x0224B818;
+FUN_0224B86C = 0x0224B86C;
+FUN_0224B9E0 = 0x0224B9E0;
+FUN_0224BBEC = 0x0224BBEC;
+FUN_0224BD90 = 0x0224BD90;
+FUN_0224C038 = 0x0224C038;
+FUN_0224C27C = 0x0224C27C;
+FUN_0224C520 = 0x0224C520;
+FUN_0224C678 = 0x0224C678;
+FUN_0224C6E8 = 0x0224C6E8;
+FUN_0224C6F4 = 0x0224C6F4;
+FUN_0224C700 = 0x0224C700;
+FUN_0224C8C8 = 0x0224C8C8;
+FUN_0224CA2C = 0x0224CA2C;
+FUN_0224CA54 = 0x0224CA54;
+FUN_0224CA58 = 0x0224CA58;
+FUN_0224CA88 = 0x0224CA88;
+FUN_0224CA94 = 0x0224CA94;
+FUN_0224CAA0 = 0x0224CAA0;
+FUN_0224CAB4 = 0x0224CAB4;
+FUN_0224CB30 = 0x0224CB30;
+FUN_0224CBB0 = 0x0224CBB0;
+FUN_0224CC24 = 0x0224CC24;
+FUN_0224CECC = 0x0224CECC;
+FUN_0224D14C = 0x0224D14C;
+FUN_0224D2E0 = 0x0224D2E0;
+FUN_0224D3E8 = 0x0224D3E8;
+FUN_0224D70C = 0x0224D70C;
+FUN_0224D76C = 0x0224D76C;
+FUN_0224D79C = 0x0224D79C;
+FUN_0224DCB8 = 0x0224DCB8;
+FUN_0224DD94 = 0x0224DD94;
+FUN_0224DDB8 = 0x0224DDB8;
+FUN_0224E554 = 0x0224E554;
+FUN_0224E764 = 0x0224E764;
+FUN_0224E7C4 = 0x0224E7C4;
+FUN_0224F12C = 0x0224F12C;
+FUN_02252534 = 0x02252534;
+FUN_02252538 = 0x02252538;
+FUN_022567E0 = 0x022567E0;
+
+// ???
+SDK_MAIN_ARENA_LO = 0x0225FFA0;
+
+// EWRAM
+SDK_SECTION_ARENA_EX_START = 0x023E0000;
+
+// DTCM
+gUnk027FFC20 = 0x027FFC20;
diff --git a/arm9/Makefile b/arm9/Makefile
new file mode 100644
index 00000000..d97cfb95
--- /dev/null
+++ b/arm9/Makefile
@@ -0,0 +1,175 @@
+# Makefile to build Pokemon Diamond image
+
+.PHONY: clean tidy all default patch_mwasmarm
+
+# Try to include devkitarm if installed
+TOOLCHAIN := $(DEVKITARM)
+
+ifneq (,$(wildcard $(TOOLCHAIN)/base_tools))
+include $(TOOLCHAIN)/base_tools
+endif
+
+### Default target ###
+
+default: all
+
+# If you are using WSL, it is recommended you build with NOWINE=1.
+WSLENV ?= no
+ifeq ($(WSLENV),)
+NOWINE = 1
+else
+NOWINE = 0
+endif
+
+ifeq ($(OS),Windows_NT)
+EXE := .exe
+WINE :=
+else
+EXE :=
+WINE := wine
+endif
+
+ifeq ($(NOWINE),1)
+WINE :=
+endif
+
+################ Target Executable and Sources ###############
+
+BUILD_DIR := build
+
+TARGET := arm9
+
+ROM := $(BUILD_DIR)/$(TARGET).bin
+ELF := $(BUILD_DIR)/$(TARGET).elf
+LD_SCRIPT := arm9.lcf
+
+# Directories containing source files
+SRC_DIRS := src
+ASM_DIRS := asm data files
+
+C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))
+S_FILES := $(foreach dir,$(ASM_DIRS),$(wildcard $(dir)/*.s))
+
+# Object files
+O_FILES := $(foreach file,$(C_FILES),$(BUILD_DIR)/$(file:.c=.o)) \
+ $(foreach file,$(S_FILES),$(BUILD_DIR)/$(file:.s=.o)) \
+
+##################### Compiler Options #######################
+
+MWCCVERSION := 2.0/base
+TOOLS_DIR = ../tools
+
+CROSS := arm-none-eabi-
+
+MWCCARM := $(TOOLS_DIR)/mwccarm/$(MWCCVERSION)/mwccarm.exe
+# Argh... due to EABI version shenanigans, we can't use GNU LD to link together
+# MWCC built objects and GNU built ones. mwldarm, however, doesn't care, so we
+# have to use mwldarm for now.
+# TODO: Is there a hack workaround to let us go back to GNU LD? Ideally, the
+# only dependency should be MWCCARM.
+MWLDARM := $(TOOLS_DIR)/mwccarm/$(MWCCVERSION)/mwldarm.exe
+MWASMARM := $(TOOLS_DIR)/mwccarm/$(MWCCVERSION)/mwasmarm.exe
+
+AS := $(WINE) $(MWASMARM)
+CC := $(WINE) $(MWCCARM)
+CPP := cpp -P
+LD := $(WINE) $(MWLDARM)
+AR := $(CROSS)ar
+OBJDUMP := $(CROSS)objdump
+OBJCOPY := $(CROSS)objcopy
+
+# ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm9_thumb.s -o arm9.o
+ASFLAGS = -proc arm5te -i ..
+CFLAGS = -O4,p -proc v5te -thumb -fp soft -lang c99 -Cpp_exceptions off -ir ../include
+LDFLAGS = -map -nodead -w off -proc v5te -interworking -map -symtab -m _start
+
+####################### Other Tools #########################
+
+# DS TOOLS
+SHA1SUM = sha1sum
+JSONPROC = $(TOOLS_DIR)/jsonproc/jsonproc
+GFX = $(TOOLS_DIR)/nitrogfx/nitrogfx
+MWASMARM_PATCHER = $(TOOLS_DIR)/mwasmarm_patcher/mwasmarm_patcher$(EXE)
+
+TOOLDIRS = $(filter-out $(TOOLS_DIR)/mwccarm,$(wildcard $(TOOLS_DIR)/*))
+TOOLBASE = $(TOOLDIRS:$(TOOLS_DIR)/%=%)
+TOOLS = $(foreach tool,$(TOOLBASE),$(TOOLS_DIR)/$(tool)/$(tool)$(EXE))
+
+######################### Targets ###########################
+
+infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line))))
+
+# Build tools when building the rom
+# Disable dependency scanning for clean/tidy/tools
+ifeq (,$(filter-out all,$(MAKECMDGOALS)))
+$(call infoshell, $(MAKE) tools patch_mwasmarm)
+else
+NODEP := 1
+endif
+
+.PHONY: all clean mostlyclean tidy tools $(TOOLDIRS) patch_mwasmarm
+
+MAKEFLAGS += --no-print-directory
+
+all: $(ROM)
+ # @$(SHA1SUM) -c $(TARGET).sha1
+
+clean: mostlyclean
+ make -C $(TOOLS_DIR)/mwasmarm_patcher clean
+
+mostlyclean: tidy
+ find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' \) -exec $(RM) {} +
+
+tidy:
+ $(RM) -r $(BUILD_DIR)
+
+tools: $(TOOLDIRS)
+
+$(TOOLDIRS):
+ @$(MAKE) -C $@
+
+$(MWASMARM): patch_mwasmarm
+
+patch_mwasmarm:
+ $(MWASMARM_PATCHER) $(MWASMARM)
+
+ALL_DIRS := $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(ASM_DIRS))
+
+$(BUILD_DIR)/%.o: %.c
+ $(CC) -c $(CFLAGS) -o $@ $<
+
+$(BUILD_DIR)/%.o: %.s
+ $(AS) $(ASFLAGS) $< -o $@
+
+$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) undefined_syms.txt
+ $(CPP) $(VERSION_CFLAGS) -MMD -MP -MT $@ -MF $@.d -I include/ -I . -DBUILD_DIR=$(BUILD_DIR) -o $@ $<
+
+$(ELF): $(O_FILES) $(BUILD_DIR)/$(LD_SCRIPT)
+ $(LD) $(LDFLAGS) $(BUILD_DIR)/$(LD_SCRIPT) -o $(ELF) $(O_FILES)
+
+$(ROM): $(ELF)
+ $(OBJCOPY) -O binary --gap-fill=0xFF $< $@
+
+# Make sure build directory exists before compiling anything
+DUMMY != mkdir -p $(ALL_DIRS)
+
+%.4bpp: %.png
+ $(GFX) $< $@
+
+%.gbapal: %.png
+ $(GFX) $< $@
+
+%.gbapal: %.pal
+ $(GFX) $< $@
+
+%.lz: %
+ $(GFX) $< $@
+
+%.png: ;
+%.pal: ;
+
+$(BUILD_DIR)/data/icon.o: graphics/icon.4bpp graphics/icon.gbapal
+
+### Debug Print ###
+
+print-% : ; $(info $* is a $(flavor $*) variable set to [$($*)]) @true
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
new file mode 100644
index 00000000..c5f29baf
--- /dev/null
+++ b/arm9/arm9.lcf
@@ -0,0 +1,84 @@
+MEMORY {
+ .itcm (RWX) : ORIGIN=0x01FF8000, LENGTH=0
+ .text (RX) : ORIGIN=0x02000000, LENGTH=0
+ .data (R) : ORIGIN=0x20EC710, LENGTH=0
+ .autoload (R) : ORIGIN=0x02107700, LENGTH=0
+ .bss (RWX) : ORIGIN=0x02106FA0, LENGTH=0
+ .ewram (RWX) : ORIGIN=0x023E0000, LENGTH=0
+ .dtcm (RW) : ORIGIN=0x027E0000, LENGTH=0
+ .overlay (RX) : ORIGIN=0, LENGTH=0
+}
+
+SECTIONS {
+#include "undefined_syms.txt"
+ .text : AT (0x0) {
+ secure.o (.text)
+ crt0.o (.text)
+ main.o (.text)
+ FUN_02000DF4.o (.text)
+ unk_02000E0C.o (.text)
+ string_util.o (.text)
+ unk_020023C0.o (.text)
+ filesystem.o (.text)
+ unk_02006864.o (.text)
+ script.o (.text)
+ unk_02038C78.o (.text)
+ scrcmd.o (.text)
+ unk_02046030.o (.text)
+ unk_0208AC14.o (.text)
+ unk_020AF030.o (.text)
+ /* SDK */
+ GX_arm9.o (.text)
+ OS_arm9.o (.text)
+ MI_arm9.o (.text)
+ SND_arm9.o (.text)
+ PXI_arm9.o (.text)
+ FS_arm9.o (.text)
+ DGT_arm9.o (.text)
+ CP_arm9.o (.text)
+ SPI_arm9.o (.text)
+ PM_arm9.o (.text)
+ RTC_arm9.o (.text)
+ CARD_arm9.o (.text)
+ WM_arm9.o (.text)
+ CTRDG_arm9.o (.text)
+ MATH_arm9.o (.text)
+ STD_arm9.o (.text)
+ } > .text
+
+ .data : AT (0xEC710) {
+ rom2.o (.data)
+ string_util.o (.data)
+ rom2_2.o (.data)
+ } > .data
+
+ SDK_AUTOLOAD_START = .;
+ SDK_STATIC_BSS_START = .;
+ SDK_STATIC_BSS_END = . + 0xd0540;
+
+ .itcm : AT (0x106FA0)
+ {
+ SDK_AUTOLOAD_ITCM_START = .;
+ arm9_itcm.o (.itcm)
+ SDK_AUTOLOAD_ITCM_END = .;
+ . = 0x01FF8720;
+ SDK_SECTION_ARENA_ITCM_START = .;
+ } > .itcm
+
+ .autoload : AT (0x107700) {
+ SDK_AUTOLOAD_LIST.o (.data)
+ unk_10b724.o (.text)
+ } > .autoload
+
+ .overlay : AT (0x107800) {
+ arm9overlay.o (.text)
+ } > .overlay
+
+ .dtcm : AT (0x1076A0) {
+ SDK_AUTOLOAD_DTCM_START = .;
+ OS_arm9.o (.dtcm)
+ SDK_AUTOLOAD_DTCM_END = .;
+ SDK_SECTION_ARENA_DTCM_START = 0x027E0080;
+ } > .dtcm
+
+}
diff --git a/asm/CARD_arm9.s b/arm9/asm/CARD_arm9.s
index 664e85f5..664e85f5 100644
--- a/asm/CARD_arm9.s
+++ b/arm9/asm/CARD_arm9.s
diff --git a/asm/CP_arm9.s b/arm9/asm/CP_arm9.s
index c756e8e2..c756e8e2 100644
--- a/asm/CP_arm9.s
+++ b/arm9/asm/CP_arm9.s
diff --git a/asm/CTRDG_arm9.s b/arm9/asm/CTRDG_arm9.s
index 301ea233..301ea233 100644
--- a/asm/CTRDG_arm9.s
+++ b/arm9/asm/CTRDG_arm9.s
diff --git a/asm/DGT_arm9.s b/arm9/asm/DGT_arm9.s
index d5ef358d..d5ef358d 100644
--- a/asm/DGT_arm9.s
+++ b/arm9/asm/DGT_arm9.s
diff --git a/asm/FS_arm9.s b/arm9/asm/FS_arm9.s
index 8fcbff7a..8fcbff7a 100644
--- a/asm/FS_arm9.s
+++ b/arm9/asm/FS_arm9.s
diff --git a/asm/GX_arm9.s b/arm9/asm/GX_arm9.s
index 59a548b2..59a548b2 100644
--- a/asm/GX_arm9.s
+++ b/arm9/asm/GX_arm9.s
diff --git a/asm/MATH_arm9.s b/arm9/asm/MATH_arm9.s
index 02dcfbcf..02dcfbcf 100644
--- a/asm/MATH_arm9.s
+++ b/arm9/asm/MATH_arm9.s
diff --git a/asm/MI_arm9.s b/arm9/asm/MI_arm9.s
index 82747b38..82747b38 100644
--- a/asm/MI_arm9.s
+++ b/arm9/asm/MI_arm9.s
diff --git a/asm/OS_arm9.s b/arm9/asm/OS_arm9.s
index 1323e376..1323e376 100644
--- a/asm/OS_arm9.s
+++ b/arm9/asm/OS_arm9.s
diff --git a/asm/PM_arm9.s b/arm9/asm/PM_arm9.s
index 331c0fa9..331c0fa9 100644
--- a/asm/PM_arm9.s
+++ b/arm9/asm/PM_arm9.s
diff --git a/asm/PXI_arm9.s b/arm9/asm/PXI_arm9.s
index ab3af5de..ab3af5de 100644
--- a/asm/PXI_arm9.s
+++ b/arm9/asm/PXI_arm9.s
diff --git a/asm/RTC_arm9.s b/arm9/asm/RTC_arm9.s
index 8116f8de..8116f8de 100644
--- a/asm/RTC_arm9.s
+++ b/arm9/asm/RTC_arm9.s
diff --git a/asm/SDK_AUTOLOAD_LIST.s b/arm9/asm/SDK_AUTOLOAD_LIST.s
index 8043d616..a2d1d5fe 100644
--- a/asm/SDK_AUTOLOAD_LIST.s
+++ b/arm9/asm/SDK_AUTOLOAD_LIST.s
@@ -1,13 +1,14 @@
.include "asm/macros.inc"
+ .include "global.inc"
.section .data
.global SDK_AUTOLOAD_LIST
SDK_AUTOLOAD_LIST: ; 0x02107700
- .word 0x01FF8000
+ .word SDK_AUTOLOAD_ITCM_START
.word 0x00000700
.word 0x00000000
- .word 0x027e0000
+ .word SDK_AUTOLOAD_DTCM_START
.word 0x00000060
.word 0x00000020
diff --git a/asm/SND_arm9.s b/arm9/asm/SND_arm9.s
index 99351712..99351712 100644
--- a/asm/SND_arm9.s
+++ b/arm9/asm/SND_arm9.s
diff --git a/asm/SPI_arm9.s b/arm9/asm/SPI_arm9.s
index 915bb22c..915bb22c 100644
--- a/asm/SPI_arm9.s
+++ b/arm9/asm/SPI_arm9.s
diff --git a/asm/STD_arm9.s b/arm9/asm/STD_arm9.s
index b38ac8e4..b38ac8e4 100644
--- a/asm/STD_arm9.s
+++ b/arm9/asm/STD_arm9.s
diff --git a/asm/WM_arm9.s b/arm9/asm/WM_arm9.s
index cc3e7998..cc3e7998 100644
--- a/asm/WM_arm9.s
+++ b/arm9/asm/WM_arm9.s
diff --git a/asm/arm9_itcm.s b/arm9/asm/arm9_itcm.s
index 79c0de28..79c0de28 100644
--- a/asm/arm9_itcm.s
+++ b/arm9/asm/arm9_itcm.s
diff --git a/asm/arm9overlay.s b/arm9/asm/arm9overlay.s
index 70356c52..70356c52 100644
--- a/asm/arm9overlay.s
+++ b/arm9/asm/arm9overlay.s
diff --git a/asm/crt0.s b/arm9/asm/crt0.s
index 709bd5f3..709bd5f3 100644
--- a/asm/crt0.s
+++ b/arm9/asm/crt0.s
diff --git a/asm/filesystem.s b/arm9/asm/filesystem.s
index 75af021d..75af021d 100644
--- a/asm/filesystem.s
+++ b/arm9/asm/filesystem.s
diff --git a/arm9/asm/macros.inc b/arm9/asm/macros.inc
new file mode 100644
index 00000000..156b2b09
--- /dev/null
+++ b/arm9/asm/macros.inc
@@ -0,0 +1 @@
+ .include "asm/macros/function.inc"
diff --git a/arm9/asm/macros/function.inc b/arm9/asm/macros/function.inc
new file mode 100644
index 00000000..6b9e5f40
--- /dev/null
+++ b/arm9/asm/macros/function.inc
@@ -0,0 +1,24 @@
+ .macro arm_func_start name
+ .balign 4, 0
+ .global \name
+ .arm
+ .endm
+
+ .macro arm_func_end name
+ .size \name, .-\name
+ .endm
+
+ .macro thumb_func_start name
+ .balign 4, 0
+ .global \name
+ .thumb
+ .endm
+
+ .macro non_word_aligned_thumb_func_start name
+ .global \name
+ .thumb
+ .endm
+
+ .macro thumb_func_end name
+ .size \name, .-\name
+ .endm
diff --git a/asm/rom2.s b/arm9/asm/rom2.s
index 0f18b45a..0f18b45a 100644
--- a/asm/rom2.s
+++ b/arm9/asm/rom2.s
diff --git a/asm/rom2_2.s b/arm9/asm/rom2_2.s
index d5055773..d5055773 100644
--- a/asm/rom2_2.s
+++ b/arm9/asm/rom2_2.s
diff --git a/asm/scrcmd.s b/arm9/asm/scrcmd.s
index d75850de..d75850de 100644
--- a/asm/scrcmd.s
+++ b/arm9/asm/scrcmd.s
diff --git a/asm/secure.s b/arm9/asm/secure.s
index f9d8f159..f9d8f159 100644
--- a/asm/secure.s
+++ b/arm9/asm/secure.s
diff --git a/asm/unk_02000E0C.s b/arm9/asm/unk_02000E0C.s
index 50b0dace..50b0dace 100644
--- a/asm/unk_02000E0C.s
+++ b/arm9/asm/unk_02000E0C.s
diff --git a/asm/unk_020023C0.s b/arm9/asm/unk_020023C0.s
index 2024d9d7..2024d9d7 100644
--- a/asm/unk_020023C0.s
+++ b/arm9/asm/unk_020023C0.s
diff --git a/asm/unk_02006864.s b/arm9/asm/unk_02006864.s
index dab6adfe..dab6adfe 100644
--- a/asm/unk_02006864.s
+++ b/arm9/asm/unk_02006864.s
diff --git a/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s
index 785e5b48..785e5b48 100644
--- a/asm/unk_02038C78.s
+++ b/arm9/asm/unk_02038C78.s
diff --git a/asm/unk_02046030.s b/arm9/asm/unk_02046030.s
index 30b8ee4c..30b8ee4c 100644
--- a/asm/unk_02046030.s
+++ b/arm9/asm/unk_02046030.s
diff --git a/asm/unk_0208AC14.s b/arm9/asm/unk_0208AC14.s
index 0adafb8b..0adafb8b 100644
--- a/asm/unk_0208AC14.s
+++ b/arm9/asm/unk_0208AC14.s
diff --git a/asm/unk_020AF030.s b/arm9/asm/unk_020AF030.s
index 33faec27..33faec27 100644
--- a/asm/unk_020AF030.s
+++ b/arm9/asm/unk_020AF030.s
diff --git a/asm/unk_10b724.s b/arm9/asm/unk_10b724.s
index cfa5f27a..cfa5f27a 100644
--- a/asm/unk_10b724.s
+++ b/arm9/asm/unk_10b724.s
diff --git a/arm9/global.inc b/arm9/global.inc
new file mode 100644
index 00000000..d25362f3
--- /dev/null
+++ b/arm9/global.inc
@@ -0,0 +1,3521 @@
+.extern CARD_CancelBackupAsync
+.extern CARD_GetResultCode
+.extern CARD_IdentifyBackup
+.extern CARD_Init
+.extern CARD_IsPulledOut
+.extern CARD_LockBackup
+.extern CARD_LockRom
+.extern CARD_TryWaitBackupAsync
+.extern CARD_UnlockBackup
+.extern CARD_UnlockRom
+.extern CARD_WaitBackupAsync
+.extern CARDi_ReadRom
+.extern CARDi_RequestStreamCommand
+.extern CP_RestoreContext
+.extern CP_SaveContext
+.extern CTRDG_Init
+.extern CTRDG_IsExisting
+.extern CTRDG_IsPulledOut
+.extern Call_FillMemWithValue
+.extern ConvertUIntToDecimalString
+.extern DC_FlushAll
+.extern DC_FlushRange
+.extern DC_InvalidateAll
+.extern DC_InvalidateRange
+.extern DC_StoreAll
+.extern DC_StoreRange
+.extern DC_WaitWriteBufferEmpty
+.extern DGT_Hash1GetDigest_R
+.extern DGT_Hash1Reset
+.extern DGT_Hash1SetSource
+.extern DGTi_hash2_arm4_small
+.extern ErrorHandling
+.extern FS_CloseFile
+.extern FS_ConvertPathToFileID
+.extern FS_FindArchive
+.extern FS_Init
+.extern FS_InitFile
+.extern FS_IsAvailable
+.extern FS_LoadOverlay
+.extern FS_LoadOverlayImage
+.extern FS_LoadOverlayImageAsync
+.extern FS_LoadOverlayInfo
+.extern FS_OpenFile
+.extern FS_OpenFileFast
+.extern FS_ReadFile
+.extern FS_SeekFile
+.extern FS_SetDefaultDMA
+.extern FS_StartOverlay
+.extern FS_TryLoadTable
+.extern FS_UnloadOverlay
+.extern FS_WaitAsync
+.extern FUNRTC_Init
+.extern FUN_0200019E
+.extern FUN_020002FE
+.extern SVC_WaitByLoop
+.extern OSi_ReferSymbol
+.extern FUN_02000DF4
+.extern FUN_02000E7C
+.extern FUN_02000EE8
+.extern FUN_02000F18
+.extern FUN_02000FA4
+.extern FUN_02000FE8
+.extern FUN_020010A8
+.extern FUN_02001204
+.extern FUN_02001300
+.extern FUN_020013E8
+.extern FUN_02001448
+.extern FUN_02001470
+.extern FUN_02001B8C
+.extern FUN_02001C14
+.extern FUN_02001C5C
+.extern FUN_02001C78
+.extern FUN_02001D2C
+.extern FUN_02001E5C
+.extern FUN_020020EC
+.extern FUN_02002198
+.extern FUN_020021AC
+.extern FUN_02002840
+.extern FUN_02002B60
+.extern FUN_02002B7C
+.extern FUN_02002BB8
+.extern FUN_02002C14
+.extern FUN_02002C50
+.extern FUN_02002C84
+.extern FUN_02002CC0
+.extern FUN_02002CF8
+.extern FUN_02002DB0
+.extern FUN_02002DE0
+.extern FUN_02002E14
+.extern FUN_02002E4C
+.extern FUN_02002ED0
+.extern FUN_02002EEC
+.extern FUN_02002F08
+.extern FUN_02002FD0
+.extern FUN_02002FEC
+.extern FUN_02003008
+.extern FUN_02003038
+.extern FUN_02003054
+.extern FUN_020030E8
+.extern FUN_02003108
+.extern FUN_020031FC
+.extern FUN_02003210
+.extern FUN_0200372C
+.extern FUN_020038E4
+.extern FUN_020038F0
+.extern FUN_02003974
+.extern FUN_02003B98
+.extern FUN_02003C10
+.extern FUN_020040F4
+.extern FUN_02004104
+.extern FUN_02004124
+.extern FUN_0200414C
+.extern FUN_0200415C
+.extern FUN_0200433C
+.extern FUN_02004724
+.extern FUN_020047C8
+.extern FUN_02004810
+.extern FUN_0200488C
+.extern FUN_02004DCC
+.extern FUN_02004E08
+.extern FUN_0200516C
+.extern FUN_020051F4
+.extern FUN_0200521C
+.extern FUN_02005308
+.extern FUN_02005350
+.extern FUN_0200538C
+.extern FUN_020053CC
+.extern FUN_02005404
+.extern FUN_02005410
+.extern FUN_0200541C
+.extern FUN_020054C8
+.extern FUN_020054F0
+.extern FUN_02005508
+.extern FUN_02005514
+.extern FUN_02005578
+.extern FUN_02005670
+.extern FUN_020056AC
+.extern FUN_02005C28
+.extern FUN_02005CBC
+.extern FUN_02005D20
+.extern FUN_02005E28
+.extern FUN_02005E64
+.extern FUN_02005E6C
+.extern FUN_02005E80
+.extern FUN_02005E90
+.extern FUN_02005F14
+.extern FUN_02005F60
+.extern FUN_02005FDC
+.extern FUN_020061E8
+.extern FUN_0200621C
+.extern FUN_02006234
+.extern FUN_02006260
+.extern FUN_02006268
+.extern FUN_02006278
+.extern FUN_0200627C
+.extern FUN_0200628C
+.extern FUN_02006290
+.extern FUN_02006528
+.extern FUN_02006548
+.extern FUN_02006564
+.extern FUN_02006670
+.extern FUN_020066F4
+.extern FUN_02006704
+.extern FUN_02006774
+.extern FUN_02006814
+.extern FUN_0200687C
+.extern FUN_020068C8
+.extern FUN_02006930
+.extern FUN_02006BB0
+.extern FUN_02006C08
+.extern FUN_02006C98
+.extern FUN_02006D98
+.extern FUN_02006ED4
+.extern FUN_020072E8
+.extern FUN_02007314
+.extern FUN_0200737C
+.extern FUN_02007390
+.extern FUN_020073A0
+.extern FUN_02007534
+.extern FUN_02007558
+.extern FUN_0200782C
+.extern FUN_020079E0
+.extern FUN_02007E68
+.extern FUN_02007E98
+.extern FUN_02007F20
+.extern FUN_020080D0
+.extern FUN_020081C4
+.extern FUN_02008AA4
+.extern FUN_02008BE0
+.extern FUN_02008C80
+.extern FUN_02008C9C
+.extern FUN_02008D24
+.extern FUN_02008DEC
+.extern FUN_02008E2C
+.extern FUN_02008F34
+.extern FUN_02008FEC
+.extern FUN_020090AC
+.extern FUN_02009168
+.extern FUN_020093A8
+.extern FUN_02009424
+.extern FUN_02009448
+.extern FUN_02009630
+.extern FUN_0200965C
+.extern FUN_02009668
+.extern FUN_020096B4
+.extern FUN_020096CC
+.extern FUN_02009A50
+.extern FUN_02009B04
+.extern FUN_02009B44
+.extern FUN_02009B78
+.extern FUN_02009C0C
+.extern FUN_02009C30
+.extern FUN_02009CF0
+.extern FUN_02009DAC
+.extern FUN_02009DE0
+.extern FUN_02009E04
+.extern FUN_02009E28
+.extern FUN_02009E88
+.extern FUN_02009EAC
+.extern FUN_02009F80
+.extern FUN_02009FA0
+.extern FUN_0200A208
+.extern FUN_0200A274
+.extern FUN_0200A2AC
+.extern FUN_0200A318
+.extern FUN_0200A344
+.extern FUN_0200A648
+.extern FUN_0200A738
+.extern FUN_0200A86C
+.extern FUN_0200A8B8
+.extern FUN_0200A8E0
+.extern FUN_0200A914
+.extern FUN_0200A968
+.extern FUN_0200A99C
+.extern FUN_0200A9C4
+.extern FUN_0200AA50
+.extern FUN_0200AA80
+.extern FUN_0200AA90
+.extern FUN_0200AB18
+.extern FUN_0200ABB4
+.extern FUN_0200ABC0
+.extern FUN_0200ABE4
+.extern FUN_0200AC0C
+.extern FUN_0200AC60
+.extern FUN_0200ACA4
+.extern FUN_0200ACC0
+.extern FUN_0200ACF8
+.extern FUN_0200AD18
+.extern FUN_0200AD38
+.extern FUN_0200AD5C
+.extern FUN_0200AD94
+.extern FUN_0200ADCC
+.extern FUN_0200AE04
+.extern FUN_0200AE38
+.extern FUN_0200AE70
+.extern FUN_0200AEA8
+.extern FUN_0200AEE0
+.extern FUN_0200AF18
+.extern FUN_0200AF50
+.extern FUN_0200AFF4
+.extern FUN_0200B02C
+.extern FUN_0200B064
+.extern FUN_0200B09C
+.extern FUN_0200B164
+.extern FUN_0200B19C
+.extern FUN_0200B1D4
+.extern FUN_0200B20C
+.extern FUN_0200B244
+.extern FUN_0200B278
+.extern FUN_0200B2AC
+.extern FUN_0200B350
+.extern FUN_0200B388
+.extern FUN_0200B410
+.extern FUN_0200B4A0
+.extern FUN_0200B4D8
+.extern FUN_0200B518
+.extern FUN_0200B534
+.extern FUN_0200B568
+.extern FUN_0200B59C
+.extern FUN_0200B628
+.extern FUN_0200B660
+.extern FUN_0200B698
+.extern FUN_0200B6D0
+.extern FUN_0200B708
+.extern FUN_0200B764
+.extern FUN_0200B7A8
+.extern FUN_0200B7B8
+.extern FUN_0200B870
+.extern FUN_0200B990
+.extern FUN_0200B9A8
+.extern FUN_0200B9EC
+.extern FUN_0200BA78
+.extern FUN_0200BB14
+.extern FUN_0200BB34
+.extern FUN_0200BB68
+.extern FUN_0200BB6C
+.extern FUN_0200BBF0
+.extern FUN_0200BC1C
+.extern FUN_0200BC30
+.extern FUN_0200BCE0
+.extern FUN_0200BD04
+.extern FUN_0200BD20
+.extern FUN_0200BE38
+.extern FUN_0200BF60
+.extern FUN_0200C00C
+.extern FUN_0200C06C
+.extern FUN_0200C0DC
+.extern FUN_0200C124
+.extern FUN_0200C13C
+.extern FUN_0200C154
+.extern FUN_0200C358
+.extern FUN_0200C368
+.extern FUN_0200C378
+.extern FUN_0200C388
+.extern FUN_0200C398
+.extern FUN_0200C3DC
+.extern FUN_0200C5A8
+.extern FUN_0200C61C
+.extern FUN_0200C63C
+.extern FUN_0200C644
+.extern FUN_0200C664
+.extern FUN_0200C66C
+.extern FUN_0200C6E4
+.extern FUN_0200C714
+.extern FUN_0200C75C
+.extern FUN_0200C7A0
+.extern FUN_0200C82C
+.extern FUN_0200C840
+.extern FUN_0200C884
+.extern FUN_0200C9D8
+.extern FUN_0200CA0C
+.extern FUN_0200CA44
+.extern FUN_0200CAB4
+.extern FUN_0200CABC
+.extern FUN_0200CAFC
+.extern FUN_0200CB00
+.extern FUN_0200CCA4
+.extern FUN_0200CCF8
+.extern FUN_0200CD64
+.extern FUN_0200CD68
+.extern FUN_0200D0BC
+.extern FUN_0200D0E0
+.extern FUN_0200D274
+.extern FUN_0200D300
+.extern FUN_0200D6F8
+.extern FUN_0200D858
+.extern FUN_0200DBFC
+.extern FUN_0200DC4C
+.extern FUN_0200DCA4
+.extern FUN_0200E1D0
+.extern FUN_0200E2D8
+.extern FUN_0200E308
+.extern FUN_0200E388
+.extern FUN_0200E394
+.extern FUN_0200E3A0
+.extern FUN_0200E3BC
+.extern FUN_02011B20
+.extern FUN_02012420
+.extern FUN_0201259C
+.extern FUN_020125D4
+.extern FUN_0201265C
+.extern FUN_020126B4
+.extern FUN_020126D8
+.extern FUN_020126FC
+.extern FUN_0201277C
+.extern FUN_020127A8
+.extern FUN_020127C0
+.extern FUN_02012838
+.extern FUN_02012870
+.extern FUN_02012880
+.extern FUN_020128A0
+.extern FUN_02012CC8
+.extern FUN_02012CDC
+.extern FUN_02012DE4
+.extern FUN_0201318C
+.extern FUN_02013194
+.extern FUN_0201327C
+.extern FUN_020132BC
+.extern FUN_02013364
+.extern FUN_02013388
+.extern FUN_020133AC
+.extern FUN_020133C8
+.extern FUN_020133E8
+.extern FUN_0201343C
+.extern FUN_02013440
+.extern FUN_02013690
+.extern FUN_020136C0
+.extern FUN_020136E0
+.extern FUN_020136F8
+.extern FUN_0201373C
+.extern FUN_02013754
+.extern FUN_0201385C
+.extern FUN_02013918
+.extern FUN_02013920
+.extern FUN_02013924
+.extern FUN_02013928
+.extern FUN_02013960
+.extern FUN_020139D8
+.extern FUN_02013A10
+.extern FUN_02013A30
+.extern FUN_02013A9C
+.extern FUN_02013B5C
+.extern FUN_02013B68
+.extern FUN_02013B74
+.extern FUN_02013BC8
+.extern FUN_02013BE4
+.extern FUN_02013C0C
+.extern FUN_02013C18
+.extern FUN_020142EC
+.extern FUN_020143A8
+.extern FUN_020143D0
+.extern FUN_02014BF4
+.extern FUN_02014C28
+.extern FUN_02014C3C
+.extern FUN_02014C54
+.extern FUN_02014D7C
+.extern FUN_02014D9C
+.extern FUN_02015CF8
+.extern FUN_02015E30
+.extern FUN_02015E60
+.extern FUN_02015EF4
+.extern FUN_02015F10
+.extern FUN_02015F1C
+.extern FUN_02015F34
+.extern FUN_020161A4
+.extern FUN_020163BC
+.extern FUN_02016438
+.extern FUN_02016464
+.extern FUN_0201669C
+.extern FUN_020166C8
+.extern FUN_0201681C
+.extern FUN_02016828
+.extern FUN_020168D0
+.extern FUN_02016998
+.extern FUN_020169D8
+.extern FUN_02016A18
+.extern FUN_02016A8C
+.extern FUN_02016AF8
+.extern FUN_02016B94
+.extern FUN_02016BBC
+.extern FUN_02016C18
+.extern FUN_020178A0
+.extern FUN_020178BC
+.extern FUN_0201797C
+.extern FUN_020179E0
+.extern FUN_02017B48
+.extern FUN_02017B54
+.extern FUN_02017CD0
+.extern FUN_02017CE8
+.extern FUN_02017DFC
+.extern FUN_02017E14
+.extern FUN_02017F18
+.extern FUN_02017FB4
+.extern FUN_02017FE4
+.extern FUN_02018148
+.extern FUN_02018170
+.extern FUN_02018540
+.extern FUN_020186B4
+.extern FUN_02018744
+.extern FUN_0201886C
+.extern FUN_02018884
+.extern FUN_02018FF4
+.extern FUN_0201901C
+.extern FUN_02019048
+.extern FUN_02019064
+.extern FUN_02019150
+.extern FUN_02019178
+.extern FUN_020191A4
+.extern FUN_020191D0
+.extern FUN_02019220
+.extern FUN_02019548
+.extern FUN_02019570
+.extern FUN_0201958C
+.extern FUN_02019620
+.extern FUN_02019658
+.extern FUN_020196F4
+.extern FUN_0201974C
+.extern FUN_0201A8C8
+.extern FUN_0201AB08
+.extern FUN_0201AB0C
+.extern FUN_0201AB10
+.extern FUN_0201AB14
+.extern FUN_0201AB18
+.extern FUN_0201AB60
+.extern FUN_0201AC68
+.extern FUN_0201AEE4
+.extern FUN_0201AFBC
+.extern FUN_0201B234
+.extern FUN_0201B5CC
+.extern FUN_0201B6C4
+.extern FUN_0201B6C8
+.extern FUN_0201B6D0
+.extern FUN_0201B76C
+.extern FUN_0201B7DC
+.extern FUN_0201B8B8
+.extern FUN_0201B8E0
+.extern FUN_0201B914
+.extern FUN_0201B93C
+.extern FUN_0201B970
+.extern FUN_0201B9D4
+.extern FUN_0201B9E0
+.extern FUN_0201B9EC
+.extern FUN_0201BA10
+.extern FUN_0201BA1C
+.extern FUN_0201BA60
+.extern FUN_0201BCBC
+.extern FUN_0201BD5C
+.extern FUN_0201BD70
+.extern FUN_0201BD7C
+.extern FUN_0201BD84
+.extern FUN_0201BDE0
+.extern FUN_0201BE3C
+.extern FUN_0201C05C
+.extern FUN_0201C1EC
+.extern FUN_0201C24C
+.extern FUN_0201C29C
+.extern FUN_0201C30C
+.extern FUN_0201C620
+.extern FUN_0201C638
+.extern FUN_0201CC08
+.extern FUN_0201CC24
+.extern FUN_0201CD04
+.extern FUN_0201CDD0
+.extern FUN_0201CE04
+.extern FUN_0201D040
+.extern FUN_0201D12C
+.extern FUN_0201D168
+.extern FUN_0201E00C
+.extern FUN_0201E08C
+.extern FUN_0201E0BC
+.extern FUN_0201E28C
+.extern FUN_0201E66C
+.extern FUN_0201E6D8
+.extern FUN_0201E6E4
+.extern FUN_0201E740
+.extern FUN_0201E74C
+.extern FUN_0201E788
+.extern FUN_0201E7A0
+.extern FUN_0201EB64
+.extern FUN_0201EB70
+.extern FUN_0201EB8C
+.extern FUN_0201EBA4
+.extern FUN_0201EC68
+.extern FUN_0201EC88
+.extern FUN_0201EC94
+.extern FUN_0201ED10
+.extern FUN_0201EEF0
+.extern FUN_0201EF70
+.extern FUN_0201EF90
+.extern FUN_0201EFE0
+.extern FUN_0201EFEC
+.extern FUN_0201F04C
+.extern FUN_0201F854
+.extern FUN_0201FD58
+.extern FUN_0201FDEC
+.extern FUN_0201FE94
+.extern FUN_0201FFC8
+.extern FUN_02020044
+.extern FUN_020200A0
+.extern FUN_020200BC
+.extern FUN_02020100
+.extern FUN_0202011C
+.extern FUN_02020128
+.extern FUN_02020130
+.extern FUN_020201DC
+.extern FUN_020201E4
+.extern FUN_02020208
+.extern FUN_0202022C
+.extern FUN_02020248
+.extern FUN_02020310
+.extern FUN_02020354
+.extern FUN_02020388
+.extern FUN_02020398
+.extern FUN_02020968
+.extern FUN_02020988
+.extern FUN_02020AFC
+.extern FUN_02021590
+.extern FUN_020215C8
+.extern FUN_020215E0
+.extern FUN_02021750
+.extern FUN_020218D8
+.extern FUN_02021934
+.extern FUN_0202199C
+.extern FUN_020219F4
+.extern FUN_02021A20
+.extern FUN_02021A4C
+.extern FUN_02021A74
+.extern FUN_02021CE0
+.extern FUN_02021D3C
+.extern FUN_02021E28
+.extern FUN_02021EF0
+.extern FUN_02021F2C
+.extern FUN_0202212C
+.extern FUN_02022294
+.extern FUN_020222AC
+.extern FUN_020222B4
+.extern FUN_020222C4
+.extern FUN_020222E8
+.extern FUN_020222F0
+.extern FUN_020222F8
+.extern FUN_02022300
+.extern FUN_02022308
+.extern FUN_02022310
+.extern FUN_02022318
+.extern FUN_020223BC
+.extern FUN_02022504
+.extern FUN_02022510
+.extern FUN_02022528
+.extern FUN_02022534
+.extern FUN_02022540
+.extern FUN_0202254C
+.extern FUN_020225F8
+.extern FUN_02022610
+.extern FUN_0202263C
+.extern FUN_02022720
+.extern FUN_020227FC
+.extern FUN_02022800
+.extern FUN_02022804
+.extern FUN_0202280C
+.extern FUN_0202282C
+.extern FUN_02022830
+.extern FUN_0202287C
+.extern FUN_02023788
+.extern FUN_02023794
+.extern FUN_02023818
+.extern FUN_0202381C
+.extern FUN_02023828
+.extern FUN_02023874
+.extern FUN_02023884
+.extern FUN_020238F4
+.extern FUN_0202390C
+.extern FUN_02023918
+.extern FUN_02023924
+.extern FUN_02023928
+.extern FUN_0202393C
+.extern FUN_0202395C
+.extern FUN_0202397C
+.extern FUN_0202398C
+.extern FUN_02023990
+.extern FUN_020239A0
+.extern FUN_020239BC
+.extern FUN_020239C0
+.extern FUN_020239C8
+.extern FUN_020239CC
+.extern FUN_020239D0
+.extern FUN_020239E4
+.extern FUN_02023A10
+.extern FUN_02023A28
+.extern FUN_02023A2C
+.extern FUN_02023A30
+.extern FUN_02023A54
+.extern FUN_02023A68
+.extern FUN_02023A70
+.extern FUN_02023A78
+.extern FUN_02023A88
+.extern FUN_02023A90
+.extern FUN_02023A9C
+.extern FUN_02023AA4
+.extern FUN_02023AF4
+.extern FUN_02023B0C
+.extern FUN_02023BD4
+.extern FUN_02023C90
+.extern FUN_02023D58
+.extern FUN_02023D6C
+.extern FUN_02023D80
+.extern FUN_020243C8
+.extern FUN_02024404
+.extern FUN_02024440
+.extern FUN_0202445C
+.extern FUN_020244A4
+.extern FUN_020244EC
+.extern FUN_02024504
+.extern FUN_02024518
+.extern FUN_02024550
+.extern FUN_020245F0
+.extern FUN_0202471C
+.extern FUN_0202498C
+.extern FUN_02024AF0
+.extern FUN_02024C84
+.extern FUN_02024CA4
+.extern FUN_02024CE0
+.extern FUN_02024D4C
+.extern FUN_02024D64
+.extern FUN_02024D80
+.extern FUN_02024DA0
+.extern FUN_02024EB4
+.extern FUN_02024EC0
+.extern FUN_02024ECC
+.extern FUN_02024ED8
+.extern FUN_02024EE8
+.extern FUN_02024F0C
+.extern FUN_02024F30
+.extern FUN_02024F44
+.extern FUN_02024FF4
+.extern FUN_02025084
+.extern FUN_02025128
+.extern FUN_02025238
+.extern FUN_02025244
+.extern FUN_0202524C
+.extern FUN_02025268
+.extern FUN_02025274
+.extern FUN_020252AC
+.extern FUN_020252C4
+.extern FUN_020252D0
+.extern FUN_020252DC
+.extern FUN_020252E8
+.extern FUN_020252F4
+.extern FUN_020253E0
+.extern FUN_02025484
+.extern FUN_02025490
+.extern FUN_020254A0
+.extern FUN_020254B4
+.extern FUN_020254C0
+.extern FUN_02025520
+.extern FUN_02025614
+.extern FUN_02025658
+.extern FUN_020256AC
+.extern FUN_020256BC
+.extern FUN_020256D0
+.extern FUN_020256DC
+.extern FUN_020257C0
+.extern FUN_020257C4
+.extern FUN_020257C8
+.extern FUN_020257CC
+.extern FUN_020257D0
+.extern FUN_020257D8
+.extern FUN_020257DC
+.extern FUN_020257E0
+.extern FUN_02025814
+.extern FUN_02025824
+.extern FUN_02025838
+.extern FUN_02025864
+.extern FUN_02025878
+.extern FUN_02025888
+.extern FUN_0202589C
+.extern FUN_020258B0
+.extern FUN_020258D4
+.extern FUN_02025A60
+.extern FUN_02025B60
+.extern FUN_02025B94
+.extern FUN_02025BE8
+.extern FUN_02025C30
+.extern FUN_02025C40
+.extern FUN_02025D6C
+.extern FUN_02025D94
+.extern FUN_02025DB0
+.extern FUN_020260C4
+.extern FUN_02026298
+.extern FUN_020266B0
+.extern FUN_020266C8
+.extern FUN_020268D4
+.extern FUN_02026908
+.extern FUN_02026970
+.extern FUN_020269A0
+.extern FUN_020269CC
+.extern FUN_020269D4
+.extern FUN_02026BC8
+.extern FUN_02026C00
+.extern FUN_02026CB4
+.extern FUN_02026CC4
+.extern FUN_02026FE4
+.extern FUN_02026FE8
+.extern FUN_02027008
+.extern FUN_02027044
+.extern FUN_0202708C
+.extern FUN_02027098
+.extern FUN_020270B4
+.extern FUN_020270D8
+.extern FUN_02027100
+.extern FUN_02027114
+.extern FUN_02027168
+.extern FUN_02027184
+.extern FUN_020271A4
+.extern FUN_02027210
+.extern FUN_02027264
+.extern FUN_02027478
+.extern FUN_020275D8
+.extern FUN_02027608
+.extern FUN_0202763C
+.extern FUN_0202769C
+.extern FUN_020276A8
+.extern FUN_02027710
+.extern FUN_02027740
+.extern FUN_0202787C
+.extern FUN_020278AC
+.extern FUN_020278DC
+.extern FUN_02027914
+.extern FUN_02027964
+.extern FUN_02027E24
+.extern FUN_02027E34
+.extern FUN_02027E5C
+.extern FUN_02027F04
+.extern FUN_02027FBC
+.extern FUN_02027FDC
+.extern FUN_02028048
+.extern FUN_02028074
+.extern FUN_02028094
+.extern FUN_020280B8
+.extern FUN_020280F4
+.extern FUN_02028174
+.extern FUN_02028190
+.extern FUN_020281B8
+.extern FUN_02028448
+.extern FUN_020286EC
+.extern FUN_02028700
+.extern FUN_02028754
+.extern FUN_02028788
+.extern FUN_020287A4
+.extern FUN_020287A8
+.extern FUN_020287C0
+.extern FUN_020287EC
+.extern FUN_02028810
+.extern FUN_0202881C
+.extern FUN_02028828
+.extern FUN_02028840
+.extern FUN_02028930
+.extern FUN_02028934
+.extern FUN_02028954
+.extern FUN_0202896C
+.extern FUN_020289A4
+.extern FUN_020289B0
+.extern FUN_02028A20
+.extern FUN_02028AD4
+.extern FUN_02028FA4
+.extern FUN_02029048
+.extern FUN_02029120
+.extern FUN_0202912C
+.extern FUN_02029138
+.extern FUN_0202914C
+.extern FUN_0202918C
+.extern FUN_0202920C
+.extern FUN_0202942C
+.extern FUN_02029500
+.extern FUN_02029880
+.extern FUN_020299C0
+.extern FUN_020299DC
+.extern FUN_02029ABC
+.extern FUN_02029AC8
+.extern FUN_02029ACC
+.extern FUN_02029AD0
+.extern FUN_02029AD8
+.extern FUN_02029AFC
+.extern FUN_02029B38
+.extern FUN_02029B3C
+.extern FUN_02029C08
+.extern FUN_02029C74
+.extern FUN_02029C80
+.extern FUN_02029C8C
+.extern FUN_02029CC8
+.extern FUN_02029CE0
+.extern FUN_02029CEC
+.extern FUN_02029D44
+.extern FUN_02029DD4
+.extern FUN_02029E0C
+.extern FUN_02029E2C
+.extern FUN_02029EBC
+.extern FUN_02029EC0
+.extern FUN_02029EC4
+.extern FUN_02029EE4
+.extern FUN_02029EF8
+.extern FUN_02029F04
+.extern FUN_02029F10
+.extern FUN_02029F14
+.extern FUN_02029F4C
+.extern FUN_02029F9C
+.extern FUN_02029FC8
+.extern FUN_0202A07C
+.extern FUN_0202A0A8
+.extern FUN_0202A0E8
+.extern FUN_0202A11C
+.extern FUN_0202A150
+.extern FUN_0202A170
+.extern FUN_0202A1B8
+.extern FUN_0202A240
+.extern FUN_0202A2C4
+.extern FUN_0202A3B4
+.extern FUN_0202A498
+.extern FUN_0202A520
+.extern FUN_0202A538
+.extern FUN_0202A578
+.extern FUN_0202A5CC
+.extern FUN_0202A5D0
+.extern FUN_0202A5D4
+.extern FUN_0202A5F4
+.extern FUN_0202A74C
+.extern FUN_0202A864
+.extern FUN_0202A8CC
+.extern FUN_0202A8D8
+.extern FUN_0202A8E4
+.extern FUN_0202A918
+.extern FUN_0202A988
+.extern FUN_0202A990
+.extern FUN_0202A9AC
+.extern FUN_0202A9B0
+.extern FUN_0202A9D0
+.extern FUN_0202AA00
+.extern FUN_0202AA14
+.extern FUN_0202AA20
+.extern FUN_0202AA38
+.extern FUN_0202AA40
+.extern FUN_0202AA58
+.extern FUN_0202AA74
+.extern FUN_0202AAA0
+.extern FUN_0202AAFC
+.extern FUN_0202AB40
+.extern FUN_0202AB68
+.extern FUN_0202AF70
+.extern FUN_0202AF88
+.extern FUN_0202AF9C
+.extern FUN_0202AFC0
+.extern FUN_0202AFFC
+.extern FUN_0202B020
+.extern FUN_0202B03C
+.extern FUN_0202B050
+.extern FUN_0202B21C
+.extern FUN_0202B3C4
+.extern FUN_0202B4B0
+.extern FUN_0202B710
+.extern FUN_0202B838
+.extern FUN_0202B844
+.extern FUN_0202B850
+.extern FUN_0202B85C
+.extern FUN_0202B868
+.extern FUN_0202B870
+.extern FUN_0202B87C
+.extern FUN_0202B8E4
+.extern FUN_0202B8F0
+.extern FUN_0202BD6C
+.extern FUN_0202BDF0
+.extern FUN_0202BE6C
+.extern FUN_0202BEDC
+.extern FUN_0202BFD8
+.extern FUN_0202C000
+.extern FUN_0202C108
+.extern FUN_0202C144
+.extern FUN_0202CB8C
+.extern FUN_0202D8B0
+.extern FUN_0202D8D0
+.extern FUN_0202DBE0
+.extern FUN_0202DCF8
+.extern FUN_0202DDE8
+.extern FUN_0202DE78
+.extern FUN_0202DFA4
+.extern FUN_0202E020
+.extern FUN_0202E044
+.extern FUN_0202E25C
+.extern FUN_0202E4C8
+.extern FUN_0202EDD8
+.extern FUN_0202EDF8
+.extern FUN_0202EE0C
+.extern FUN_0202EE24
+.extern FUN_0202EE44
+.extern FUN_0202EF18
+.extern FUN_0202EF84
+.extern FUN_0202F078
+.extern FUN_0202F094
+.extern FUN_0202F0B8
+.extern FUN_0202FA10
+.extern FUN_0202FA1C
+.extern FUN_0202FA48
+.extern FUN_0202FB80
+.extern FUN_02030A78
+.extern FUN_02030ADC
+.extern FUN_02030B3C
+.extern FUN_02030BC4
+.extern FUN_02030C4C
+.extern FUN_02030C58
+.extern FUN_02030E7C
+.extern FUN_02030F20
+.extern FUN_02030F40
+.extern FUN_02030F60
+.extern FUN_02030F74
+.extern FUN_02030F88
+.extern FUN_02030FA8
+.extern FUN_02030FC8
+.extern FUN_02030FE0
+.extern FUN_02031190
+.extern FUN_020311D0
+.extern FUN_020311DC
+.extern FUN_020311E8
+.extern FUN_020311F0
+.extern FUN_02031248
+.extern FUN_02031280
+.extern FUN_020312BC
+.extern FUN_020313B4
+.extern FUN_020313EC
+.extern FUN_02031400
+.extern FUN_02031438
+.extern FUN_02031588
+.extern FUN_020315D8
+.extern FUN_020315FC
+.extern FUN_0203168C
+.extern FUN_020316AC
+.extern FUN_020316E0
+.extern FUN_02031810
+.extern FUN_02031824
+.extern FUN_02031860
+.extern FUN_02031880
+.extern FUN_020318B4
+.extern FUN_020318C4
+.extern FUN_02031914
+.extern FUN_02031924
+.extern FUN_02031934
+.extern FUN_02031948
+.extern FUN_02031990
+.extern FUN_020319D8
+.extern FUN_020319F4
+.extern FUN_02031A08
+.extern FUN_02031A2C
+.extern FUN_02031A7C
+.extern FUN_02031AC8
+.extern FUN_02031AF4
+.extern FUN_02031B2C
+.extern FUN_02031B50
+.extern FUN_02031BD0
+.extern FUN_02031BF4
+.extern FUN_02031C2C
+.extern FUN_02031C54
+.extern FUN_02031C64
+.extern FUN_02032888
+.extern FUN_020328C0
+.extern FUN_020328F4
+.extern FUN_02032B6C
+.extern FUN_02032DAC
+.extern FUN_020334E8
+.extern FUN_02033534
+.extern FUN_02033564
+.extern FUN_02033578
+.extern FUN_020335B8
+.extern FUN_020335F0
+.extern FUN_02033678
+.extern FUN_020337E8
+.extern FUN_0203384C
+.extern FUN_02033E74
+.extern FUN_02033ED0
+.extern FUN_02033F20
+.extern FUN_02033F70
+.extern FUN_02034188
+.extern FUN_020344AC
+.extern FUN_020344D8
+.extern FUN_020344FC
+.extern FUN_0203450C
+.extern FUN_0203451C
+.extern FUN_02034678
+.extern FUN_020346CC
+.extern FUN_02034774
+.extern FUN_02034788
+.extern FUN_020347B0
+.extern FUN_020347C4
+.extern FUN_02034824
+.extern FUN_0203484C
+.extern FUN_02034860
+.extern FUN_0203487C
+.extern FUN_02034898
+.extern FUN_020348B4
+.extern FUN_020348E4
+.extern FUN_02034908
+.extern FUN_02034930
+.extern FUN_02034944
+.extern FUN_02034964
+.extern FUN_02034998
+.extern FUN_020349D8
+.extern FUN_020349E4
+.extern FUN_02034A04
+.extern FUN_02034A60
+.extern FUN_02034AC8
+.extern FUN_02034AF0
+.extern FUN_02034AF8
+.extern FUN_02034B00
+.extern FUN_02034B64
+.extern FUN_02034B6C
+.extern FUN_02034B74
+.extern FUN_02034BAC
+.extern FUN_02034BDC
+.extern FUN_02034C0C
+.extern FUN_02034C24
+.extern FUN_02034C34
+.extern FUN_02034D2C
+.extern FUN_02034D44
+.extern FUN_02034DC4
+.extern FUN_02034DC8
+.extern FUN_02034DCC
+.extern FUN_02034DD0
+.extern FUN_02034DD4
+.extern FUN_02034DE8
+.extern FUN_02034DEC
+.extern FUN_02034DF4
+.extern FUN_02034DFC
+.extern FUN_02034E04
+.extern FUN_02034E0C
+.extern FUN_02034E10
+.extern FUN_02034E18
+.extern FUN_02034E20
+.extern FUN_02034E24
+.extern FUN_02034E28
+.extern FUN_02034E30
+.extern FUN_02034E48
+.extern FUN_02034E60
+.extern FUN_02034E8C
+.extern FUN_02034E90
+.extern FUN_02034EC4
+.extern FUN_02034EF8
+.extern FUN_02034F1C
+.extern FUN_02034F40
+.extern FUN_02034F88
+.extern FUN_02034FC0
+.extern FUN_02034FE4
+.extern FUN_02035068
+.extern FUN_020351A0
+.extern FUN_02035D04
+.extern FUN_02035E50
+.extern FUN_02036A78
+.extern FUN_02036AB8
+.extern FUN_02036B90
+.extern FUN_02036BC4
+.extern FUN_02036BDC
+.extern FUN_02036D94
+.extern FUN_02036DD4
+.extern FUN_02037024
+.extern FUN_02037350
+.extern FUN_02037394
+.extern FUN_0203739C
+.extern FUN_020373AC
+.extern FUN_020373C4
+.extern FUN_020373D4
+.extern FUN_02037760
+.extern FUN_02037778
+.extern FUN_020377A8
+.extern FUN_020377AC
+.extern FUN_020377B0
+.extern FUN_020377C8
+.extern FUN_0203780C
+.extern FUN_0203789C
+.extern FUN_020378FC
+.extern FUN_02037944
+.extern FUN_020379F8
+.extern FUN_02037A1C
+.extern FUN_02037A40
+.extern FUN_02037A48
+.extern FUN_02037A70
+.extern FUN_02037A78
+.extern FUN_02037B44
+.extern FUN_02037BB0
+.extern FUN_02037C00
+.extern FUN_02037CF0
+.extern FUN_02037D5C
+.extern FUN_02037D60
+.extern FUN_02037E18
+.extern FUN_02037E80
+.extern FUN_02037E90
+.extern FUN_02037EB8
+.extern FUN_02037F2C
+.extern FUN_02037F58
+.extern FUN_02037FC4
+.extern FUN_02037FE4
+.extern FUN_020380CC
+.extern FUN_02038130
+.extern FUN_020383D8
+.extern FUN_020383F8
+.extern FUN_0203842C
+.extern FUN_0203846C
+.extern FUN_020385CC
+.extern FUN_02038680
+.extern FUN_020386A4
+.extern FUN_020386B4
+.extern FUN_020386E0
+.extern FUN_02038790
+.extern FUN_02038804
+.extern FUN_02038814
+.extern FUN_02038824
+.extern FUN_02038854
+.extern FUN_02038864
+.extern FUN_0203888C
+.extern FUN_020388B4
+.extern FUN_020389CC
+.extern FUN_02038AD0
+.extern FUN_02038AF4
+.extern FUN_02038B6C
+.extern FUN_02038C78
+.extern FUN_02038CA8
+.extern FUN_02038CD8
+.extern FUN_02038D10
+.extern FUN_02038EB0
+.extern FUN_02039438
+.extern FUN_02039460
+.extern FUN_020394B8
+.extern FUN_020394F0
+.extern FUN_02039504
+.extern FUN_02039528
+.extern FUN_0203953C
+.extern FUN_02039550
+.extern FUN_02039564
+.extern FUN_0203959C
+.extern FUN_020395BC
+.extern FUN_020395F4
+.extern FUN_02039618
+.extern FUN_0203962C
+.extern FUN_02039640
+.extern FUN_0203965C
+.extern FUN_02039678
+.extern FUN_02039694
+.extern FUN_02039874
+.extern FUN_0203989C
+.extern FUN_020399A0
+.extern FUN_020399A4
+.extern FUN_020399A8
+.extern FUN_020399B4
+.extern FUN_02039A10
+.extern FUN_02039A28
+.extern FUN_02039A40
+.extern FUN_02039A5C
+.extern FUN_02039A78
+.extern FUN_02039A90
+.extern FUN_02039AAC
+.extern FUN_02039ACC
+.extern FUN_02039AF8
+.extern FUN_02039B28
+.extern FUN_02039B50
+.extern FUN_02039B78
+.extern FUN_02039BA0
+.extern FUN_02039BBC
+.extern FUN_02039BDC
+.extern FUN_02039C08
+.extern FUN_02039C40
+.extern FUN_02039C78
+.extern FUN_02039CE4
+.extern FUN_02039CF8
+.extern FUN_02039D10
+.extern FUN_02039D48
+.extern FUN_02039D78
+.extern FUN_02039DAC
+.extern FUN_02039DC4
+.extern FUN_02039DD0
+.extern FUN_02039E04
+.extern FUN_02039E38
+.extern FUN_02039E50
+.extern FUN_02039E68
+.extern FUN_02039E84
+.extern FUN_02039EC0
+.extern FUN_02039EE8
+.extern FUN_02039F0C
+.extern FUN_02039F30
+.extern FUN_02039F58
+.extern FUN_02039F88
+.extern FUN_02039FB8
+.extern FUN_02039FDC
+.extern FUN_0203A00C
+.extern FUN_0203A038
+.extern FUN_0203A04C
+.extern FUN_0203A098
+.extern FUN_0203A0FC
+.extern FUN_0203A13C
+.extern FUN_0203A188
+.extern FUN_0203A210
+.extern FUN_0203A288
+.extern FUN_0203A2C4
+.extern FUN_0203A304
+.extern FUN_0203A340
+.extern FUN_0203A388
+.extern FUN_0203A3C4
+.extern FUN_0203A400
+.extern FUN_0203A45C
+.extern FUN_0203A484
+.extern FUN_0203A4D0
+.extern FUN_0203A560
+.extern FUN_0203A590
+.extern FUN_0203A5D8
+.extern FUN_0203A608
+.extern FUN_0203A630
+.extern FUN_0203A780
+.extern FUN_0203A830
+.extern FUN_0203A85C
+.extern FUN_0203A878
+.extern FUN_0203A8B8
+.extern FUN_0203A9F0
+.extern FUN_0203AA90
+.extern FUN_0203AAA0
+.extern FUN_0203AB44
+.extern FUN_0203AB74
+.extern FUN_0203AB8C
+.extern FUN_0203AC14
+.extern FUN_0203AC9C
+.extern FUN_0203ACC4
+.extern FUN_0203AD08
+.extern FUN_0203AD54
+.extern FUN_0203ADC4
+.extern FUN_0203AE4C
+.extern FUN_0203AED4
+.extern FUN_0203AF34
+.extern FUN_0203AF58
+.extern FUN_0203AF84
+.extern FUN_0203AFA4
+.extern FUN_0203AFC4
+.extern FUN_0203B024
+.extern FUN_0203B148
+.extern FUN_0203B1F0
+.extern FUN_0203B2E0
+.extern FUN_0203B3B0
+.extern FUN_0203B3C0
+.extern FUN_0203B3DC
+.extern FUN_0203B3F8
+.extern FUN_0203B440
+.extern FUN_0203B468
+.extern FUN_0203B500
+.extern FUN_0203B544
+.extern FUN_0203B574
+.extern FUN_0203B5B8
+.extern FUN_0203B618
+.extern FUN_0203B640
+.extern FUN_0203B724
+.extern FUN_0203B758
+.extern FUN_0203B790
+.extern FUN_0203B7D8
+.extern FUN_0203B7F0
+.extern FUN_0203B81C
+.extern FUN_0203B85C
+.extern FUN_0203B8A0
+.extern FUN_0203B8E4
+.extern FUN_0203B914
+.extern FUN_0203B944
+.extern FUN_0203B968
+.extern FUN_0203B9B4
+.extern FUN_0203BA3C
+.extern FUN_0203BAB0
+.extern FUN_0203BAF4
+.extern FUN_0203BB34
+.extern FUN_0203BB80
+.extern FUN_0203BB84
+.extern FUN_0203BB88
+.extern FUN_0203BB8C
+.extern FUN_0203BC1C
+.extern FUN_0203BC2C
+.extern FUN_0203BCBC
+.extern FUN_0203BCCC
+.extern FUN_0203BCD8
+.extern FUN_0203BD08
+.extern FUN_0203BD28
+.extern FUN_0203BDB8
+.extern FUN_0203BE50
+.extern FUN_0203BE68
+.extern FUN_0203BE80
+.extern FUN_0203BECC
+.extern FUN_0203BF00
+.extern FUN_0203BF20
+.extern FUN_0203BF2C
+.extern FUN_0203BF84
+.extern FUN_0203BFEC
+.extern FUN_0203C054
+.extern FUN_0203C090
+.extern FUN_0203C0CC
+.extern FUN_0203C0FC
+.extern FUN_0203C118
+.extern FUN_0203C12C
+.extern FUN_0203C174
+.extern FUN_0203C1AC
+.extern FUN_0203C200
+.extern FUN_0203C278
+.extern FUN_0203C2C4
+.extern FUN_0203C2E0
+.extern FUN_0203C2F0
+.extern FUN_0203C300
+.extern FUN_0203C32C
+.extern FUN_0203C33C
+.extern FUN_0203C368
+.extern FUN_0203C3C8
+.extern FUN_0203C3E8
+.extern FUN_0203C430
+.extern FUN_0203C460
+.extern FUN_0203C4B0
+.extern FUN_0203C4F0
+.extern FUN_0203C520
+.extern FUN_0203C58C
+.extern FUN_0203C5BC
+.extern FUN_0203C614
+.extern FUN_0203C680
+.extern FUN_0203C6C4
+.extern FUN_0203C70C
+.extern FUN_0203C730
+.extern FUN_0203C788
+.extern FUN_0203C7E4
+.extern FUN_0203C7F4
+.extern FUN_0203C820
+.extern FUN_0203C844
+.extern FUN_0203C874
+.extern FUN_0203C8B4
+.extern FUN_0203C8E4
+.extern FUN_0203C930
+.extern FUN_0203C960
+.extern FUN_0203C990
+.extern FUN_0203CA20
+.extern FUN_0203CA2C
+.extern FUN_0203CA5C
+.extern FUN_0203CAE8
+.extern FUN_0203CB08
+.extern FUN_0203CB20
+.extern FUN_0203CB48
+.extern FUN_0203CB60
+.extern FUN_0203CB70
+.extern FUN_0203CBBC
+.extern FUN_0203CBE8
+.extern FUN_0203CC88
+.extern FUN_0203CD20
+.extern FUN_0203CDB8
+.extern FUN_0203CDC4
+.extern FUN_0203CDD0
+.extern FUN_0203CE00
+.extern FUN_0203CE0C
+.extern FUN_0203CE8C
+.extern FUN_0203CEBC
+.extern FUN_0203CF04
+.extern FUN_0203CF34
+.extern FUN_0203CF64
+.extern FUN_0203CF94
+.extern FUN_0203CFC4
+.extern FUN_0203CFC8
+.extern FUN_0203D050
+.extern FUN_0203D0A4
+.extern FUN_0203D0F8
+.extern FUN_0203D134
+.extern FUN_0203D140
+.extern FUN_0203D150
+.extern FUN_0203D178
+.extern FUN_0203D194
+.extern FUN_0203D1A4
+.extern FUN_0203D1C0
+.extern FUN_0203D214
+.extern FUN_0203D23C
+.extern FUN_0203D248
+.extern FUN_0203D278
+.extern FUN_0203D2A4
+.extern FUN_0203D2E4
+.extern FUN_0203D330
+.extern FUN_0203D33C
+.extern FUN_0203D36C
+.extern FUN_0203D3A4
+.extern FUN_0203D3DC
+.extern FUN_0203D448
+.extern FUN_0203D458
+.extern FUN_0203D490
+.extern FUN_0203D4E8
+.extern FUN_0203D528
+.extern FUN_0203D560
+.extern FUN_0203D5B0
+.extern FUN_0203D5F8
+.extern FUN_0203D60C
+.extern FUN_0203D61C
+.extern FUN_0203D630
+.extern FUN_0203D66C
+.extern FUN_0203D6C4
+.extern FUN_0203D728
+.extern FUN_0203D738
+.extern FUN_0203D774
+.extern FUN_0203D7DC
+.extern FUN_0203D834
+.extern FUN_0203D868
+.extern FUN_0203D874
+.extern FUN_0203D8A0
+.extern FUN_0203D8D0
+.extern FUN_0203D8E8
+.extern FUN_0203D8EC
+.extern FUN_0203D920
+.extern FUN_0203D938
+.extern FUN_0203D948
+.extern FUN_0203D958
+.extern FUN_0203D998
+.extern FUN_0203D9E8
+.extern FUN_0203DA78
+.extern FUN_0203DAB0
+.extern FUN_0203DAE8
+.extern FUN_0203DB38
+.extern FUN_0203DB88
+.extern FUN_0203DBD4
+.extern FUN_0203DC00
+.extern FUN_0203DC58
+.extern FUN_0203DC70
+.extern FUN_0203DC88
+.extern FUN_0203DCA0
+.extern FUN_0203DCB8
+.extern FUN_0203DCC8
+.extern FUN_0203DCD8
+.extern FUN_0203DCE8
+.extern FUN_0203DCF8
+.extern FUN_0203DD08
+.extern FUN_0203DD18
+.extern FUN_0203DD34
+.extern FUN_0203DD50
+.extern FUN_0203DD60
+.extern FUN_0203DE00
+.extern FUN_0203DE4C
+.extern FUN_0203DE58
+.extern FUN_0203DE80
+.extern FUN_0203DEA8
+.extern FUN_0203DEC4
+.extern FUN_0203DEF8
+.extern FUN_0203DF2C
+.extern FUN_0203DF38
+.extern FUN_0203DF64
+.extern FUN_0203DF84
+.extern FUN_0203DFA8
+.extern FUN_0203DFE0
+.extern FUN_0203E018
+.extern FUN_0203E054
+.extern FUN_0203E078
+.extern FUN_0203E0CC
+.extern FUN_0203E120
+.extern FUN_0203E138
+.extern FUN_0203E168
+.extern FUN_0203E254
+.extern FUN_0203E258
+.extern FUN_0203E29C
+.extern FUN_0203E2F8
+.extern FUN_0203E35C
+.extern FUN_0203E38C
+.extern FUN_0203E3D0
+.extern FUN_0203E408
+.extern FUN_0203E440
+.extern FUN_0203E470
+.extern FUN_0203E4A0
+.extern FUN_0203E4B0
+.extern FUN_0203E4D8
+.extern FUN_0203E4F0
+.extern FUN_0203E510
+.extern FUN_0203E568
+.extern FUN_0203E5DC
+.extern FUN_0203E674
+.extern FUN_0203E684
+.extern FUN_0203E6B4
+.extern FUN_0203E6C4
+.extern FUN_0203E6FC
+.extern FUN_0203E72C
+.extern FUN_0203E744
+.extern FUN_0203E774
+.extern FUN_0203E7F0
+.extern FUN_0203E81C
+.extern FUN_0203E848
+.extern FUN_0203E858
+.extern FUN_0203E870
+.extern FUN_0203E894
+.extern FUN_0203E8C4
+.extern FUN_0203E8F4
+.extern FUN_0203E928
+.extern FUN_0203E940
+.extern FUN_0203E954
+.extern FUN_0203E968
+.extern FUN_0203E9CC
+.extern FUN_0203EA68
+.extern FUN_0203EA90
+.extern FUN_0203EAB0
+.extern FUN_0203EB20
+.extern FUN_0203EB48
+.extern FUN_0203EB88
+.extern FUN_0203EBC8
+.extern FUN_0203EBE4
+.extern FUN_0203ECAC
+.extern FUN_0203ECD8
+.extern FUN_0203ECF4
+.extern FUN_0203ED10
+.extern FUN_0203ED70
+.extern FUN_0203EDA4
+.extern FUN_0203EDC8
+.extern FUN_0203EDE0
+.extern FUN_0203EE08
+.extern FUN_0203EE18
+.extern FUN_0203EE28
+.extern FUN_0203EE58
+.extern FUN_0203EE68
+.extern FUN_0203EE78
+.extern FUN_0203EE98
+.extern FUN_0203EED8
+.extern FUN_0203EF58
+.extern FUN_0203F00C
+.extern FUN_0203F020
+.extern FUN_0203F034
+.extern FUN_0203F058
+.extern FUN_0203F07C
+.extern FUN_0203F110
+.extern FUN_0203F174
+.extern FUN_0203F19C
+.extern FUN_0203F234
+.extern FUN_0203F254
+.extern FUN_0203F26C
+.extern FUN_0203F2AC
+.extern FUN_0203F2E4
+.extern FUN_0203F31C
+.extern FUN_0203F348
+.extern FUN_0203F38C
+.extern FUN_0203F39C
+.extern FUN_0203F3AC
+.extern FUN_0203F418
+.extern FUN_0203F44C
+.extern FUN_0203F484
+.extern FUN_0203F4D8
+.extern FUN_0203F508
+.extern FUN_0203F5D4
+.extern FUN_0203F604
+.extern FUN_0203F634
+.extern FUN_0203F664
+.extern FUN_0203F6E4
+.extern FUN_0203F720
+.extern FUN_0203F760
+.extern FUN_0203F7C8
+.extern FUN_0203F80C
+.extern FUN_0203F880
+.extern FUN_0203F8C0
+.extern FUN_0203F924
+.extern FUN_0203F954
+.extern FUN_0203F988
+.extern FUN_0203F9B0
+.extern FUN_0203F9DC
+.extern FUN_0203FA14
+.extern FUN_0203FA58
+.extern FUN_0203FB4C
+.extern FUN_0203FB64
+.extern FUN_0203FB94
+.extern FUN_0203FBA0
+.extern FUN_0203FBAC
+.extern FUN_0203FBBC
+.extern FUN_0203FC1C
+.extern FUN_0203FC58
+.extern FUN_0203FC80
+.extern FUN_0203FCB0
+.extern FUN_0203FCDC
+.extern FUN_0203FCF4
+.extern FUN_0203FDBC
+.extern FUN_0203FE08
+.extern FUN_0203FE48
+.extern FUN_0203FE80
+.extern FUN_0203FE90
+.extern FUN_0203FEC0
+.extern FUN_0203FF10
+.extern FUN_02040028
+.extern FUN_02040074
+.extern FUN_020400C8
+.extern FUN_0204011C
+.extern FUN_02040170
+.extern FUN_020401CC
+.extern FUN_02040204
+.extern FUN_02040220
+.extern FUN_0204025C
+.extern FUN_02040298
+.extern FUN_020402D4
+.extern FUN_02040304
+.extern FUN_02040340
+.extern FUN_02040370
+.extern FUN_020403A0
+.extern FUN_020403D0
+.extern FUN_02040414
+.extern FUN_02040458
+.extern FUN_02040488
+.extern FUN_020404FC
+.extern FUN_0204052C
+.extern FUN_0204056C
+.extern FUN_0204059C
+.extern FUN_020405B4
+.extern FUN_020405CC
+.extern FUN_020405F8
+.extern FUN_02040638
+.extern FUN_0204064C
+.extern FUN_02040660
+.extern FUN_020406C0
+.extern FUN_020406CC
+.extern FUN_02040700
+.extern FUN_02040724
+.extern FUN_02040748
+.extern FUN_02040790
+.extern FUN_020407C8
+.extern FUN_02040800
+.extern FUN_0204083C
+.extern FUN_02040874
+.extern FUN_020408BC
+.extern FUN_0204091C
+.extern FUN_02040964
+.extern FUN_020409C0
+.extern FUN_020409F8
+.extern FUN_02040A30
+.extern FUN_02040A7C
+.extern FUN_02040B0C
+.extern FUN_02040B5C
+.extern FUN_02040BAC
+.extern FUN_02040BFC
+.extern FUN_02040C34
+.extern FUN_02040C6C
+.extern FUN_02040CA4
+.extern FUN_02040D04
+.extern FUN_02040D7C
+.extern FUN_02040DB4
+.extern FUN_02040DEC
+.extern FUN_02040E4C
+.extern FUN_02040EB4
+.extern FUN_02040EF8
+.extern FUN_02040F34
+.extern FUN_02040F6C
+.extern FUN_02040FA4
+.extern FUN_02040FDC
+.extern FUN_02041014
+.extern FUN_0204104C
+.extern FUN_02041094
+.extern FUN_020410C8
+.extern FUN_02041100
+.extern FUN_02041138
+.extern FUN_02041174
+.extern FUN_02041194
+.extern FUN_020411C4
+.extern FUN_02041340
+.extern FUN_020413C0
+.extern FUN_020413E8
+.extern FUN_020413F8
+.extern FUN_0204140C
+.extern FUN_02041424
+.extern FUN_0204143C
+.extern FUN_02041478
+.extern FUN_0204149C
+.extern FUN_020414B8
+.extern FUN_020414CC
+.extern FUN_020414E0
+.extern FUN_020414FC
+.extern FUN_02041518
+.extern FUN_02041558
+.extern FUN_02041588
+.extern FUN_020415AC
+.extern FUN_020415BC
+.extern FUN_020415E0
+.extern FUN_02041618
+.extern FUN_02041644
+.extern FUN_02041650
+.extern FUN_02041664
+.extern FUN_02041674
+.extern FUN_020416A8
+.extern FUN_02041770
+.extern FUN_020417E0
+.extern FUN_02041808
+.extern FUN_0204185C
+.extern FUN_0204188C
+.extern FUN_0204190C
+.extern FUN_02041970
+.extern FUN_020419F8
+.extern FUN_02041A80
+.extern FUN_02041AB4
+.extern FUN_02041AD4
+.extern FUN_02041AE0
+.extern FUN_02041B10
+.extern FUN_02041B40
+.extern FUN_02041B70
+.extern FUN_02041B9C
+.extern FUN_02041BC4
+.extern FUN_02041BF0
+.extern FUN_02041C38
+.extern FUN_02041E40
+.extern FUN_02041FDC
+.extern FUN_02042000
+.extern FUN_02042038
+.extern FUN_02042110
+.extern FUN_0204214C
+.extern FUN_02042354
+.extern FUN_02042364
+.extern FUN_02042394
+.extern FUN_020423B0
+.extern FUN_02042700
+.extern FUN_02042780
+.extern FUN_020427A8
+.extern FUN_020427D0
+.extern FUN_02042864
+.extern FUN_02042894
+.extern FUN_020428E0
+.extern FUN_02042950
+.extern FUN_02042980
+.extern FUN_02042998
+.extern FUN_020429B8
+.extern FUN_020429E8
+.extern FUN_02042A18
+.extern FUN_02042A48
+.extern FUN_02042A98
+.extern FUN_02042B0C
+.extern FUN_02042B40
+.extern FUN_02042B74
+.extern FUN_02042BA8
+.extern FUN_02042BDC
+.extern FUN_02042C10
+.extern FUN_02042C44
+.extern FUN_02042C8C
+.extern FUN_02042CBC
+.extern FUN_02042D1C
+.extern FUN_0204387C
+.extern FUN_020438D0
+.extern FUN_02043918
+.extern FUN_020439B4
+.extern FUN_02043A44
+.extern FUN_02043A94
+.extern FUN_02043AAC
+.extern FUN_02043ACC
+.extern FUN_02043AFC
+.extern FUN_02043B28
+.extern FUN_02043B54
+.extern FUN_02043B84
+.extern FUN_02043BD0
+.extern FUN_02043C28
+.extern FUN_02043C6C
+.extern FUN_02043C90
+.extern FUN_02043CB4
+.extern FUN_02043CE4
+.extern FUN_02043D28
+.extern FUN_02043D78
+.extern FUN_02043DC8
+.extern FUN_02043DE0
+.extern FUN_02043E00
+.extern FUN_02043E20
+.extern FUN_02043E50
+.extern FUN_02043E68
+.extern FUN_02043E9C
+.extern FUN_02043EFC
+.extern FUN_02043F50
+.extern FUN_02043FA0
+.extern FUN_02043FF4
+.extern FUN_02044034
+.extern FUN_020440C0
+.extern FUN_020440F0
+.extern FUN_02044120
+.extern FUN_02044138
+.extern FUN_0204413C
+.extern FUN_02044140
+.extern FUN_02044158
+.extern FUN_0204416C
+.extern FUN_02044198
+.extern FUN_020442BC
+.extern FUN_0204434C
+.extern FUN_020443A8
+.extern FUN_02044414
+.extern FUN_0204449C
+.extern FUN_020444F4
+.extern FUN_02044598
+.extern FUN_02044658
+.extern FUN_0204469C
+.extern FUN_02044730
+.extern FUN_0204478C
+.extern FUN_02044800
+.extern FUN_0204488C
+.extern FUN_020448D4
+.extern FUN_020449A4
+.extern FUN_02044A0C
+.extern FUN_02044A6C
+.extern FUN_02044A94
+.extern FUN_02044B00
+.extern FUN_02044B2C
+.extern FUN_02044B84
+.extern FUN_02044C0C
+.extern FUN_02044C88
+.extern FUN_02044CE0
+.extern FUN_02044D44
+.extern FUN_02044D8C
+.extern FUN_02044E34
+.extern FUN_02044E78
+.extern FUN_02044ED8
+.extern FUN_02044F20
+.extern FUN_02044F58
+.extern FUN_02044FE8
+.extern FUN_0204505C
+.extern FUN_02045104
+.extern FUN_02045170
+.extern FUN_020451D0
+.extern FUN_02045264
+.extern FUN_02045268
+.extern FUN_020452B4
+.extern FUN_02045308
+.extern FUN_02045398
+.extern FUN_0204539C
+.extern FUN_020453A0
+.extern FUN_020453F4
+.extern FUN_02045424
+.extern FUN_02045438
+.extern FUN_02045468
+.extern FUN_02045484
+.extern FUN_020454CC
+.extern FUN_02045500
+.extern FUN_0204552C
+.extern FUN_0204557C
+.extern FUN_02045590
+.extern FUN_020455BC
+.extern FUN_020455D0
+.extern FUN_020455E4
+.extern FUN_02045610
+.extern FUN_02045624
+.extern FUN_02045638
+.extern FUN_02045664
+.extern FUN_02045678
+.extern FUN_020456D4
+.extern FUN_0204572C
+.extern FUN_02045784
+.extern FUN_020457DC
+.extern FUN_02045834
+.extern FUN_0204588C
+.extern FUN_020458E4
+.extern FUN_02045918
+.extern FUN_02045950
+.extern FUN_02045954
+.extern FUN_02045958
+.extern FUN_020459AC
+.extern FUN_020459E8
+.extern FUN_02045A3C
+.extern FUN_02045A78
+.extern FUN_02045ACC
+.extern FUN_02045B08
+.extern FUN_02045B44
+.extern FUN_02045B80
+.extern FUN_02045BC8
+.extern FUN_02045C04
+.extern FUN_02045C40
+.extern FUN_02045C7C
+.extern FUN_02045CD4
+.extern FUN_02045D10
+.extern FUN_02045D4C
+.extern FUN_02045D88
+.extern FUN_02045DD0
+.extern FUN_02045E1C
+.extern FUN_02045E20
+.extern FUN_02045EE0
+.extern FUN_02045EE4
+.extern FUN_02045F24
+.extern FUN_02045F84
+.extern FUN_02045F88
+.extern FUN_02045FCC
+.extern FUN_02046010
+.extern FUN_0204601C
+.extern FUN_02046028
+.extern FUN_0204602C
+.extern FUN_02046030
+.extern FUN_020462AC
+.extern FUN_020462B8
+.extern FUN_020462E4
+.extern FUN_0204630C
+.extern FUN_02046338
+.extern FUN_02046380
+.extern FUN_020463CC
+.extern FUN_020463EC
+.extern FUN_0204640C
+.extern FUN_02046420
+.extern FUN_0204646C
+.extern FUN_0204647C
+.extern FUN_0204649C
+.extern FUN_020464A4
+.extern FUN_02046500
+.extern FUN_02046528
+.extern FUN_0204652C
+.extern FUN_02046530
+.extern FUN_02046534
+.extern FUN_02046DB4
+.extern FUN_02046E18
+.extern FUN_02046FA0
+.extern FUN_020470AC
+.extern FUN_020470E8
+.extern FUN_02047174
+.extern FUN_020480B8
+.extern FUN_020480C8
+.extern FUN_020480D8
+.extern FUN_02048498
+.extern FUN_02048694
+.extern FUN_02048C58
+.extern FUN_02048D90
+.extern FUN_02048EC8
+.extern FUN_02048FC8
+.extern FUN_02049240
+.extern FUN_02049274
+.extern FUN_02049EA4
+.extern FUN_02049F98
+.extern FUN_02049FFC
+.extern FUN_0204A048
+.extern FUN_0204A0C8
+.extern FUN_0204A120
+.extern FUN_0204A20C
+.extern FUN_0204A248
+.extern FUN_0204A32C
+.extern FUN_0204A6E0
+.extern FUN_0204AB20
+.extern FUN_0204AB58
+.extern FUN_0204ABA8
+.extern FUN_0204ABDC
+.extern FUN_0204AD0C
+.extern FUN_0204ADBC
+.extern FUN_0204ADE0
+.extern FUN_0204AF3C
+.extern FUN_0204AF84
+.extern FUN_0204B2A4
+.extern FUN_0204B2B4
+.extern FUN_0204B2C0
+.extern FUN_0204B2D8
+.extern FUN_0204B33C
+.extern FUN_0204B4FC
+.extern FUN_0204B57C
+.extern FUN_0204B5A8
+.extern FUN_0204B5FC
+.extern FUN_0204B63C
+.extern FUN_0204B660
+.extern FUN_0204B684
+.extern FUN_0204B6A4
+.extern FUN_0204B9A0
+.extern FUN_0204B9CC
+.extern FUN_0204B9EC
+.extern FUN_0204BA1C
+.extern FUN_0204BAB0
+.extern FUN_0204BAC4
+.extern FUN_0204BAD4
+.extern FUN_0204BAE4
+.extern FUN_0204BEC8
+.extern FUN_0204BED0
+.extern FUN_0204BED8
+.extern FUN_0204C104
+.extern FUN_0204C1A8
+.extern FUN_0204D6C0
+.extern FUN_0204E2FC
+.extern FUN_0204F6DC
+.extern FUN_0204FF5C
+.extern FUN_02050024
+.extern FUN_02050048
+.extern FUN_020524CC
+.extern FUN_02052544
+.extern FUN_02052604
+.extern FUN_02052608
+.extern FUN_02052648
+.extern FUN_0205265C
+.extern FUN_02052714
+.extern FUN_02052718
+.extern FUN_020527A8
+.extern FUN_020527D8
+.extern FUN_0205296C
+.extern FUN_02052A10
+.extern FUN_02052B74
+.extern FUN_02052C0C
+.extern FUN_02052CD8
+.extern FUN_02052D08
+.extern FUN_02052DE8
+.extern FUN_02052E10
+.extern FUN_02052F74
+.extern FUN_020534DC
+.extern FUN_0205363C
+.extern FUN_02053678
+.extern FUN_020536D0
+.extern FUN_020545B8
+.extern FUN_02054608
+.extern FUN_02054658
+.extern FUN_020546C8
+.extern FUN_020547A4
+.extern FUN_02054C14
+.extern FUN_02054CB0
+.extern FUN_02054CC8
+.extern FUN_02054D1C
+.extern FUN_02054DEC
+.extern FUN_02054E30
+.extern FUN_02054F50
+.extern FUN_0205502C
+.extern FUN_020552F8
+.extern FUN_02055304
+.extern FUN_02055320
+.extern FUN_0205532C
+.extern FUN_020553A0
+.extern FUN_020553C4
+.extern FUN_020553D4
+.extern FUN_020553E8
+.extern FUN_02055468
+.extern FUN_02055474
+.extern FUN_02055488
+.extern FUN_02055560
+.extern FUN_02055720
+.extern FUN_020557F4
+.extern FUN_02055A38
+.extern FUN_02055B14
+.extern FUN_02055B30
+.extern FUN_02055B8C
+.extern FUN_0205753C
+.extern FUN_020575D4
+.extern FUN_02057654
+.extern FUN_02057688
+.extern FUN_02057800
+.extern FUN_0205785C
+.extern FUN_02057BAC
+.extern FUN_02058060
+.extern FUN_020580B4
+.extern FUN_02058448
+.extern FUN_02058458
+.extern FUN_02058480
+.extern FUN_02058488
+.extern FUN_02058510
+.extern FUN_02058738
+.extern FUN_02058780
+.extern FUN_020587B0
+.extern FUN_02058854
+.extern FUN_0205889C
+.extern FUN_020588B8
+.extern FUN_020588D4
+.extern FUN_02058908
+.extern FUN_02058914
+.extern FUN_02058994
+.extern FUN_02058B2C
+.extern FUN_02058B4C
+.extern FUN_02058B7C
+.extern FUN_02058BB4
+.extern FUN_02058BE4
+.extern FUN_02058D74
+.extern FUN_02058E28
+.extern FUN_02058E90
+.extern FUN_02058EB0
+.extern FUN_02059D1C
+.extern FUN_02059E74
+.extern FUN_0205AE28
+.extern FUN_0205AEA4
+.extern FUN_0205AEF0
+.extern FUN_0205AEFC
+.extern FUN_0205CA4C
+.extern FUN_0205CA64
+.extern FUN_0205CA78
+.extern FUN_0205CE48
+.extern FUN_0205CE80
+.extern FUN_0205DD18
+.extern FUN_0205DD38
+.extern FUN_0205DD40
+.extern FUN_0205E7C4
+.extern FUN_0205ECD4
+.extern FUN_0205ECE0
+.extern FUN_0205ECFC
+.extern FUN_0205ED0C
+.extern FUN_0205ED1C
+.extern FUN_0205ED2C
+.extern FUN_0205ED3C
+.extern FUN_0205ED4C
+.extern FUN_0205ED5C
+.extern FUN_0205ED6C
+.extern FUN_0205F1C4
+.extern FUN_0205F1D4
+.extern FUN_0205F1F4
+.extern FUN_0205F204
+.extern FUN_0205F214
+.extern FUN_0205F224
+.extern FUN_0205F234
+.extern FUN_0205F244
+.extern FUN_0205F264
+.extern FUN_0205F274
+.extern FUN_0205F284
+.extern FUN_0205F294
+.extern FUN_0205F2A4
+.extern FUN_0205F2B4
+.extern FUN_0205F2C4
+.extern FUN_0205F2D4
+.extern FUN_0205F2E4
+.extern FUN_0205F368
+.extern FUN_0205F378
+.extern FUN_0205F388
+.extern FUN_0205F398
+.extern FUN_0205F3C0
+.extern FUN_0205F3F8
+.extern FUN_0205F478
+.extern FUN_0205F4A0
+.extern FUN_0205F4E4
+.extern FUN_0205F50C
+.extern FUN_0205F524
+.extern FUN_0205F54C
+.extern FUN_0205F55C
+.extern FUN_0205F594
+.extern FUN_0205F5A4
+.extern FUN_0205F5D8
+.extern FUN_0205F5FC
+.extern FUN_0205F648
+.extern FUN_0205F668
+.extern FUN_0205F688
+.extern FUN_0205F698
+.extern FUN_0205F6A8
+.extern FUN_0205F6C8
+.extern FUN_0205F6D8
+.extern FUN_0205F710
+.extern FUN_0205F720
+.extern FUN_0205F740
+.extern FUN_0205F760
+.extern FUN_0205F7A0
+.extern FUN_0205FD38
+.extern FUN_0205FDDC
+.extern FUN_0205FE10
+.extern FUN_0205FF5C
+.extern FUN_02060144
+.extern FUN_0206015C
+.extern FUN_02060490
+.extern FUN_02060790
+.extern FUN_020607D4
+.extern FUN_02060F3C
+.extern FUN_02060F88
+.extern FUN_02060F9C
+.extern FUN_02060FD0
+.extern FUN_020612EC
+.extern FUN_020612F8
+.extern FUN_02061374
+.extern FUN_020613CC
+.extern FUN_02061460
+.extern FUN_02061574
+.extern FUN_02061A8C
+.extern FUN_02063650
+.extern FUN_0206367C
+.extern FUN_02063888
+.extern FUN_020638BC
+.extern FUN_02063948
+.extern FUN_02063964
+.extern FUN_0206486C
+.extern FUN_020649B0
+.extern FUN_020649D4
+.extern FUN_02064CA8
+.extern FUN_02064CC8
+.extern FUN_02064D10
+.extern FUN_02064D4C
+.extern FUN_02064D88
+.extern FUN_02064E20
+.extern FUN_02064E60
+.extern FUN_02064E90
+.extern FUN_02065054
+.extern FUN_02065070
+.extern FUN_02065078
+.extern FUN_02065314
+.extern FUN_02065344
+.extern FUN_02066818
+.extern FUN_02066978
+.extern FUN_020669A0
+.extern FUN_020669C0
+.extern FUN_020669D4
+.extern FUN_02066A20
+.extern FUN_02066ACC
+.extern FUN_02066ED8
+.extern FUN_020671BC
+.extern FUN_020672BC
+.extern FUN_02067830
+.extern FUN_02068678
+.extern FUN_02068854
+.extern FUN_020689E0
+.extern FUN_02068AAC
+.extern FUN_02068B68
+.extern FUN_02068C00
+.extern FUN_02068E14
+.extern FUN_020690C4
+.extern FUN_020690CC
+.extern FUN_020690E4
+.extern FUN_02069168
+.extern FUN_020699A4
+.extern FUN_02069A64
+.extern FUN_02069B40
+.extern FUN_02069B88
+.extern FUN_0206A23C
+.extern FUN_0206AC74
+.extern FUN_0206AD4C
+.extern FUN_0206B20C
+.extern FUN_0206B3E4
+.extern FUN_0206B484
+.extern FUN_0206B57C
+.extern FUN_0206B5E4
+.extern FUN_0206B620
+.extern FUN_0206B644
+.extern FUN_0206B6C8
+.extern FUN_0206B7BC
+.extern FUN_0206B900
+.extern FUN_0206B9AC
+.extern FUN_0206B9B0
+.extern FUN_0206BAE4
+.extern FUN_0206BB1C
+.extern FUN_0206BB28
+.extern FUN_0206C700
+.extern FUN_0206C91C
+.extern FUN_0206C92C
+.extern FUN_0206E2F0
+.extern FUN_0206E308
+.extern FUN_0206E314
+.extern FUN_0206E340
+.extern FUN_0206E354
+.extern FUN_0206E358
+.extern FUN_0206E360
+.extern FUN_0206E37C
+.extern FUN_0206E384
+.extern FUN_0206E38C
+.extern FUN_0206E7B8
+.extern FUN_0206EA30
+.extern FUN_0206EA98
+.extern FUN_0206EAB8
+.extern FUN_0206EB1C
+.extern FUN_0206ED24
+.extern FUN_0206ED38
+.extern FUN_0206EDD4
+.extern FUN_0206EE50
+.extern FUN_0206EE64
+.extern FUN_0206EEF8
+.extern FUN_0206EFEC
+.extern FUN_0206F158
+.extern FUN_0206F164
+.extern FUN_0206F17C
+.extern FUN_0206F190
+.extern FUN_0206F3B8
+.extern FUN_0206F3D8
+.extern FUN_02077A84
+.extern FUN_02077AC4
+.extern FUN_02079C70
+.extern FUN_0207B000
+.extern FUN_0207C2A4
+.extern FUN_0207FC5C
+.extern FUN_0207FCE0
+.extern FUN_0208089C
+.extern FUN_02080C38
+.extern FUN_02080E0C
+.extern FUN_02081214
+.extern FUN_020814E8
+.extern FUN_02081DC4
+.extern FUN_02081EB8
+.extern FUN_0208201C
+.extern FUN_02082034
+.extern FUN_0208206C
+.extern FUN_02082090
+.extern FUN_020820B8
+.extern FUN_020820DC
+.extern FUN_0208210C
+.extern FUN_0208213C
+.extern FUN_02082140
+.extern FUN_02082158
+.extern FUN_0208217C
+.extern FUN_02082190
+.extern FUN_020821B4
+.extern FUN_020821C4
+.extern FUN_020821DC
+.extern FUN_020821F0
+.extern FUN_02082214
+.extern FUN_0208223C
+.extern FUN_0208224C
+.extern FUN_02082254
+.extern FUN_02082284
+.extern FUN_020822F0
+.extern FUN_02082444
+.extern FUN_02082508
+.extern FUN_020825A0
+.extern FUN_02082630
+.extern FUN_02085140
+.extern FUN_020851B8
+.extern FUN_020851DC
+.extern FUN_020851F8
+.extern FUN_0208524C
+.extern FUN_02085258
+.extern FUN_02085264
+.extern FUN_0208526C
+.extern FUN_02085290
+.extern FUN_020852E8
+.extern FUN_02085338
+.extern FUN_020853A8
+.extern FUN_020853B0
+.extern FUN_020853B4
+.extern FUN_020853BC
+.extern FUN_020853E4
+.extern FUN_020853E8
+.extern FUN_020853EC
+.extern FUN_020853F0
+.extern FUN_020853FC
+.extern FUN_020854E0
+.extern FUN_02085538
+.extern FUN_02085578
+.extern FUN_020855B0
+.extern FUN_020855E4
+.extern FUN_0208560C
+.extern FUN_0208562C
+.extern FUN_02085F48
+.extern FUN_020863DC
+.extern FUN_02087A1C
+.extern FUN_02087A50
+.extern FUN_02087D00
+.extern FUN_02087E14
+.extern FUN_0208881C
+.extern FUN_02088960
+.extern FUN_02088D40
+.extern FUN_02088DD8
+.extern FUN_02088DF0
+.extern FUN_02088DF8
+.extern FUN_02088EF8
+.extern FUN_02089D90
+.extern FUN_0208A0B8
+.extern FUN_0208A300
+.extern FUN_0208A320
+.extern FUN_0208A338
+.extern FUN_0208A9B8
+.extern FUN_0208ACEC
+.extern FUN_0208AD80
+.extern FUN_0208AF80
+.extern FUN_0208AF94
+.extern FUN_0208AFA8
+.extern FUN_0208B05C
+.extern FUN_0208B128
+.extern FUN_0208B4A0
+.extern FUN_02090CC8
+.extern FUN_02090DB8
+.extern FUN_02096B14
+.extern FUN_02096B78
+.extern FUN_02096CCC
+.extern FUN_02096D2C
+.extern FUN_02096DA0
+.extern FUN_02096F18
+.extern FUN_02096F80
+.extern FUN_02096FB0
+.extern FUN_0209700C
+.extern FUN_020973B4
+.extern FUN_020ADA84
+.extern FUN_020ADA98
+.extern FUN_020ADAB0
+.extern FUN_020ADB18
+.extern FUN_020ADBE8
+.extern FUN_020ADC74
+.extern FUN_020ADDC0
+.extern FUN_020ADDC8
+.extern FUN_020ADDF0
+.extern FUN_020ADE2C
+.extern FUN_020AE554
+.extern FUN_020AE5B0
+.extern FUN_020AE600
+.extern FUN_020AE638
+.extern FUN_020AE684
+.extern FUN_020AE82C
+.extern FUN_020AE84C
+.extern FUN_020AE868
+.extern FUN_020AE8CC
+.extern FUN_020AE918
+.extern FUN_020AEB70
+.extern FUN_020AEC7C
+.extern FUN_020AEC98
+.extern FUN_020AEE40
+.extern FUN_020AEEB8
+.extern FUN_020AEF1C
+.extern FUN_020AF2E0
+.extern FUN_020AF2F4
+.extern FUN_020AF30C
+.extern FUN_020AF894
+.extern FUN_020AF9C4
+.extern FUN_020AFA28
+.extern FUN_020AFA80
+.extern FUN_020AFBA8
+.extern FUN_020AFBFC
+.extern FUN_020AFC04
+.extern FUN_020AFEB8
+.extern FUN_020AFFD8
+.extern FUN_020B0030
+.extern FUN_020B0088
+.extern FUN_020B00F0
+.extern FUN_020B0138
+.extern FUN_020B0180
+.extern FUN_020B0250
+.extern FUN_020B02C8
+.extern FUN_020B0448
+.extern FUN_020B0870
+.extern FUN_020B0BB0
+.extern FUN_020B0C7C
+.extern FUN_020B0E34
+.extern FUN_020B0FC0
+.extern FUN_020B10E8
+.extern FUN_020B1240
+.extern FUN_020B1340
+.extern FUN_020B1528
+.extern FUN_020B1768
+.extern FUN_020B19C4
+.extern FUN_020B19DC
+.extern FUN_020B1A14
+.extern FUN_020B1A24
+.extern FUN_020B1EA4
+.extern FUN_020B1EC4
+.extern FUN_020B1EE4
+.extern FUN_020B1EFC
+.extern FUN_020B1F80
+.extern FUN_020B20C8
+.extern FUN_020B2194
+.extern FUN_020B224C
+.extern FUN_020B23D8
+.extern FUN_020B242C
+.extern FUN_020B2794
+.extern FUN_020B28B4
+.extern FUN_020B2A08
+.extern FUN_020B2B08
+.extern FUN_020B2B58
+.extern FUN_020B2D9C
+.extern FUN_020B317C
+.extern FUN_020B31F0
+.extern FUN_020B326C
+.extern FUN_020B3334
+.extern FUN_020B3390
+.extern FUN_020B33A0
+.extern FUN_020B4358
+.extern FUN_020B43A4
+.extern FUN_020B442C
+.extern FUN_020B4568
+.extern FUN_020B4F38
+.extern FUN_020B502C
+.extern FUN_020B772C
+.extern FUN_020B7790
+.extern FUN_020B7C58
+.extern FUN_020B7C78
+.extern FUN_020B7CDC
+.extern FUN_020B7CE4
+.extern FUN_020B7CF0
+.extern FUN_020B7D28
+.extern FUN_020B7DFC
+.extern FUN_020B7E10
+.extern FUN_020B7E1C
+.extern FUN_020B80B4
+.extern FUN_020B844C
+.extern FUN_020B8474
+.extern FUN_020B849C
+.extern FUN_020BAC98
+.extern FUN_020BAFB8
+.extern FUN_020BB1C0
+.extern FUN_020BB394
+.extern FUN_020BB59C
+.extern FUN_020BB7F4
+.extern FUN_020BC0FC
+.extern FUN_020BC13C
+.extern FUN_020BC2A0
+.extern FUN_020C0174
+.extern FUN_020C01A0
+.extern FUN_020C01D0
+.extern FUN_020C03B8
+.extern FUN_020C041C
+.extern FUN_020C044C
+.extern FUN_020C04DC
+.extern FUN_020C0510
+.extern FUN_020C054C
+.extern FUN_020C0670
+.extern FUN_020C0688
+.extern FUN_020C0DD4
+.extern FUN_020C0E14
+.extern FUN_020C0E7C
+.extern FUN_020C0EA4
+.extern FUN_020C0EF4
+.extern FUN_020C0F30
+.extern FUN_020C0F50
+.extern FUN_020C0F68
+.extern FUN_020C0F80
+.extern FUN_020C0F8C
+.extern FUN_020C0F9C
+.extern FUN_020C0FDC
+.extern FUN_020C1040
+.extern FUN_020C10A4
+.extern FUN_020C1148
+.extern FUN_020C1180
+.extern FUN_020C1E58
+.extern FUN_020C1E68
+.extern FUN_020C1EA4
+.extern FUN_020C1F54
+.extern FUN_020C1FA4
+.extern FUN_020C1FF0
+.extern FUN_020C20DC
+.extern FUN_020C2104
+.extern FUN_020C217C
+.extern FUN_020C226C
+.extern FUN_020C22D0
+.extern FUN_020C23FC
+.extern FUN_020C26F8
+.extern FUN_020C2828
+.extern FUN_020C290C
+.extern FUN_020C2A94
+.extern FUN_020C35E0
+.extern FUN_020C360C
+.extern FUN_020C3640
+.extern FUN_020C3674
+.extern FUN_020C36A8
+.extern FUN_020C3910
+.extern FUN_020C3980
+.extern FUN_020C39CC
+.extern FUN_020C3EA4
+.extern FUN_020C3EB0
+.extern FUN_020C6034
+.extern FUN_020C605C
+.extern FUN_021D74E0
+.extern FUN_021D76AC
+.extern FUN_021D77C4
+.extern FUN_021D7800
+.extern FUN_021D78FC
+.extern FUN_021D79B4
+.extern FUN_021D7CA4
+.extern FUN_021D7F8C
+.extern FUN_021D8018
+.extern FUN_021D8164
+.extern FUN_021D82BC
+.extern FUN_021D8320
+.extern FUN_021D836C
+.extern FUN_021D83A8
+.extern FUN_021D83C0
+.extern FUN_021D844C
+.extern FUN_021D8494
+.extern FUN_021D85FC
+.extern FUN_021D8624
+.extern FUN_021D865C
+.extern FUN_021D8758
+.extern FUN_021D8820
+.extern FUN_021D88E4
+.extern FUN_021D89CC
+.extern FUN_021D8B64
+.extern FUN_021D8C24
+.extern FUN_021D917C
+.extern FUN_021D959C
+.extern FUN_021D967C
+.extern FUN_021D96F4
+.extern FUN_021D9708
+.extern FUN_021D971C
+.extern FUN_021D9820
+.extern FUN_021D99F8
+.extern FUN_021DA464
+.extern FUN_021DA4EC
+.extern FUN_021DA54C
+.extern FUN_021DA58C
+.extern FUN_021DA5B8
+.extern FUN_021DA5C8
+.extern FUN_021DA5D0
+.extern FUN_021DA5D8
+.extern FUN_021DA7B4
+.extern FUN_021DAAA4
+.extern FUN_021DAC70
+.extern FUN_021DAE40
+.extern FUN_021DAED4
+.extern FUN_021DAF28
+.extern FUN_021DAF78
+.extern FUN_021DAF98
+.extern FUN_021DB030
+.extern FUN_021DB7E8
+.extern FUN_021DB858
+.extern FUN_021DC174
+.extern FUN_021DD6F0
+.extern FUN_021DD718
+.extern FUN_021DDB08
+.extern FUN_021E1374
+.extern FUN_021E1858
+.extern FUN_021E1994
+.extern FUN_021E1BF8
+.extern FUN_021E1C4C
+.extern FUN_021E1C54
+.extern FUN_021E1ECC
+.extern FUN_021E1F34
+.extern FUN_021E1F58
+.extern FUN_021E1F60
+.extern FUN_021E2464
+.extern FUN_021E2608
+.extern FUN_021E26CC
+.extern FUN_021E27E8
+.extern FUN_021E288C
+.extern FUN_021E28A0
+.extern FUN_021E2950
+.extern FUN_021E29B4
+.extern FUN_021E29C8
+.extern FUN_021E2A70
+.extern FUN_021E2AD4
+.extern FUN_021E2B80
+.extern FUN_021E2B9C
+.extern FUN_021E2BB8
+.extern FUN_021E2BD0
+.extern FUN_021E2C24
+.extern FUN_021E2C58
+.extern FUN_021E2CBC
+.extern FUN_021E32F0
+.extern FUN_021E331C
+.extern FUN_021E3424
+.extern FUN_021E3444
+.extern FUN_021E495C
+.extern FUN_021E4C54
+.extern FUN_021E4C60
+.extern FUN_021E4DE4
+.extern FUN_021E5614
+.extern FUN_021E57D4
+.extern FUN_021E5970
+.extern FUN_021E5B30
+.extern FUN_021E5FD8
+.extern FUN_021E5FE0
+.extern FUN_021E6410
+.extern FUN_021E643C
+.extern FUN_021E6990
+.extern FUN_021E69BC
+.extern FUN_021E6BF4
+.extern FUN_021E7030
+.extern FUN_021E70F0
+.extern FUN_021E7138
+.extern FUN_021E7184
+.extern FUN_021E71E8
+.extern FUN_021E7750
+.extern FUN_021E799C
+.extern FUN_021E7AC0
+.extern FUN_021E7EA0
+.extern FUN_021E7EB0
+.extern FUN_021E7EC4
+.extern FUN_021E7EC8
+.extern FUN_021E7ED0
+.extern FUN_021E7ED8
+.extern FUN_021E7FBC
+.extern FUN_021E8128
+.extern FUN_021E8130
+.extern FUN_021E8140
+.extern FUN_021E8144
+.extern FUN_021E8148
+.extern FUN_021E8158
+.extern FUN_021E81BC
+.extern FUN_021E84F4
+.extern FUN_021E856C
+.extern FUN_021E8588
+.extern FUN_021E85E4
+.extern FUN_021E85FC
+.extern FUN_021EAE90
+.extern FUN_021EB044
+.extern FUN_021EC57C
+.extern FUN_021EC71C
+.extern FUN_021EC854
+.extern FUN_021EC864
+.extern FUN_021ECD64
+.extern FUN_021ECF14
+.extern FUN_021ED0CC
+.extern FUN_021ED49C
+.extern FUN_021ED4E0
+.extern FUN_021ED52C
+.extern FUN_021ED5C4
+.extern FUN_021ED5EC
+.extern FUN_021ED644
+.extern FUN_021ED940
+.extern FUN_021EDA48
+.extern FUN_021EDBC8
+.extern FUN_021EF5E0
+.extern FUN_021EF604
+.extern FUN_021EF620
+.extern FUN_021EF654
+.extern FUN_021EF824
+.extern FUN_021EF844
+.extern FUN_021EF8C8
+.extern FUN_021EF8DC
+.extern FUN_021EFA9C
+.extern FUN_021F02C4
+.extern FUN_021F1D8C
+.extern FUN_021F1DC8
+.extern FUN_021F1DFC
+.extern FUN_021F1EC0
+.extern FUN_021F1F78
+.extern FUN_021F2094
+.extern FUN_021F20D8
+.extern FUN_021F20F8
+.extern FUN_021F2AF4
+.extern FUN_021F2E0C
+.extern FUN_021F2E28
+.extern FUN_021F2F48
+.extern FUN_021F2F6C
+.extern FUN_021F3A18
+.extern FUN_021F3AB4
+.extern FUN_021F3B4C
+.extern FUN_021F3B7C
+.extern FUN_021F3DA4
+.extern FUN_021F44D8
+.extern FUN_021F4520
+.extern FUN_021F4568
+.extern FUN_021F4594
+.extern FUN_021F45E8
+.extern FUN_021F4608
+.extern FUN_021F4BD0
+.extern FUN_021F4C88
+.extern FUN_021F4D80
+.extern FUN_021F4DC8
+.extern FUN_021F4E7C
+.extern FUN_021F57EC
+.extern FUN_021F5C44
+.extern FUN_021F61DC
+.extern FUN_021F61E8
+.extern FUN_02211E60
+.extern FUN_0222D5C0
+.extern FUN_0222DAEC
+.extern FUN_0222DD1C
+.extern FUN_0222DD38
+.extern FUN_0222E2BC
+.extern FUN_0222E360
+.extern FUN_0222E3A0
+.extern FUN_0222E7E8
+.extern FUN_0222E874
+.extern FUN_0222ED34
+.extern FUN_0222EDBC
+.extern FUN_0222F440
+.extern FUN_0222F480
+.extern FUN_0222F7E0
+.extern FUN_0222F990
+.extern FUN_022300D4
+.extern FUN_022300DC
+.extern FUN_022300E4
+.extern FUN_022300E8
+.extern FUN_022300F4
+.extern FUN_02230100
+.extern FUN_0223010C
+.extern FUN_02230118
+.extern FUN_02230124
+.extern FUN_02230F3C
+.extern FUN_02230F70
+.extern FUN_02230F80
+.extern FUN_02231344
+.extern FUN_02231350
+.extern FUN_0223135C
+.extern FUN_02231368
+.extern FUN_02231374
+.extern FUN_02239944
+.extern FUN_02239AAC
+.extern FUN_0223CACC
+.extern FUN_0223CB08
+.extern FUN_0223CCDC
+.extern FUN_0223CD7C
+.extern FUN_0223D3D0
+.extern FUN_0223D638
+.extern FUN_0223D648
+.extern FUN_0223DFB4
+.extern FUN_0223E060
+.extern FUN_0223E118
+.extern FUN_0223E154
+.extern FUN_0223E1A4
+.extern FUN_0223E1E0
+.extern FUN_0223E2AC
+.extern FUN_0223E4A8
+.extern FUN_0223E4D4
+.extern FUN_0223E554
+.extern FUN_0223E6B8
+.extern FUN_0223E734
+.extern FUN_0223E7FC
+.extern FUN_0223EB8C
+.extern FUN_0223EF7C
+.extern FUN_0223F4D8
+.extern FUN_0223F4F4
+.extern FUN_0223F8D8
+.extern FUN_0223FCE8
+.extern FUN_02240790
+.extern FUN_022407CC
+.extern FUN_022407DC
+.extern FUN_022407F8
+.extern FUN_02240834
+.extern FUN_02240844
+.extern FUN_0224089C
+.extern FUN_022408FC
+.extern FUN_022411F4
+.extern FUN_02241230
+.extern FUN_02241914
+.extern FUN_02242A38
+.extern FUN_02242BE0
+.extern FUN_0224312C
+.extern FUN_022432E4
+.extern FUN_0224339C
+.extern FUN_022433A8
+.extern FUN_022433B0
+.extern FUN_022433B8
+.extern FUN_022433F8
+.extern FUN_02243408
+.extern FUN_02243428
+.extern FUN_02243448
+.extern FUN_0224345C
+.extern FUN_022434AC
+.extern FUN_022434BC
+.extern FUN_022434D0
+.extern FUN_02243694
+.extern FUN_022436C8
+.extern FUN_022436E8
+.extern FUN_02243780
+.extern FUN_02243838
+.extern FUN_022438DC
+.extern FUN_022438E0
+.extern FUN_022438FC
+.extern FUN_02243920
+.extern FUN_022439F8
+.extern FUN_02243AD8
+.extern FUN_02243BA8
+.extern FUN_02243C5C
+.extern FUN_02243D3C
+.extern FUN_02243DA0
+.extern FUN_02243DB8
+.extern FUN_02243DC0
+.extern FUN_02243DC4
+.extern FUN_02243DD8
+.extern FUN_02243DE0
+.extern FUN_02243E34
+.extern FUN_02243E74
+.extern FUN_02243F18
+.extern FUN_02243F50
+.extern FUN_02243F9C
+.extern FUN_02244210
+.extern FUN_02244558
+.extern FUN_02244660
+.extern FUN_022446BC
+.extern FUN_022446E0
+.extern FUN_022446FC
+.extern FUN_02244758
+.extern FUN_02244770
+.extern FUN_02244824
+.extern FUN_0224484C
+.extern FUN_02244D1C
+.extern FUN_02244D20
+.extern FUN_02244D3C
+.extern FUN_02244D40
+.extern FUN_02244D58
+.extern FUN_02244D98
+.extern FUN_02244DA0
+.extern FUN_02244DB0
+.extern FUN_02244DBC
+.extern FUN_02244DC4
+.extern FUN_02244EF8
+.extern FUN_02244F18
+.extern FUN_02244F24
+.extern FUN_02244F2C
+.extern FUN_02245088
+.extern FUN_02245114
+.extern FUN_02245190
+.extern FUN_02245198
+.extern FUN_022451F0
+.extern FUN_0224525C
+.extern FUN_022452A4
+.extern FUN_02245324
+.extern FUN_02245340
+.extern FUN_02245358
+.extern FUN_0224566C
+.extern FUN_022456E8
+.extern FUN_02245844
+.extern FUN_02245910
+.extern FUN_02245F1C
+.extern FUN_02245F4C
+.extern FUN_02245FA0
+.extern FUN_022461A4
+.extern FUN_022461B8
+.extern FUN_0224666C
+.extern FUN_022466A0
+.extern FUN_022466AC
+.extern FUN_02246F1C
+.extern FUN_02247294
+.extern FUN_022472AC
+.extern FUN_02247544
+.extern FUN_02247614
+.extern FUN_02247728
+.extern FUN_02247808
+.extern FUN_02247970
+.extern FUN_02247A34
+.extern FUN_022483BC
+.extern FUN_022483E0
+.extern FUN_022483EC
+.extern FUN_02248724
+.extern FUN_0224884C
+.extern FUN_022488CC
+.extern FUN_022488EC
+.extern FUN_022488F4
+.extern FUN_022488FC
+.extern FUN_0224891C
+.extern FUN_02248B54
+.extern FUN_02248B58
+.extern FUN_02248B5C
+.extern FUN_02248B60
+.extern FUN_02248B6C
+.extern FUN_02248CC0
+.extern FUN_02248CD0
+.extern FUN_02248DF8
+.extern FUN_02248F70
+.extern FUN_02248FE0
+.extern FUN_02249038
+.extern FUN_022490A0
+.extern FUN_022491FC
+.extern FUN_022494C8
+.extern FUN_02249508
+.extern FUN_02249668
+.extern FUN_022497E8
+.extern FUN_02249E6C
+.extern FUN_02249E78
+.extern FUN_02249E84
+.extern FUN_02249E90
+.extern FUN_0224A310
+.extern FUN_0224A528
+.extern FUN_0224A7C8
+.extern FUN_0224ABAC
+.extern FUN_0224B124
+.extern FUN_0224B2C4
+.extern FUN_0224B568
+.extern FUN_0224B818
+.extern FUN_0224B86C
+.extern FUN_0224B9E0
+.extern FUN_0224BBEC
+.extern FUN_0224BD90
+.extern FUN_0224C038
+.extern FUN_0224C27C
+.extern FUN_0224C520
+.extern FUN_0224C678
+.extern FUN_0224C6E8
+.extern FUN_0224C6F4
+.extern FUN_0224C700
+.extern FUN_0224C8C8
+.extern FUN_0224CA2C
+.extern FUN_0224CA54
+.extern FUN_0224CA58
+.extern FUN_0224CA88
+.extern FUN_0224CA94
+.extern FUN_0224CAA0
+.extern FUN_0224CAB4
+.extern FUN_0224CB30
+.extern FUN_0224CBB0
+.extern FUN_0224CC24
+.extern FUN_0224CECC
+.extern FUN_0224D14C
+.extern FUN_0224D2E0
+.extern FUN_0224D3E8
+.extern FUN_0224D70C
+.extern FUN_0224D76C
+.extern FUN_0224D79C
+.extern FUN_0224DCB8
+.extern FUN_0224DD94
+.extern FUN_0224DDB8
+.extern FUN_0224E554
+.extern FUN_0224E764
+.extern FUN_0224E7C4
+.extern FUN_0224F12C
+.extern FUN_02252534
+.extern FUN_02252538
+.extern FUN_022567E0
+.extern FX_Div
+.extern FX_GetDivResult
+.extern FX_GetDivResultFx64c
+.extern FX_Init
+.extern FX_InvAsync
+.extern FX_Modf
+.extern FX_Sqrt
+.extern G2S_GetBG0CharPtr
+.extern G2S_GetBG1CharPtr
+.extern G2S_GetBG2CharPtr
+.extern G2S_GetBG3CharPtr
+.extern G2_GetBG0CharPtr
+.extern G2_GetBG1CharPtr
+.extern G2_GetBG2CharPtr
+.extern G2_GetBG3CharPtr
+.extern G2x_SetBGyAffine_
+.extern G2x_SetBlendAlpha_
+.extern G2x_SetBlendBrightness_
+.extern G3X_GetBoxTestResult
+.extern G3X_GetClipMtx
+.extern G3X_GetVectorMtx
+.extern G3X_Init
+.extern G3X_InitMtxStack
+.extern G3X_ResetMtxStack
+.extern G3X_SetClearColor
+.extern G3X_SetFog
+.extern G3_LoadMtx43
+.extern G3_MultMtx33
+.extern G3_MultMtx43
+.extern G3_RotX
+.extern G3_RotY
+.extern G3_RotZ
+.extern G3i_LookAt_
+.extern G3i_OrthoW_
+.extern G3i_PerspectiveW_
+.extern GXS_BeginLoadBGExtPltt
+.extern GXS_BeginLoadOBJExtPltt
+.extern GXS_EndLoadBGExtPltt
+.extern GXS_EndLoadOBJExtPltt
+.extern GXS_LoadBG0Char
+.extern GXS_LoadBG0Scr
+.extern GXS_LoadBG1Char
+.extern GXS_LoadBG1Scr
+.extern GXS_LoadBG2Char
+.extern GXS_LoadBG2Scr
+.extern GXS_LoadBG3Char
+.extern GXS_LoadBG3Scr
+.extern GXS_LoadBGExtPltt
+.extern GXS_LoadBGPltt
+.extern GXS_LoadOAM
+.extern GXS_LoadOBJ
+.extern GXS_LoadOBJExtPltt
+.extern GXS_LoadOBJPltt
+.extern GXS_SetGraphicsMode
+.extern GX_BeginLoadBGExtPltt
+.extern GX_BeginLoadClearImage
+.extern GX_BeginLoadOBJExtPltt
+.extern GX_BeginLoadTex
+.extern GX_BeginLoadTexPltt
+.extern GX_DisableBankForLCDC
+.extern GX_DispOff
+.extern GX_DispOn
+.extern GX_EndLoadBGExtPltt
+.extern GX_EndLoadClearImage
+.extern GX_EndLoadOBJExtPltt
+.extern GX_EndLoadTex
+.extern GX_EndLoadTexPltt
+.extern GX_GetBankForOBJ
+.extern GX_GetBankForOBJExtPltt
+.extern GX_GetBankForSubOBJ
+.extern GX_GetBankForSubOBJExtPltt
+.extern GX_HBlankIntr
+.extern GX_Init
+.extern GX_LoadBG0Char
+.extern GX_LoadBG0Scr
+.extern GX_LoadBG1Char
+.extern GX_LoadBG1Scr
+.extern GX_LoadBG2Char
+.extern GX_LoadBG2Scr
+.extern GX_LoadBG3Char
+.extern GX_LoadBG3Scr
+.extern GX_LoadBGExtPltt
+.extern GX_LoadBGPltt
+.extern GX_LoadClearImageColor
+.extern GX_LoadClearImageDepth
+.extern GX_LoadOAM
+.extern GX_LoadOBJ
+.extern GX_LoadOBJExtPltt
+.extern GX_LoadOBJPltt
+.extern GX_LoadTex
+.extern GX_LoadTexPltt
+.extern GX_ResetBankForBG
+.extern GX_ResetBankForBGExtPltt
+.extern GX_ResetBankForOBJ
+.extern GX_ResetBankForOBJExtPltt
+.extern GX_ResetBankForSubBG
+.extern GX_ResetBankForSubOBJ
+.extern GX_ResetBankForTex
+.extern GX_ResetBankForTexPltt
+.extern GX_SetBankForBG
+.extern GX_SetBankForBGExtPltt
+.extern GX_SetBankForLCDC
+.extern GX_SetBankForOBJ
+.extern GX_SetBankForOBJExtPltt
+.extern GX_SetBankForSubBG
+.extern GX_SetBankForSubBGExtPltt
+.extern GX_SetBankForSubOBJ
+.extern GX_SetBankForSubOBJExtPltt
+.extern GX_SetBankForTex
+.extern GX_SetBankForTexPltt
+.extern GX_SetGraphicsMode
+.extern GX_VBlankIntr
+.extern GXx_SetMasterBrightness_
+.extern IC_InvalidateAll
+.extern IC_InvalidateRange
+.extern InitGraphicMemory
+.extern InitScriptContext
+.extern InitSystemForTheGame
+.extern LoadFromNARC
+.extern LoadFromNARC_7
+.extern LoadFromNarc_2
+.extern LoadPlayerDataAddress
+.extern MATH_CalcCRC16
+.extern MATH_CalcCRC16CCITT
+.extern MATH_CalcCRC32
+.extern MATH_CalcCRC8
+.extern MATH_CalcHMACSHA1
+.extern MATH_CalcMD5
+.extern MATH_CalcSHA1
+.extern MATH_CountPopulation
+.extern MATH_MD5GetHash
+.extern MATH_MD5Init
+.extern MATH_MD5Update
+.extern MATH_SHA1GetHash
+.extern MATH_SHA1Init
+.extern MATH_SHA1Update
+.extern MATHi_CRC16InitTable
+.extern MATHi_CRC16InitTableRev
+.extern MATHi_CRC32InitTableRev
+.extern MATHi_CRC8InitTable
+.extern MATHi_CalcHMAC
+.extern MIC_DoSamplingAsync
+.extern MIC_Init
+.extern MIC_StartAutoSampling
+.extern MIC_StopAutoSampling
+.extern MI_Copy36B
+.extern MI_Copy48B
+.extern MI_Copy64B
+.extern MI_CpuCopy8
+.extern MI_CpuFill8
+.extern MI_DmaCopy16
+.extern MI_DmaCopy32
+.extern MI_DmaCopy32Async
+.extern MI_DmaFill32
+.extern MI_DmaFill32Async
+.extern MI_HBlankDmaCopy16
+.extern MI_HBlankDmaCopy32
+.extern MI_Init
+.extern MI_SendGXCommandAsync
+.extern MI_SendGXCommandAsyncFast
+.extern MI_StopDma
+.extern MI_SwapWord
+.extern MI_UncompressLZ8
+.extern MI_WaitDma
+.extern MI_Zero36B
+.extern MIi_CardDmaCopy32
+.extern MIi_CheckDma0SourceAddress
+.extern MIi_CpuClear16
+.extern MIi_CpuClear32
+.extern MIi_CpuClearFast
+.extern MIi_CpuCopy16
+.extern MIi_CpuCopy32
+.extern MIi_CpuCopyFast
+.extern MIi_CpuSend32
+.extern MIi_DmaSetParams
+.extern MIi_DmaSetParams_noInt
+.extern MIi_DmaSetParams_wait
+.extern MIi_DmaSetParams_wait_noInt
+.extern MIi_UncompressBackward
+.extern MTX_Concat33
+.extern MTX_Concat43
+.extern MTX_Identity33_
+.extern MTX_Identity43_
+.extern MTX_MultVec33
+.extern MTX_MultVec43
+.extern MTX_RotX33_
+.extern MTX_RotY33_
+.extern MTX_RotZ33_
+.extern MTX_Scale43_
+.extern NitroMain
+.extern OS_AllocFromArenaHi
+.extern OS_AllocFromArenaLo
+.extern OS_AllocFromHeap
+.extern OS_CancelAlarm
+.extern OS_CreateAlarm
+.extern OS_CreateThread
+.extern OS_DestroyThread
+.extern OS_DisableInterrupts
+.extern OS_DisableIrqMask
+.extern OS_DisableScheduler
+.extern OS_EnableIrqMask
+.extern OS_EnableScheduler
+.extern OS_ExitThread
+.extern OS_FreeToHeap
+.extern OS_GetCpsrIrq
+.extern OS_GetDTCMAddress
+.extern OS_GetInitArenaHi
+.extern OS_GetInitArenaLo
+.extern OS_GetIrqFunction
+.extern OS_GetLockID
+.extern OS_GetLowEntropyData
+.extern OS_GetMacAddress
+.extern OS_GetOwnerInfo
+.extern OS_GetOwnerRtcOffset
+.extern OS_GetProcMode
+.extern OS_GetThreadPriority
+.extern OS_GetTick
+.extern OS_GetTickLo
+.extern OS_Halt
+.extern OS_IRQTable
+.extern OS_Init
+.extern OS_InitAlarm
+.extern OS_InitMessageQueue
+.extern OS_InitMutex
+.extern OS_InitTick
+.extern OS_IrqDummy
+.extern OS_IrqHandler
+.extern OS_IsAlarmAvailable
+.extern OS_IsRunOnEmulator
+.extern OS_IsThreadTerminated
+.extern OS_IsTickAvailable
+.extern OS_JamMessage
+.extern OS_JoinThread
+.extern OS_LockCartridge
+.extern OS_LockMutex
+.extern OS_ReadMessage
+.extern OS_ReadOwnerOfLockWord
+.extern OS_ReceiveMessage
+.extern OS_ReleaseLockID
+.extern OS_RescheduleThread
+.extern OS_ResetRequestIrqMask
+.extern OS_ResetSystem
+.extern OS_RestoreInterrupts
+.extern OS_SNPrintf
+.extern OS_SendMessage
+.extern OS_SetAlarm
+.extern OS_SetArenaHi
+.extern OS_SetArenaLo
+.extern OS_SetDPermissionsForProtectionRegion
+.extern OS_SetIrqFunction
+.extern OS_SetIrqMask
+.extern OS_SetThreadPriority
+.extern OS_Sleep
+.extern OS_SleepThread
+.extern OS_SpinWait
+.extern OS_Terminate
+.extern OS_TryLockCard
+.extern OS_TryLockCartridge
+.extern OS_TryLockMutex
+.extern OS_UnlockCard
+.extern OS_UnlockCartridge
+.extern OS_UnlockCartridge2
+.extern OS_UnlockMutex
+.extern OS_WaitIrq
+.extern OS_WakeupThread
+.extern OS_WakeupThreadDirect
+.extern OS_YieldThread
+.extern OSi_DoResetSystem
+.extern OSi_EnterDmaCallback
+.extern OSi_IrqDma0
+.extern OSi_IrqDma1
+.extern OSi_IrqDma2
+.extern OSi_IrqDma3
+.extern OSi_IrqThreadQueue
+.extern OSi_IrqTimer0
+.extern OSi_IrqTimer1
+.extern OSi_IrqTimer2
+.extern OSi_IrqTimer3
+.extern OSi_IsResetOccurred
+.extern OSi_MainExArenaEnabled
+.extern OSi_ThreadInfo
+.extern OSi_TryLockVram
+.extern OSi_UnlockVram
+.extern PM_AppendPostSleepCallback
+.extern PM_DeletePostSleepCallback
+.extern PM_DeletePreSleepCallback
+.extern PM_ForceToPowerOff
+.extern PM_GetBackLight
+.extern PM_GetLCDPower
+.extern PM_GoSleepMode
+.extern PM_Init
+.extern PM_PrependPreSleepCallback
+.extern PM_SetAmp
+.extern PM_SetAmpGain
+.extern PM_SetBackLight
+.extern PM_SetLCDPower
+.extern PMi_Lock
+.extern PMi_ReadRegister
+.extern PMi_SendPxiData
+.extern PMi_SendSleepStart
+.extern PMi_SetLED
+.extern PMi_SetLEDAsync
+.extern PMi_WaitBusy
+.extern PXI_Init
+.extern PXI_IsCallbackReady
+.extern PXI_SendWordByFifo
+.extern PXI_SetFifoRecvCallback
+.extern PXIi_HandlerRecvFifoNotEmpty
+.extern ProcessBlock
+.extern RTC_ConvertDateTimeToSecond
+.extern RTC_ConvertDateToDay
+.extern RTC_ConvertSecondToDateTime
+.extern RTC_GetDate
+.extern RTC_GetDateTimeAsync
+.extern RTC_GetTime
+.extern RTC_Init
+.extern RunScriptCommand
+.extern SDK_AUTOLOAD_DTCM_START
+.extern SDK_AUTOLOAD_LIST
+.extern SDK_AUTOLOAD_LIST_END
+.extern SDK_AUTOLOAD_START
+.extern SDK_MAIN_ARENA_LO
+.extern SDK_SECTION_ARENA_DTCM_START
+.extern SDK_SECTION_ARENA_EX_START
+.extern SDK_SECTION_ARENA_ITCM_START
+.extern SDK_STATIC_BSS_END
+.extern SDK_STATIC_BSS_START
+.extern SND_AssignWaveArc
+.extern SND_CalcChannelVolume
+.extern SND_DestroyBank
+.extern SND_DestroyWaveArc
+.extern SND_FlushCommand
+.extern SND_GetChannelStatus
+.extern SND_GetCurrentCommandTag
+.extern SND_GetFirstInstDataPos
+.extern SND_GetNextInstData
+.extern SND_GetPlayerStatus
+.extern SND_GetPlayerTickCounter
+.extern SND_GetWaveDataAddress
+.extern SND_GetWaveDataCount
+.extern SND_Init
+.extern SND_InvalidateBankData
+.extern SND_InvalidateSeqData
+.extern SND_InvalidateWaveData
+.extern SND_IsFinishedCommandTag
+.extern SND_LockChannel
+.extern SND_PauseSeq
+.extern SND_PrepareSeq
+.extern SND_RecvCommandReply
+.extern SND_ResetMasterPan
+.extern SND_SetChannelPan
+.extern SND_SetChannelTimer
+.extern SND_SetChannelVolume
+.extern SND_SetMasterPan
+.extern SND_SetOutputSelector
+.extern SND_SetPlayerChannelPriority
+.extern SND_SetPlayerVolume
+.extern SND_SetTrackAllocatableChannel
+.extern SND_SetTrackPan
+.extern SND_SetTrackPitch
+.extern SND_SetWaveDataAddress
+.extern SND_SetupAlarm
+.extern SND_SetupCapture
+.extern SND_SetupChannelPcm
+.extern SND_StartPreparedSeq
+.extern SND_StartTimer
+.extern SND_StopSeq
+.extern SND_StopTimer
+.extern SND_UnlockChannel
+.extern SND_WaitForCommandProc
+.extern STD_CopyLString
+.extern ScriptCall
+.extern ScriptJump
+.extern ScriptReadHalfword
+.extern ScriptReadWord
+.extern ScriptReturn
+.extern SetupBytecodeScript
+.extern SetupNativeScript
+.extern StopScript
+.extern StringCopy
+.extern StringCopyN
+.extern StringFillEOS
+.extern StringLength
+.extern StringNotEqual
+.extern StringNotEqualN
+.extern TP_CheckError
+.extern TP_GetCalibratedPoint
+.extern TP_GetLatestIndexInAuto
+.extern TP_GetLatestRawPointInAuto
+.extern TP_GetUserInfo
+.extern TP_Init
+.extern TP_RequestAutoSamplingStartAsync
+.extern TP_RequestAutoSamplingStopAsync
+.extern TP_RequestSamplingAsync
+.extern TP_SetCalibrateParam
+.extern TP_WaitBusy
+.extern TP_WaitRawResult
+.extern VEC_Add
+.extern VEC_CrossProduct
+.extern VEC_DotProduct
+.extern VEC_Fx16CrossProduct
+.extern VEC_Fx16DotProduct
+.extern VEC_Fx16Normalize
+.extern VEC_Mag
+.extern VEC_Normalize
+.extern VEC_Subtract
+.extern WM_Disable
+.extern WM_Disconnect
+.extern WM_Enable
+.extern WM_End
+.extern WM_EndDCF
+.extern WM_EndMP
+.extern WM_EndParent
+.extern WM_EndScan
+.extern WM_Finish
+.extern WM_GetAllowedChannel
+.extern WM_GetDispersionBeaconPeriod
+.extern WM_GetDispersionScanPeriod
+.extern WM_GetLinkLevel
+.extern WM_Init
+.extern WM_Initialize
+.extern WM_MeasureChannel
+.extern WM_PowerOff
+.extern WM_PowerOn
+.extern WM_Reset
+.extern WM_SetBeaconIndication
+.extern WM_SetDCFData
+.extern WM_SetEntry
+.extern WM_SetGameInfo
+.extern WM_SetIndCallback
+.extern WM_SetLifeTime
+.extern WM_SetMPDataToPortEx
+.extern WM_SetParentParameter
+.extern WM_SetPortCallback
+.extern WM_SetWEPKeyEx
+.extern WM_StartConnectEx
+.extern WM_StartDCF
+.extern WM_StartMP
+.extern WM_StartParent
+.extern WM_StartScan
+.extern WM_StartScanEx
+.extern WMi_GetStatusAddress
+.extern __call_static_initializers
+.extern __destroy_global_chain
+.extern _ddiv
+.extern _fadd
+.extern _fdiv
+.extern _feq
+.extern _ffix
+.extern _ffixu
+.extern _fflt
+.extern _ffltu
+.extern _fgr
+.extern _fmul
+.extern _fp_init
+.extern _fsub
+.extern _ll_mod
+.extern _ll_mul
+.extern _ll_sdiv
+.extern _ll_shl
+.extern _ll_udiv
+.extern _s32_div_f
+.extern _u32_div_f
+.extern _u32_div_not_0_f
+.extern abs
+.extern cardi_common
+.extern gScriptCmdTable
+.extern memcmp
+.extern memcpy
+.extern memmove
+.extern strcmp
+.extern strcpy
+.extern strlen
+.extern tempName_NNS_FndAllocFromExpHeapEx
+.extern tempName_NNS_FndCreateExpHeapEx
+.extern thunk_FUN_02096e4c
+.extern thunk_FUN_02097190
+.extern thunk_FUN_020adc8c
+.extern thunk_FUN_020adc8c_2
+.extern thunk_FUN_020afda0
+.extern thunk_FUN_020afda0_2
+.extern thunk_FUN_020b5040
+.extern Unk_0210683C
+.extern Unk_02106840
+.extern Unk_02106900
+.extern Unk_02106A00
+.extern Unk_02106A04
+.extern OSi_IrqCallbackInfo
+.extern OSi_IrqCallbackInfoIndex
+.extern SDK_SYS_STACKSIZE
+.extern SDK_IRQ_STACKSIZE
+.extern OSi_IsThreadInitialized
+.extern OSi_LauncherThread
+.extern OSi_CurrentThreadPtr
+.extern OSi_IdleThread
+.extern OSi_IdleThreadStack
+.extern OSi_RescheduleCount
+.extern OSi_SystemCallbackInSwitchThread
+.extern OSi_Initialized
+.extern OSi_HeapInfo
+.extern OSi_DebuggerHandler
+.extern OSi_ExContext
+.extern OSi_UserExceptionHandler
+.extern OSi_UserExceptionHandlerArg
+.extern OSi_TimerReserved
+.extern OSi_UseTick
+.extern OSi_NeedResetTimer
+.extern OSi_TickCounter
+.extern OSi_UseAlarm
+.extern OSi_AlarmQueue
+.extern OSi_UseVAlarm
+.extern OSi_PreviousVCount
+.extern OSi_VFrameCount
+.extern OSi_VAlarmQueue
+.extern OSi_IsInitReset
+.extern OSi_vramExclusive
+.extern OSi_vramLockId
+.extern OSi_ThreadIdCount
+.extern OSi_StackForDestructor
+.extern SDK_AUTOLOAD_ITCM_START
+.extern SDK_AUTOLOAD_ITCM_END
+.extern SDK_AUTOLOAD_DTCM_START
+.extern SDK_AUTOLOAD_DTCM_END
diff --git a/src/FUN_02000DF4.c b/arm9/src/FUN_02000DF4.c
index 0099480c..0099480c 100644
--- a/src/FUN_02000DF4.c
+++ b/arm9/src/FUN_02000DF4.c
diff --git a/src/main.c b/arm9/src/main.c
index bfd6c82e..bfd6c82e 100644
--- a/src/main.c
+++ b/arm9/src/main.c
diff --git a/src/script.c b/arm9/src/script.c
index 7a7ae894..7a7ae894 100644
--- a/src/script.c
+++ b/arm9/src/script.c
diff --git a/src/string_util.c b/arm9/src/string_util.c
index 8f9c96ff..8f9c96ff 100644
--- a/src/string_util.c
+++ b/arm9/src/string_util.c
diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt
new file mode 100644
index 00000000..075d22a9
--- /dev/null
+++ b/arm9/undefined_syms.txt
@@ -0,0 +1,506 @@
+SDK_SYS_STACKSIZE = 0x00000000;
+CONST_34 = 0x00000034;
+CONST_3F = 0x0000003F;
+SDK_IRQ_STACKSIZE = 0x00000400;
+
+// .data
+// OS
+OSi_IrqCallbackInfoIndex = 0x02106818;
+// DGT
+Unk_0210683C = 0x0210683C;
+Unk_02106840 = 0x02106840;
+Unk_02106900 = 0x02106900;
+Unk_02106A00 = 0x02106A00;
+Unk_02106A04 = 0x02106A04;
+
+// .bss
+gBacklightTop = 0x02106FA0;
+gBacklightTop_2 = 0x02106FA0;
+gUnknown2106FB8 = 0x02106FB8;
+gUnknown21C48B8 = 0x021C48B8;
+gUnk021C4918 = 0x021C4918;
+OSi_IrqCallbackInfo = 0x021D341C;
+isInitialized = 0x021D347C;
+OSi_StackForDestructor = 0x021D3480;
+OSi_RescheduleCount = 0x021D3484;
+OSi_ThreadIdCount = 0x021D3488;
+OSi_SystemCallbackInSwitchThread = 0x021D348C;
+OSi_CurrentThreadPtr = 0x021D3490;
+OSi_IsThreadInitialized = 0x021D3494;
+OSi_ThreadInfo = 0x021D3498;
+OSi_IdleThread = 0x021D34A8;
+OSi_LauncherThread = 0x021D3568;
+OSi_IdleThreadStack = 0x021D3628;
+OSi_Initialized = 0x021D36F0;
+OSi_MainExArenaEnabled = 0x021D36F4;
+OSi_HeapInfo = 0x021D36F8;
+OSi_UserExceptionHandler = 0x021D371C;
+OSi_UserExceptionHandlerArg = 0x21D3720;
+OSi_DebuggerHandler = 0x021D3724;
+OSi_ExContext = 0x021D3728;
+OSi_TimerReserved = 0x021D37A8;
+OSi_UseTick = 0x021D37AC;
+OSi_NeedResetTimer = 0x021D37B0;
+OSi_TickCounter = 0x021D37B4;
+OSi_UseAlarm = 0x021D37BC;
+OSi_AlarmQueue = 0x021D37C0;
+OSi_UseVAlarm = 0x021D37C8;
+OSi_PreviousVCount = 0x021D37CC;
+OSi_VFrameCount = 0x021D37D0;
+OSi_VAlarmQueue = 0x021D37D4;
+OSi_IsInitReset = 0x021D37DC;
+OSi_IsResetOccurred = 0x021D37E0;
+OSi_vramExclusive = 0x021D37E4;
+OSi_vramLockId = 0x021D37E8;
+cardi_common = 0x021D55C0;
+
+// Overlay
+FUN_021D74E0 = 0x021D74E0;
+FUN_021D76AC = 0x021D76AC;
+gUnk021D76C8 = 0x021D76C8;
+FUN_021D77C4 = 0x021D77C4;
+FUN_021D7800 = 0x021D7800;
+FUN_021D78FC = 0x021D78FC;
+FUN_021D79B4 = 0x021D79B4;
+FUN_021D7CA4 = 0x021D7CA4;
+FUN_021D7F8C = 0x021D7F8C;
+FUN_021D8018 = 0x021D8018;
+FUN_021D8164 = 0x021D8164;
+FUN_021D82BC = 0x021D82BC;
+FUN_021D8320 = 0x021D8320;
+FUN_021D836C = 0x021D836C;
+FUN_021D83A8 = 0x021D83A8;
+FUN_021D83C0 = 0x021D83C0;
+FUN_021D844C = 0x021D844C;
+FUN_021D8494 = 0x021D8494;
+FUN_021D85FC = 0x021D85FC;
+FUN_021D8624 = 0x021D8624;
+FUN_021D865C = 0x021D865C;
+FUN_021D8758 = 0x021D8758;
+FUN_021D8820 = 0x021D8820;
+FUN_021D88E4 = 0x021D88E4;
+FUN_021D89CC = 0x021D89CC;
+FUN_021D8B64 = 0x021D8B64;
+FUN_021D8C24 = 0x021D8C24;
+FUN_021D917C = 0x021D917C;
+FUN_021D959C = 0x021D959C;
+FUN_021D967C = 0x021D967C;
+FUN_021D96F4 = 0x021D96F4;
+FUN_021D9708 = 0x021D9708;
+FUN_021D971C = 0x021D971C;
+FUN_021D9820 = 0x021D9820;
+FUN_021D99F8 = 0x021D99F8;
+FUN_021DA464 = 0x021DA464;
+FUN_021DA4EC = 0x021DA4EC;
+FUN_021DA54C = 0x021DA54C;
+FUN_021DA58C = 0x021DA58C;
+FUN_021DA5B8 = 0x021DA5B8;
+FUN_021DA5C8 = 0x021DA5C8;
+FUN_021DA5D0 = 0x021DA5D0;
+FUN_021DA5D8 = 0x021DA5D8;
+FUN_021DA7B4 = 0x021DA7B4;
+FUN_021DAAA4 = 0x021DAAA4;
+FUN_021DAC70 = 0x021DAC70;
+FUN_021DAE40 = 0x021DAE40;
+FUN_021DAED4 = 0x021DAED4;
+FUN_021DAF28 = 0x021DAF28;
+FUN_021DAF78 = 0x021DAF78;
+FUN_021DAF98 = 0x021DAF98;
+FUN_021DB030 = 0x021DB030;
+FUN_021DB7E8 = 0x021DB7E8;
+FUN_021DB858 = 0x021DB858;
+gUnk021DBE18 = 0x021DBE18;
+FUN_021DC174 = 0x021DC174;
+FUN_021DD6F0 = 0x021DD6F0;
+FUN_021DD718 = 0x021DD718;
+FUN_021DDB08 = 0x021DDB08;
+FUN_021E1374 = 0x021E1374;
+FUN_021E1858 = 0x021E1858;
+FUN_021E1994 = 0x021E1994;
+FUN_021E1BF8 = 0x021E1BF8;
+FUN_021E1C4C = 0x021E1C4C;
+FUN_021E1C54 = 0x021E1C54;
+FUN_021E1ECC = 0x021E1ECC;
+FUN_021E1F34 = 0x021E1F34;
+FUN_021E1F58 = 0x021E1F58;
+FUN_021E1F60 = 0x021E1F60;
+FUN_021E2464 = 0x021E2464;
+FUN_021E2608 = 0x021E2608;
+FUN_021E26CC = 0x021E26CC;
+FUN_021E27E8 = 0x021E27E8;
+FUN_021E288C = 0x021E288C;
+FUN_021E28A0 = 0x021E28A0;
+FUN_021E2950 = 0x021E2950;
+FUN_021E29B4 = 0x021E29B4;
+FUN_021E29C8 = 0x021E29C8;
+FUN_021E2A70 = 0x021E2A70;
+FUN_021E2AD4 = 0x021E2AD4;
+FUN_021E2B80 = 0x021E2B80;
+FUN_021E2B9C = 0x021E2B9C;
+FUN_021E2BB8 = 0x021E2BB8;
+FUN_021E2BD0 = 0x021E2BD0;
+FUN_021E2C24 = 0x021E2C24;
+FUN_021E2C58 = 0x021E2C58;
+FUN_021E2CBC = 0x021E2CBC;
+FUN_021E32F0 = 0x021E32F0;
+FUN_021E331C = 0x021E331C;
+FUN_021E3424 = 0x021E3424;
+FUN_021E3444 = 0x021E3444;
+FUN_021E495C = 0x021E495C;
+FUN_021E4C54 = 0x021E4C54;
+FUN_021E4C60 = 0x021E4C60;
+FUN_021E4DE4 = 0x021E4DE4;
+FUN_021E5614 = 0x021E5614;
+FUN_021E57D4 = 0x021E57D4;
+FUN_021E5970 = 0x021E5970;
+FUN_021E5B30 = 0x021E5B30;
+FUN_021E5FD8 = 0x021E5FD8;
+FUN_021E5FE0 = 0x021E5FE0;
+FUN_021E6410 = 0x021E6410;
+FUN_021E643C = 0x021E643C;
+FUN_021E6990 = 0x021E6990;
+FUN_021E69BC = 0x021E69BC;
+FUN_021E6BF4 = 0x021E6BF4;
+FUN_021E7030 = 0x021E7030;
+FUN_021E70F0 = 0x021E70F0;
+FUN_021E7138 = 0x021E7138;
+FUN_021E7184 = 0x021E7184;
+FUN_021E71E8 = 0x021E71E8;
+FUN_021E7750 = 0x021E7750;
+FUN_021E799C = 0x021E799C;
+FUN_021E7AC0 = 0x021E7AC0;
+FUN_021E7EA0 = 0x021E7EA0;
+FUN_021E7EB0 = 0x021E7EB0;
+FUN_021E7EC4 = 0x021E7EC4;
+FUN_021E7EC8 = 0x021E7EC8;
+FUN_021E7ED0 = 0x021E7ED0;
+FUN_021E7ED8 = 0x021E7ED8;
+FUN_021E7FBC = 0x021E7FBC;
+FUN_021E8128 = 0x021E8128;
+FUN_021E8130 = 0x021E8130;
+FUN_021E8140 = 0x021E8140;
+FUN_021E8144 = 0x021E8144;
+FUN_021E8148 = 0x021E8148;
+FUN_021E8158 = 0x021E8158;
+FUN_021E81BC = 0x021E81BC;
+FUN_021E84F4 = 0x021E84F4;
+FUN_021E856C = 0x021E856C;
+FUN_021E8588 = 0x021E8588;
+FUN_021E85E4 = 0x021E85E4;
+FUN_021E85FC = 0x021E85FC;
+FUN_021EAE90 = 0x021EAE90;
+FUN_021EB044 = 0x021EB044;
+FUN_021EC57C = 0x021EC57C;
+FUN_021EC71C = 0x021EC71C;
+FUN_021EC854 = 0x021EC854;
+FUN_021EC864 = 0x021EC864;
+FUN_021ECD64 = 0x021ECD64;
+FUN_021ECF14 = 0x021ECF14;
+FUN_021ED0CC = 0x021ED0CC;
+FUN_021ED49C = 0x021ED49C;
+FUN_021ED4E0 = 0x021ED4E0;
+FUN_021ED52C = 0x021ED52C;
+FUN_021ED5C4 = 0x021ED5C4;
+FUN_021ED5EC = 0x021ED5EC;
+FUN_021ED644 = 0x021ED644;
+FUN_021ED940 = 0x021ED940;
+FUN_021EDA48 = 0x021EDA48;
+FUN_021EDBC8 = 0x021EDBC8;
+FUN_021EF5E0 = 0x021EF5E0;
+FUN_021EF604 = 0x021EF604;
+FUN_021EF620 = 0x021EF620;
+FUN_021EF654 = 0x021EF654;
+FUN_021EF824 = 0x021EF824;
+FUN_021EF844 = 0x021EF844;
+FUN_021EF8C8 = 0x021EF8C8;
+FUN_021EF8DC = 0x021EF8DC;
+FUN_021EFA9C = 0x021EFA9C;
+FUN_021F02C4 = 0x021F02C4;
+FUN_021F1D8C = 0x021F1D8C;
+FUN_021F1DC8 = 0x021F1DC8;
+FUN_021F1DFC = 0x021F1DFC;
+FUN_021F1EC0 = 0x021F1EC0;
+FUN_021F1F78 = 0x021F1F78;
+FUN_021F2094 = 0x021F2094;
+FUN_021F20D8 = 0x021F20D8;
+FUN_021F20F8 = 0x021F20F8;
+FUN_021F2AF4 = 0x021F2AF4;
+FUN_021F2E0C = 0x021F2E0C;
+FUN_021F2E28 = 0x021F2E28;
+FUN_021F2F48 = 0x021F2F48;
+FUN_021F2F6C = 0x021F2F6C;
+FUN_021F3A18 = 0x021F3A18;
+FUN_021F3AB4 = 0x021F3AB4;
+FUN_021F3B4C = 0x021F3B4C;
+FUN_021F3B7C = 0x021F3B7C;
+FUN_021F3DA4 = 0x021F3DA4;
+FUN_021F44D8 = 0x021F44D8;
+FUN_021F4520 = 0x021F4520;
+FUN_021F4568 = 0x021F4568;
+FUN_021F4594 = 0x021F4594;
+FUN_021F45E8 = 0x021F45E8;
+FUN_021F4608 = 0x021F4608;
+FUN_021F4BD0 = 0x021F4BD0;
+FUN_021F4C88 = 0x021F4C88;
+FUN_021F4D80 = 0x021F4D80;
+FUN_021F4DC8 = 0x021F4DC8;
+FUN_021F4E7C = 0x021F4E7C;
+FUN_021F57EC = 0x021F57EC;
+FUN_021F5C44 = 0x021F5C44;
+FUN_021F61DC = 0x021F61DC;
+FUN_021F61E8 = 0x021F61E8;
+FUN_02211E60 = 0x02211E60;
+FUN_0222D5C0 = 0x0222D5C0;
+FUN_0222DAEC = 0x0222DAEC;
+FUN_0222DD1C = 0x0222DD1C;
+FUN_0222DD38 = 0x0222DD38;
+FUN_0222E2BC = 0x0222E2BC;
+FUN_0222E360 = 0x0222E360;
+FUN_0222E3A0 = 0x0222E3A0;
+FUN_0222E7E8 = 0x0222E7E8;
+FUN_0222E874 = 0x0222E874;
+FUN_0222ED34 = 0x0222ED34;
+FUN_0222EDBC = 0x0222EDBC;
+FUN_0222F440 = 0x0222F440;
+FUN_0222F480 = 0x0222F480;
+FUN_0222F7E0 = 0x0222F7E0;
+FUN_0222F990 = 0x0222F990;
+FUN_022300D4 = 0x022300D4;
+FUN_022300DC = 0x022300DC;
+FUN_022300E4 = 0x022300E4;
+FUN_022300E8 = 0x022300E8;
+FUN_022300F4 = 0x022300F4;
+FUN_02230100 = 0x02230100;
+FUN_0223010C = 0x0223010C;
+FUN_02230118 = 0x02230118;
+FUN_02230124 = 0x02230124;
+FUN_02230F3C = 0x02230F3C;
+FUN_02230F70 = 0x02230F70;
+FUN_02230F80 = 0x02230F80;
+FUN_02231344 = 0x02231344;
+FUN_02231350 = 0x02231350;
+FUN_0223135C = 0x0223135C;
+FUN_02231368 = 0x02231368;
+FUN_02231374 = 0x02231374;
+FUN_02239944 = 0x02239944;
+FUN_02239AAC = 0x02239AAC;
+FUN_0223CACC = 0x0223CACC;
+FUN_0223CB08 = 0x0223CB08;
+FUN_0223CCDC = 0x0223CCDC;
+FUN_0223CD7C = 0x0223CD7C;
+FUN_0223D3D0 = 0x0223D3D0;
+FUN_0223D638 = 0x0223D638;
+FUN_0223D648 = 0x0223D648;
+FUN_0223DFB4 = 0x0223DFB4;
+FUN_0223E060 = 0x0223E060;
+FUN_0223E118 = 0x0223E118;
+FUN_0223E154 = 0x0223E154;
+FUN_0223E1A4 = 0x0223E1A4;
+FUN_0223E1E0 = 0x0223E1E0;
+FUN_0223E2AC = 0x0223E2AC;
+FUN_0223E4A8 = 0x0223E4A8;
+FUN_0223E4D4 = 0x0223E4D4;
+FUN_0223E554 = 0x0223E554;
+FUN_0223E6B8 = 0x0223E6B8;
+FUN_0223E734 = 0x0223E734;
+FUN_0223E7FC = 0x0223E7FC;
+FUN_0223EB8C = 0x0223EB8C;
+FUN_0223EF7C = 0x0223EF7C;
+FUN_0223F4D8 = 0x0223F4D8;
+FUN_0223F4F4 = 0x0223F4F4;
+FUN_0223F8D8 = 0x0223F8D8;
+FUN_0223FCE8 = 0x0223FCE8;
+FUN_02240790 = 0x02240790;
+FUN_022407CC = 0x022407CC;
+FUN_022407DC = 0x022407DC;
+FUN_022407F8 = 0x022407F8;
+FUN_02240834 = 0x02240834;
+FUN_02240844 = 0x02240844;
+FUN_0224089C = 0x0224089C;
+FUN_022408FC = 0x022408FC;
+FUN_022411F4 = 0x022411F4;
+FUN_02241230 = 0x02241230;
+FUN_02241914 = 0x02241914;
+FUN_02242A38 = 0x02242A38;
+FUN_02242BE0 = 0x02242BE0;
+FUN_0224312C = 0x0224312C;
+FUN_022432E4 = 0x022432E4;
+FUN_0224339C = 0x0224339C;
+FUN_022433A8 = 0x022433A8;
+FUN_022433B0 = 0x022433B0;
+FUN_022433B8 = 0x022433B8;
+FUN_022433F8 = 0x022433F8;
+FUN_02243408 = 0x02243408;
+FUN_02243428 = 0x02243428;
+FUN_02243448 = 0x02243448;
+FUN_0224345C = 0x0224345C;
+FUN_022434AC = 0x022434AC;
+FUN_022434BC = 0x022434BC;
+FUN_022434D0 = 0x022434D0;
+FUN_02243694 = 0x02243694;
+FUN_022436C8 = 0x022436C8;
+FUN_022436E8 = 0x022436E8;
+FUN_02243780 = 0x02243780;
+FUN_02243838 = 0x02243838;
+FUN_022438DC = 0x022438DC;
+FUN_022438E0 = 0x022438E0;
+FUN_022438FC = 0x022438FC;
+FUN_02243920 = 0x02243920;
+FUN_022439F8 = 0x022439F8;
+FUN_02243AD8 = 0x02243AD8;
+FUN_02243BA8 = 0x02243BA8;
+FUN_02243C5C = 0x02243C5C;
+FUN_02243D3C = 0x02243D3C;
+FUN_02243DA0 = 0x02243DA0;
+FUN_02243DB8 = 0x02243DB8;
+FUN_02243DC0 = 0x02243DC0;
+FUN_02243DC4 = 0x02243DC4;
+FUN_02243DD8 = 0x02243DD8;
+FUN_02243DE0 = 0x02243DE0;
+FUN_02243E34 = 0x02243E34;
+FUN_02243E74 = 0x02243E74;
+FUN_02243F18 = 0x02243F18;
+FUN_02243F50 = 0x02243F50;
+FUN_02243F9C = 0x02243F9C;
+FUN_02244210 = 0x02244210;
+FUN_02244558 = 0x02244558;
+FUN_02244660 = 0x02244660;
+FUN_022446BC = 0x022446BC;
+FUN_022446E0 = 0x022446E0;
+FUN_022446FC = 0x022446FC;
+FUN_02244758 = 0x02244758;
+FUN_02244770 = 0x02244770;
+FUN_02244824 = 0x02244824;
+FUN_0224484C = 0x0224484C;
+FUN_02244D1C = 0x02244D1C;
+FUN_02244D20 = 0x02244D20;
+FUN_02244D3C = 0x02244D3C;
+FUN_02244D40 = 0x02244D40;
+FUN_02244D58 = 0x02244D58;
+FUN_02244D98 = 0x02244D98;
+FUN_02244DA0 = 0x02244DA0;
+FUN_02244DB0 = 0x02244DB0;
+FUN_02244DBC = 0x02244DBC;
+FUN_02244DC4 = 0x02244DC4;
+FUN_02244EF8 = 0x02244EF8;
+FUN_02244F18 = 0x02244F18;
+FUN_02244F24 = 0x02244F24;
+FUN_02244F2C = 0x02244F2C;
+FUN_02245088 = 0x02245088;
+FUN_02245114 = 0x02245114;
+FUN_02245190 = 0x02245190;
+FUN_02245198 = 0x02245198;
+FUN_022451F0 = 0x022451F0;
+FUN_0224525C = 0x0224525C;
+FUN_022452A4 = 0x022452A4;
+FUN_02245324 = 0x02245324;
+FUN_02245340 = 0x02245340;
+FUN_02245358 = 0x02245358;
+FUN_0224566C = 0x0224566C;
+FUN_022456E8 = 0x022456E8;
+FUN_02245844 = 0x02245844;
+FUN_02245910 = 0x02245910;
+FUN_02245F1C = 0x02245F1C;
+FUN_02245F4C = 0x02245F4C;
+FUN_02245FA0 = 0x02245FA0;
+FUN_022461A4 = 0x022461A4;
+FUN_022461B8 = 0x022461B8;
+FUN_0224666C = 0x0224666C;
+FUN_022466A0 = 0x022466A0;
+FUN_022466AC = 0x022466AC;
+FUN_02246F1C = 0x02246F1C;
+FUN_02247294 = 0x02247294;
+FUN_022472AC = 0x022472AC;
+FUN_02247544 = 0x02247544;
+FUN_02247614 = 0x02247614;
+FUN_02247728 = 0x02247728;
+FUN_02247808 = 0x02247808;
+FUN_02247970 = 0x02247970;
+FUN_02247A34 = 0x02247A34;
+FUN_022483BC = 0x022483BC;
+FUN_022483E0 = 0x022483E0;
+FUN_022483EC = 0x022483EC;
+FUN_02248724 = 0x02248724;
+FUN_0224884C = 0x0224884C;
+FUN_022488CC = 0x022488CC;
+FUN_022488EC = 0x022488EC;
+FUN_022488F4 = 0x022488F4;
+FUN_022488FC = 0x022488FC;
+FUN_0224891C = 0x0224891C;
+FUN_02248B54 = 0x02248B54;
+FUN_02248B58 = 0x02248B58;
+FUN_02248B5C = 0x02248B5C;
+FUN_02248B60 = 0x02248B60;
+FUN_02248B6C = 0x02248B6C;
+FUN_02248CC0 = 0x02248CC0;
+FUN_02248CD0 = 0x02248CD0;
+FUN_02248DF8 = 0x02248DF8;
+FUN_02248F70 = 0x02248F70;
+FUN_02248FE0 = 0x02248FE0;
+FUN_02249038 = 0x02249038;
+FUN_022490A0 = 0x022490A0;
+FUN_022491FC = 0x022491FC;
+FUN_022494C8 = 0x022494C8;
+FUN_02249508 = 0x02249508;
+FUN_02249668 = 0x02249668;
+FUN_022497E8 = 0x022497E8;
+FUN_02249E6C = 0x02249E6C;
+FUN_02249E78 = 0x02249E78;
+FUN_02249E84 = 0x02249E84;
+FUN_02249E90 = 0x02249E90;
+FUN_0224A310 = 0x0224A310;
+FUN_0224A528 = 0x0224A528;
+FUN_0224A7C8 = 0x0224A7C8;
+FUN_0224ABAC = 0x0224ABAC;
+FUN_0224B124 = 0x0224B124;
+FUN_0224B2C4 = 0x0224B2C4;
+FUN_0224B568 = 0x0224B568;
+FUN_0224B818 = 0x0224B818;
+FUN_0224B86C = 0x0224B86C;
+FUN_0224B9E0 = 0x0224B9E0;
+FUN_0224BBEC = 0x0224BBEC;
+FUN_0224BD90 = 0x0224BD90;
+FUN_0224C038 = 0x0224C038;
+FUN_0224C27C = 0x0224C27C;
+FUN_0224C520 = 0x0224C520;
+FUN_0224C678 = 0x0224C678;
+FUN_0224C6E8 = 0x0224C6E8;
+FUN_0224C6F4 = 0x0224C6F4;
+FUN_0224C700 = 0x0224C700;
+FUN_0224C8C8 = 0x0224C8C8;
+FUN_0224CA2C = 0x0224CA2C;
+FUN_0224CA54 = 0x0224CA54;
+FUN_0224CA58 = 0x0224CA58;
+FUN_0224CA88 = 0x0224CA88;
+FUN_0224CA94 = 0x0224CA94;
+FUN_0224CAA0 = 0x0224CAA0;
+FUN_0224CAB4 = 0x0224CAB4;
+FUN_0224CB30 = 0x0224CB30;
+FUN_0224CBB0 = 0x0224CBB0;
+FUN_0224CC24 = 0x0224CC24;
+FUN_0224CECC = 0x0224CECC;
+FUN_0224D14C = 0x0224D14C;
+FUN_0224D2E0 = 0x0224D2E0;
+FUN_0224D3E8 = 0x0224D3E8;
+FUN_0224D70C = 0x0224D70C;
+FUN_0224D76C = 0x0224D76C;
+FUN_0224D79C = 0x0224D79C;
+FUN_0224DCB8 = 0x0224DCB8;
+FUN_0224DD94 = 0x0224DD94;
+FUN_0224DDB8 = 0x0224DDB8;
+FUN_0224E554 = 0x0224E554;
+FUN_0224E764 = 0x0224E764;
+FUN_0224E7C4 = 0x0224E7C4;
+FUN_0224F12C = 0x0224F12C;
+FUN_02252534 = 0x02252534;
+FUN_02252538 = 0x02252538;
+FUN_022567E0 = 0x022567E0;
+
+// ???
+SDK_MAIN_ARENA_LO = 0x0225FFA0;
+
+// EWRAM
+SDK_SECTION_ARENA_EX_START = 0x023E0000;
+
+// DTCM
+gUnk027FFC20 = 0x027FFC20;
diff --git a/pokediamond.lcf b/pokediamond.lcf
index da357c97..01161a05 100644
--- a/pokediamond.lcf
+++ b/pokediamond.lcf
@@ -1,13 +1,8 @@
/* TEST */
MEMORY {
header (RWX) : ORIGIN=0, LENGTH=0
- arm9.text (RWX) : ORIGIN=0x02000000, LENGTH=0
- arm9.data (RWX) : ORIGIN=0x020EC710, LENGTH=0
- arm9.itcm (RWX) : ORIGIN=0x01FF8000, LENGTH=0x8000
- arm9.dtcm (RWX) : ORIGIN=0x027E0000, LENGTH=0x2000
- arm9.autoload (RWX) : ORIGIN=0x02107700, LENGTH=0
- arm9overlay (RWX) : ORIGIN=0, LENGTH=0
- arm7 (RWX) : ORIGIN=0x2380000, LENGTH=0
+ arm9 (RWX) : ORIGIN=0x02000000, LENGTH=0
+ arm7 (RWX) : ORIGIN=0x02380000, LENGTH=0
filenametable (RWX) : ORIGIN=0, LENGTH=0
fileallocationtable (RWX) : ORIGIN=0, LENGTH=0
icon_title (RWX) : ORIGIN=0, LENGTH=0
@@ -377,72 +372,10 @@ SECTIONS {
} > header
.arm9 : AT (0x4000) {
- secure.o (.text)
- crt0.o (.text)
- main.o (.text)
- FUN_02000DF4.o (.text)
- unk_02000E0C.o (.text)
- string_util.o (.text)
- unk_020023C0.o (.text)
- filesystem.o (.text)
- unk_02006864.o (.text)
- script.o (.text)
- unk_02038C78.o (.text)
- scrcmd.o (.text)
- unk_02046030.o (.text)
- unk_0208AC14.o (.text)
- unk_020AF030.o (.text)
- /* SDK */
- GX_arm9.o (.text)
- OS_arm9.o (.text)
- MI_arm9.o (.text)
- SND_arm9.o (.text)
- PXI_arm9.o (.text)
- FS_arm9.o (.text)
- DGT_arm9.o (.text)
- CP_arm9.o (.text)
- SPI_arm9.o (.text)
- PM_arm9.o (.text)
- RTC_arm9.o (.text)
- CARD_arm9.o (.text)
- WM_arm9.o (.text)
- CTRDG_arm9.o (.text)
- MATH_arm9.o (.text)
- STD_arm9.o (.text)
- } > arm9.text
-
- .arm9.data : AT (0xF0710) {
- rom2.o (.data)
- string_util.o (.data)
- rom2_2.o (.data)
- } > arm9.data
-
- SDK_AUTOLOAD_START = .;
- SDK_STATIC_BSS_START = .;
- SDK_STATIC_BSS_END = . + 0xd0540;
-
- .arm9.itcm : AT (0x10AFA0)
- {
- arm9_itcm.o (.itcm)
- . = 0x01FF8720;
- SDK_SECTION_ARENA_ITCM_START = .;
- } > arm9.itcm
-
- .arm9.dtcm : AT (0x10B6A0) {
- SDK_AUTOLOAD_DTCM_START = .;
- OS_arm9.o (.dtcm)
- . = 0x027E0080;
- SDK_SECTION_ARENA_DTCM_START = .;
- } > arm9.dtcm
-
- .arm9.autoload : AT (0x10B700) {
- SDK_AUTOLOAD_LIST.o (.data)
- unk_10b724.o (.text)
- } > arm9.autoload
-
- .arm9overlay : AT (0x10B800) {
- arm9overlay.o (.text)
- } > arm9overlay
+ _start = .;
+ _start_AutoloadDoneCallback = . + 0xA74;
+ INCLUDE arm9.bin
+ } > arm9
.FILE_10C400 : AT (0x10C400) {
FILE_10C400.o (.text) /* 0x10C400 */
@@ -707,7 +640,8 @@ SECTIONS {
} > rom3.FILE_30C600
.arm7 : AT(0x30D000) {
- arm7_rom.o(.text)
+ ARM7AutoLoad = 0x02380158;
+ INCLUDE arm7.bin
} > arm7
.filenametable : AT(0x336400) {